r-gls模型以95%的区间绘制



我正试图以95%的置信度绘制gls预测值,但我在语法上很吃力。

我以前用一个gam模型做过这个,代码如下:

m1 <- gam(Chl ~ s(IR, fx= F, k= -1, bs = "cr"))
m1pred <- predict(m1, se=T, type = "response")
plot(IR, Chl, type ="p")
I1 <- order(IR)
lines(IR[I1], m1pred$fit[I1], lty=1, col="red", lwd = 3 )
lines(IR[I1], m1pred$fit[I1]+2*m1pred$se[I1], lty=2, col = "red", lwd =2)
lines(IR[I1], m1pred$fit[I1]-2*m1pred$se[I1], lty=2, col = "red", lwd = 2)

但这并不适用于gls模型,正如它所说:

pred2$fit中的错误:$operator对于原子向量无效

我已经用另一种方法达到了这一点,我可以按照Zurr等人(2009)的代码绘制预测模型和数据:

plot(IR, Chl,
 ylim = c(0, 2.5), pch= 21,
 ylab = "Chl concentration µg/L", xlab = "Incident irradiance  (W/m-2)")
MyX <- data.frame(IR = seq(from = min(IR),
                       to = max(IR), length = 1076), ID = "IR")
pred2 <- predict(m1s, newdata = MyX)
lines(MyX$IR, pred2, col="red", lwd=3)

但我不确定如何添加95%的间隔线?

我想我可以使用以下语法从AICmodav包中获得间隔:

predictSE.gls(m1s, MyX, se.fit=T)
lines(MyX$IR, predse, col="red", lwd=1)

但我不确定如何绘制,因为x和y变量似乎不同。。。有人能帮忙吗?

我对R并不感到惊讶,所以解释越简单,我就能从中得到更多。

提前感谢Luci

在没有可复制示例的情况下,我们所能做的就是猜测:Try:

plot(IR, Chl, type ="p")
I1 <- order(IR)
lines(IR[I1], m1pred[I1 , 1], lty=1, col="blue", lwd = 3 )
lines(IR[I1], m1pred[I1 , 1]+2*m1pred[I1, "se.fit"], lty=2, col = "red", lwd =2)
lines(IR[I1], m1pred[I1 , 1]-2*m1pred[I1, "se.fit"], lty=2, col = "red", lwd = 2)

预测的结果可以是矩阵或向量,而不是列表。这就是错误消息试图让您识别的内容。这不应该是来自mgcv::predict.gamgam::predict.gam生成的预测对象的错误,但您没有包含library调用,因此我们不知道gam来自哪个包。您确实应该使用完整的参数名称(se.fit而不是se)调用函数,并使用TRUE而不是T

最新更新