我目前正在尝试绘制线性模型的置信区间。我发现应该使用predict.lm()来实现,但我对该函数的理解还存在一些问题,并且我不喜欢在不了解内部机制的情况下使用函数。我找到了一些关于此主题的指南,但仅附有相应的R代码,没有真正的解释。 这是函数本身:
## S3 method for class 'lm'
predict(object, newdata, se.fit = FALSE, scale = NULL, df = Inf,
interval = c("none", "confidence", "prediction"),
level = 0.95, type = c("response", "terms"),
terms = NULL, na.action = na.pass,
pred.var = res.var/weights, weights = 1, ...)
现在,我遇到的困难是:
1) newdata
An optional data frame in which to look for variables
with which to predict. If omitted, the fitted values are used.
大家似乎都用newdata,但我不太明白为什么。对于计算置信区间,我显然需要用到这个区间所属的数据(例如观测值数量、x的均值等),因此它不能是所指的内容。但是:它是什么意思呢?
2) interval
区间计算类型。好的...但"none"是什么意思?
3a) type
预测类型(响应或模型术语)。3b) terms
如果type="terms",则使用哪些术语(默认为所有术语)3a: 我能否通过这种方式获取模型中一个特定变量的置信区间?如果可以,那么3b是用来做什么的?如果我可以在3a中指定术语,那么在3b中再次进行指定就没有意义了...所以我猜又错了,但我不知道错在哪里。
我想你们中的一些人可能会认为:为什么不试一下呢?虽然这可能不能解决所有问题,但我会尝试的,但现在我不知道该怎么做。由于我不知道newdata是什么,所以我不知道该如何使用它,如果我尝试,我就无法得到正确的置信区间。不知怎么地,选择数据的方式非常重要,但我就是不明白!
编辑:我想补充一下,我的意图是理解predict.lm的工作原理。我的意思是,我不明白它是否按照我想的那样工作。也就是说,它先计算y-hat(预测值),然后对于每个上限/下限边界分别添加/减去,以计算多个数据点(看起来像置信线)。那么我就会明白为什么需要在新数据中具有与线性模型相同的长度。
newdata
不需要与拟合模型具有相同数量的观测值... - Ben Bolker