【问题标题】:Is there a difference between the R functions fitted() and predict()?R 函数 fit() 和 predict() 之间有区别吗?
【发布时间】:2012-08-31 01:30:35
【问题描述】:

fitted()predict()这两个函数有区别吗?我注意到来自 lme4 的混合模型适用于 fitted(),但不适用于 predict()

【问题讨论】:

  • 可能影响处理例程的一个区别是,对于 vglm(但不是 lm),“预测”的结果有 2 列,一列用于预测的 mu,一列用于预测的 sd。 vglm 和 lm 的“拟合”仅返回预测的 mu。

标签: r


【解决方案1】:

是的,有。如果有一个link function 将线性预测变量与响应的预期值相关联(例如泊松回归的 log 或逻辑回归的 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) 创建的模型,fittedpredict 之间没有区别。

实际上,这意味着如果你想将拟合与原始数据进行比较,你应该使用fitted

【讨论】:

  • 最好的答案,但您可以使用predict(m,type="response") 来获得原始(响应)规模的预测,正如@GregSnow 在下面指出的那样,predict 有其他选项(取决于案件)。 lme4 的开发版本,在 r-forge 上,确实有一个 predict() 方法。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-05
    • 2021-02-18
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多