Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R函数fitted()和predict()之间有区别吗?_R - Fatal编程技术网

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()
方法。