R函数fitted()和predict()之间有区别吗?
功能R函数fitted()和predict()之间有区别吗?,r,R,功能fitted()和predict()之间是否存在差异?我注意到,lme4的混合模型使用的是fitted(),而不是predict()是的,有。如果线性预测器与响应的预期值(如泊松回归的log或logistic回归的logit)存在关联,predict在应用链接函数的逆函数之前返回拟合值(以将数据返回到与响应变量相同的标度),应用后,fitted会显示它 例如: x = rnorm(10) y = rpois(10, exp(x)) m = glm(y ~ x, family="poisson
fitted()
和predict()
之间是否存在差异?我注意到,lme4的混合模型使用的是fitted()
,而不是predict()
是的,有。如果线性预测器与响应的预期值(如泊松回归的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
这确实意味着,对于线性回归(lm
)创建的模型,拟合
和预测
之间没有差异
实际上,这意味着如果要将拟合与原始数据进行比较,应使用
fitted
函数fitted
返回与用于拟合模型的数据相关联的y-hat值。predict
函数返回一组新预测变量的预测。如果不指定一组新的预测变量,则默认情况下,它将使用原始数据,为某些模型提供与fitted
相同的结果,但如果要预测一组新的值,则需要predict
。predict
函数通常还可以选择返回哪种类型的预测、线性预测、转化为响应量表的预测、最可能的类别、模型中每个术语的贡献等。就其本身而言,答案不错,但您可以使用predict(m,type=“response”)
要获得原始(响应)量表上的预测,正如@GregSnow在下面指出的,predict
有其他选项(取决于具体情况)。r-forge上的lme4
开发版本确实有predict()
方法。