Проблемы, которые вы видели, не касаются GAM. Вы использовали gam
, чтобы соответствовать параметрической модели, и в этом случае gam
ведет себя почти так же, как lm
. Чтобы ответить на ваши вопросы, достаточно сосредоточиться на случае линейной регрессии. Что произойдет с линейной моделью, произойдет и с GLM и GAM. Вот как мы можем воспроизвести проблему с lm
:
yy <- c(5,2,8,9)
xx <- 1:4
wgts <- c(3,2,4,1)
yy2 <- rep(yy,wgts)
xx2 <- rep(xx,wgts)
fit1 <- lm(yy2 ~ xx2)
fit2 <- lm(yy ~ xx, weights = wgts)
fit3 <- lm(yy ~ xx, weights = wgts/mean(wgts))
summary1 <- summary(fit1)
summary2 <- summary(fit2)
summary3 <- summary(fit3)
pred1 <- predict(fit1, list(xx2 = xx), interval = "confidence", se.fit = TRUE)
pred2 <- predict(fit2, list(xx = xx), interval = "confidence", se.fit = TRUE)
pred3 <- predict(fit3, list(xx = xx), interval = "confidence", se.fit = TRUE)
Все модели имеют одинаковые коэффициенты регрессии, но и другие результаты могут отличаться. Вы спросили:
- Для взвешенной регрессии
fit2
и fit3
, почему почти все то же самое, за исключением остаточной стандартной ошибки?
- Почему взвешенная регрессия (
fit2
или fit3
) не эквивалентна обычной регрессии со связями?
Ваш первый вопрос о масштабной инвариантности весовых наименьших квадратов с весами. Вот краткое резюме я сделал:
Если мы отмасштабировать W произвольным положительным значением, только остаточная ошибка стандартной и немасштабированная ковариация изменится. Такое изменение не подразумевает другую, неэквивалентную модель. На самом деле все, что связано с предсказанием, не затрагивается. При взвешенной регрессии не просто смотрите на sigma2
; это лишь незначительная дисперсия. Что действительно представляет интерес, так это валовая разница после умножения веса. Если вы разделите свои веса на 2, вы найдете sigma2
удвоений, но вы все равно получите тот же результат при их умножении.
summary2$coef
summary3$coef
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 2.128713 3.128697 0.6803832 0.5664609
#xx 1.683168 1.246503 1.3503125 0.3094222
pred2
pred3
#$fit
# fit lwr upr
#1 3.811881 -5.0008685 12.62463
#2 5.495050 -0.1299942 11.12009
#3 7.178218 0.6095820 13.74685
#4 8.861386 -1.7302209 19.45299
#
#$se.fit
# 1 2 3 4
#2.048213 1.307343 1.526648 2.461646
#
#$df
#[1] 2
#
#$residual.scale ## for `pred2`
#[1] 3.961448
#
#$residual.scale ## for `pred3`
#[1] 2.50544
Ваш второй вопрос о значение веса. Массы используются для моделирования гетеросекастической реакции для преодоления эффекта плеча при обычной наименьшей квадратичной регрессии. Массы пропорциональны взаимной дисперсии: вы даете больший вес данным с меньшими ожидаемыми ошибками. Весы могут быть нецелыми, поэтому он не имеет естественного объяснения с точки зрения повторяющихся данных. Таким образом, то, что написано в пакете mgcv
, не совсем корректно.
Реальная разница между fit1
и fit2
? это степень свободы. Проверьте приведенную выше таблицу на (n - p)
. n
- это количество данных, которое у вас есть, а p
- количество коэффициентов не NA
, поэтому n - p
- это остаточная степень свободы. Для обеих моделей есть p = 2
(перехват и уклон), но для fit1
у нас есть n = 10
, а для fit2
у нас есть n = 4
. Это оказывает существенное влияние на вывод, поскольку теперь стандартные ошибки для коэффициентов и прогнозов (следовательно, доверительные интервалы) будут отличаться. Эти две модели далеко не эквивалентны.
summary1$coef
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 2.128713 1.5643486 1.360766 0.21068210
#xx2 1.683168 0.6232514 2.700625 0.02704784
summary2$coef
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 2.128713 3.128697 0.6803832 0.5664609
#xx 1.683168 1.246503 1.3503125 0.3094222
pred1
#$fit
# fit lwr upr
#1 3.811881 1.450287 6.173475
#2 5.495050 3.987680 7.002419
#3 7.178218 5.417990 8.938446
#4 8.861386 6.023103 11.699669
#
#$se.fit
# 1 2 3 4
#1.0241066 0.6536716 0.7633240 1.2308229
#
#$df # note, this is `10 - 2 = 8`
#[1] 8
#
#$residual.scale
#[1] 1.980724
pred2
#$fit
# fit lwr upr
#1 3.811881 -5.0008685 12.62463
#2 5.495050 -0.1299942 11.12009
#3 7.178218 0.6095820 13.74685
#4 8.861386 -1.7302209 19.45299
#
#$se.fit
# 1 2 3 4
#2.048213 1.307343 1.526648 2.461646
#
#$df # note, this is `4 - 2 = 2`
#[1] 2
#
#$residual.scale ## for `pred2`
#[1] 3.961448
Какой полный ответ! Очень тщательно. – Gregor
Прежде всего, GAM и линейная регрессия работают совершенно по-другому. Поэтому объяснение с помощью «lm» может быть неуместным. Линейная регрессия (или взвешенная линейная регрессия) находит коэффициенты по матричному расчёту (X'X)^(- 1) X'y (X'WX)^(- 1) X'Wy). С другой стороны, вывод GAM не предполагает такого вычисления матрицы. Они используют метод максимального правдоподобия. В руководстве GAM также говорится, что опция «весов» - это «предварительные веса по вкладу данных в логарифмическую правдоподобия». – user67275
Кроме того, я не уверен, что «вес» в GAM предназначен для использования с гетероседастичностью. Как говорится в руководстве «gam», опция весов может использоваться в ситуации, когда «дважды повторялось одно и то же наблюдение», и я задавался вопросом, почему их результаты (связанное наблюдение с использованием весов как часто) не идентичны. – user67275