所以我目前正在尝试绘制线性模型的置信区间。我发现我应该为此使用 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
Type of interval calculation.好吧..但是什么是“无”?
3a) type
Type of prediction (response or model term).3b) terms
If type="terms", which terms (default is all terms)3a:我可以由此获得模型中一个特定变量的置信区间吗?如果是这样,那么 3b 是什么?如果我可以在 3a 中指定该术语,那么在 3b 中再次执行它就没有意义了。所以我想我又错了,但我不知道为什么。
我想你们中的一些人可能会想:为什么不试试这个呢?我会(即使它可能无法解决这里的所有问题),但我现在不知道该怎么做。因为我现在不知道 newdata 的用途,所以我不知道如何使用它,如果我尝试,我没有得到正确的置信区间。不知何故,如何选择数据非常重要,但我就是不明白!
编辑:我想补充一点,我的目的是了解 predict.lm 的工作原理。我的意思是我不明白它是否按我认为的方式工作。也就是说,它计算 y-hat(预测值),然后使用间隔的 upr/lwr 边界的每个加/减来计算几个数据点(看起来像一条置信线)?然后我会不明白为什么新数据中的长度必须与线性模型中的长度相同。