2012-08-30 25 views

回答

48

是的,有。如果存在与所述线性预测器的响应的预期值(例如日志泊松回归或Logit的逻辑回归)一个link functionpredict返回之前被施加链接函数的逆函数的拟合值(返回数据与响应变量的比例相同),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 

这确实意味着用于通过线性回归(lm)创建的模型,有fittedpredict之间没有差别。

在实际应用中,这意味着,如果你想比较适合的原始数据,你应该使用fitted

+13

迄今为止的良好答案但是你可以使用'predict(m,type =“response”)来获得原始(响应)规模的预测结果,正如@GregSnow在下面指出的那样,'predict'具有其他选项(取决于具体情况)。 r-forge *上的'lme4'的开发版本*具有'predict()'方法。 –

16

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

相关问题