我想创建一个y vs x的线性模型,并使用它来找到给定观察值x的y的置信区间。
所以我创建了一些样本:
x=rnorm(100,2)
y=rnorm(100,2)
并创建了线性模型:
bbbb=lm(y~x)
但是当我使用预测来创建置信区间时,它给出了一系列置信区间而不是单个区间?
predict(bbbb,x=2,interval="confidence")
返回:
...
51 2.188294 1.949615 2.426973
52 2.189329 1.932474 2.446183
53 2.176816 1.950111 2.403521
54 2.183961 1.998136 2.369786
...
当x = 2时,如何让它返回y的一个置信区间?
答案 0 :(得分:5)
你需要:
predict(bbbb, newdata = data.frame(x = 2), interval = "confidence")
了解?predict.lm
时明确的原因。
newdata
参数必须是数据框。您提供了长度为1的向量。其次,由于S3方法的工作方式,您认为传递给newdata
的内容实际上根本没有传递给newdata
。您实际上指定了一个值为x
的新参数2
,predict()
及时忘记了它(它被...
参数清除了)。如果未提供newdata
,predict()
将使用存储在拟合模型对象(bbbb
)中的数据,并返回拟合值以及任何请求的额外内容,如CI,标准错误等。