R函数fits()和predict()之间有区别吗?

N B*_*wer 43 r

功能fitted()predict()?之间有区别吗?我注意到lme4的混合模型可以使用fitted()但不能predict().

Dav*_*son 64

就在这里.如果存在将线性预测变量与响应的预期值相关联的链接函数(例如泊松回归的log或logistic回归的logit),则在应用链接函数的逆之前predict返回拟合值(以将数据返回到与响应变量相同的比例),并应用显示它.fitted

例如:

x = rnorm(10)
y = rpois(10, exp(x))
m = glm(y ~ x, family="poisson")

print(fitted(m))
#         1         2         3         4         5         6         7         8 
# 0.3668989 0.6083009 0.4677463 0.8685777 0.8047078 0.6116263 0.5688551 0.4909217 
#         9        10 
# 0.5583372 0.6540281 
print(predict(m))
#          1          2          3          4          5          6          7 
# -1.0026690 -0.4970857 -0.7598292 -0.1408982 -0.2172761 -0.4916338 -0.5641295 
#          8          9         10 
# -0.7114706 -0.5827923 -0.4246050 
print(all.equal(log(fitted(m)), predict(m)))
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)

这意味着对于由线性回归(lm)创建的模型,fitted和之间没有区别predict.

实际上,这意味着如果您想比较原始数据的拟合,您应该使用fitted.

  • 尽管答案很好,但你可以使用`predict(m,type ="response")`来预测原始(响应)量表,正如@GregSnow指出的那样,`predict`有额外的选择(视情况而定).`lme4`的开发版本,在r-forge上,*确实*有一个`predict()`方法. (23认同)

Gre*_*now 29

fitted函数返回与用于拟合模型的数据关联的y-hat值.该predict函数返回一组新的预测变量的预测.如果您没有指定一组新的预测变量,那么默认情况下它将使用原始数据给出与fitted某些模型相同的结果,但是如果您想要预测一组新值,那么您需要predict.该predict函数通常还具有返回预测类型的选项,线性预测器,转换为响应比例的预测,最可能的类别,模型中每个术语的贡献等.