gls模型以95%的间隔绘图

时间:2016-04-09 20:13:04

标签: r plot syntax intervals lm

我试图以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错误:$运算符对原子向量无效

我已经用另一种方法来解决这个问题,我可以根据一些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的

1 个答案:

答案 0 :(得分:0)

如果没有可重现的例子,我们所能做的就是猜测:尝试:

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来电,所以我们不要&# 39;知道哪个包gam来自。你真的应该使用完整的参数名称(se.fit而不是se)并使用TRUE而不是T来调用函数。