Есть ли разница между функциями fitted()
и predict()
? Я заметил, что смешанные модели из lme4 работают с fitted()
, но не predict()
.
Есть ли разница между R-функциями, установленными() и pred()?
Ответ 1
Например:
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
и predict
.
В практическом плане это означает, что если вы хотите сравнить соответствие с исходными данными, вы должны использовать fitted
.
Ответ 2
Функция fitted
возвращает значения y-hat, связанные с данными, которые используются для соответствия модели. Функция predict
возвращает прогнозы для нового набора предикторных переменных. Если вы не укажете новый набор предикторных переменных, то он будет использовать исходные данные по умолчанию, давая те же результаты, что и fitted
для некоторых моделей, но если вы хотите предсказать новый набор значений, вам нужно predict
. Функция predict
часто также имеет опции, для которых возвращаемый тип прогноза, линейный предиктор, предсказание, преобразованное в шкалу ответов, наиболее вероятную категорию, вклад каждого члена в модель и т.д.