Сохраняются ли автокоррелированные остаточные структуры даже в моделях с соответствующими структурами корреляции и как выбрать лучшие модели?


17

контекст

В этом вопросе используется R, но речь идет об общих статистических вопросах.

Я анализирую влияние факторов смертности (% смертности от болезней и паразитов) на скорость роста популяции моли с течением времени, когда популяция личинок отбиралась из 12 мест один раз в год в течение 8 лет. Данные о темпах роста населения показывают четкую, но нерегулярную циклическую тенденцию во времени.

Остатки от простой обобщенной линейной модели (скорость роста ~% заболевания +% паразитизм + год) демонстрировали аналогичную четкую, но нерегулярную циклическую тенденцию во времени. Следовательно, обобщенные модели наименьших квадратов той же формы также были адаптированы к данным с соответствующими корреляционными структурами, чтобы иметь дело с временной автокорреляцией, например, составной симметрией, авторегрессионным порядком обработки 1 и авторегрессионными корреляционными структурами скользящего среднего.

Все модели содержали одинаковые фиксированные эффекты, сравнивались с использованием AIC и устанавливались REML (чтобы позволить сравнение различных структур корреляции с помощью AIC). Я использую пакет R NLME и функцию GLS.

Вопрос 1

Остатки моделей GLS по-прежнему отображают практически идентичные циклические закономерности при построении графика в зависимости от времени. Будут ли такие шаблоны всегда оставаться, даже в моделях, которые точно учитывают автокорреляционную структуру?

Я смоделировал некоторые упрощенные, но похожие данные в R ниже моего второго вопроса, который показывает проблему, основанную на моем текущем понимании методов, необходимых для оценки временных автокоррелированных моделей в остатках модели , которые, как я теперь знаю, неверны (см. Ответ).

вопрос 2

Я приспособил модели GLS со всеми возможными вероятными структурами корреляции к моим данным, но на самом деле ни одна из них не является существенно более подходящей, чем GLM, без какой-либо структуры корреляции: только одна модель GLS незначительно лучше (оценка AIC = 1,8 ниже), в то время как все остальные имеют более высокие значения AIC. Тем не менее, это только тот случай, когда все модели соответствуют REML, а не ML, где модели GLS явно намного лучше, но я понимаю, что из книг статистики вы должны использовать REML только для сравнения моделей с различными структурами корреляции и одинаковыми фиксированными эффектами по причинам. Я не буду подробно здесь.

Учитывая явно временную автокорреляционную природу данных, если ни одна модель даже не в несколько раз лучше, чем простая GLM, какой самый подходящий способ решить, какую модель использовать для вывода, предполагая, что я использую соответствующий метод (я в конечном итоге хочу использовать AIC для сравнения различных переменных комбинаций)?

Q1 «симуляция», исследующая остаточные модели в моделях с соответствующими корреляционными структурами и без них

Создайте смоделированную переменную отклика с циклическим эффектом «время» и положительным линейным эффектом «х»:

time <- 1:50
x <- sample(rep(1:25,each=2),50)
y <- rnorm(50,5,5) + (5 + 15*sin(2*pi*time/25)) + (x/1)

у должен отображаться циклический тренд в течение «времени» со случайным изменением:

plot(time,y)

И положительные линейные отношения с «х» со случайным изменением:

plot(x,y)

Создайте простую линейную аддитивную модель "y ~ time + x":

require(nlme)
m1 <- gls(y ~ time + x, method="REML")

Модель отображает четкие циклические закономерности в остатках при построении в зависимости от «времени», как и следовало ожидать:

plot(time, m1$residuals)

И что должно быть приятным, ясным отсутствием какого-либо паттерна или тренда в остатках при построении против 'x':

plot(x, m1$residuals)

Простая модель "y ~ time + x", которая включает авторегрессивную корреляционную структуру порядка 1, должна соответствовать данным намного лучше, чем предыдущая модель, из-за автокорреляционной структуры, при оценке с использованием AIC:

m2 <- gls(y ~ time + x, correlation = corAR1(form=~time), method="REML")
AIC(m1,m2)

Однако модель должна по-прежнему отображать практически идентичные «временные» автокоррелированные остатки:

plot(time, m2$residuals)

Большое спасибо за любой совет.


Ваша модель должным образом не отражает временную зависимость, вызванную циклами (даже для вашего смоделированного случая), поэтому ваша характеристика « точного учета » не подходит. Причина, по которой у вас все еще есть структура в ваших остатках, возможно, из-за этого.
Glen_b

Я думаю, что у вас есть это задом наперед. Оценки должны быть получены с использованием полной максимальной вероятности, а не REML. Выбор метода = «ML» необходим для проведения тестов отношения правдоподобия и необходим, если вы хотите использовать AIC для сравнения моделей с разными предикторами. REML дает лучшие оценки компонентов дисперсии и стандартных ошибок, чем ML. Используя метод = "ML" для сравнения различных моделей, иногда рекомендуется переконфигурировать окончательную модель с использованием метода = "REML" и использовать оценки и стандартные ошибки из соответствия REML для окончательного вывода.
лесовод

Ответы:


24

Q1

Вы делаете две вещи неправильно здесь. Первое - вообще плохая вещь; вообще не копайтесь в модельных объектах и ​​не вырывайте компоненты. Научитесь использовать функции экстрактора, в этом случае resid(). В этом случае вы получаете что-то полезное, но если у вас был другой тип объекта модели, такой как GLM glm(), то он mod$residualsбудет содержать рабочие остатки из последней итерации IRLS и вам вообще не нужен!

Второе, что вы делаете неправильно, это то, что меня тоже застало врасплох. Остатки, которые вы извлекли (а также извлекли бы, если бы использовали resid()), являются необработанными или ответными остатками. По сути, это разница между подобранными значениями и наблюдаемыми значениями отклика, принимая во внимание только условия с фиксированными эффектами . Эти значения будут содержать ту же остаточную автокорреляцию, что и из- m1за того, что фиксированные эффекты (или, если хотите, линейный предиктор) одинаковы в двух моделях ( ~ time + x).

Чтобы получить остатки, которые включают указанный вами коэффициент корреляции, вам нужны нормализованные остатки. Вы получаете это, делая:

resid(m1, type = "normalized")

Это (и другие доступные типы остатков) описано в ?residuals.gls:

type: an optional character string specifying the type of residuals
      to be used. If ‘"response"’, the "raw" residuals (observed -
      fitted) are used; else, if ‘"pearson"’, the standardized
      residuals (raw residuals divided by the corresponding
      standard errors) are used; else, if ‘"normalized"’, the
      normalized residuals (standardized residuals pre-multiplied
      by the inverse square-root factor of the estimated error
      correlation matrix) are used. Partial matching of arguments
      is used, so only the first character needs to be provided.
      Defaults to ‘"response"’.

Для сравнения, вот ACF необработанных (ответ) и нормализованных остатков

layout(matrix(1:2))
acf(resid(m2))
acf(resid(m2, type = "normalized"))
layout(1)

введите описание изображения здесь

Чтобы понять, почему это происходит, и где необработанные остатки не включают термин корреляции, рассмотрите модель, которую вы выбрали

Yзнак равноβ0+β1Tяме+β2Икс+ε

где

ε~N(0,σ2Λ)

Λρ^ρ|d|d

Необработанные остатки, по умолчанию возвращаемые resid(m2)из только части линейного предиктора, следовательно, из этого бита

β0+β1Tяме+β2Икс

Λ

Q2

Похоже, что вы пытаетесь согласовать нелинейный тренд с линейной функцией timeи учитывать отсутствие соответствия «тренду» с AR (1) (или другими структурами). Если ваши данные похожи на пример данных, которые вы приводите здесь, я бы использовал GAM, чтобы обеспечить гладкую функцию ковариат. Эта модель будет

Yзнак равноβ0+е1(Tяме)+е2(Икс)+ε

Λзнак равноя

library("mgcv")
m3 <- gam(y ~ s(time) + s(x), select = TRUE, method = "REML")

где select = TRUEприменяется некоторая дополнительная усадка, чтобы позволить модели удалить любой из терминов из модели.

Эта модель дает

> summary(m3)

Family: gaussian 
Link function: identity 

Formula:
y ~ s(time) + s(x)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  23.1532     0.7104   32.59   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
          edf Ref.df      F  p-value    
s(time) 8.041      9 26.364  < 2e-16 ***
s(x)    1.922      9  9.749 1.09e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

и имеет гладкие условия, которые выглядят так:

введите описание изображения здесь

Остатки от этой модели также лучше себя ведут (необработанные остатки)

acf(resid(m3))

введите описание изображения здесь

Теперь слово предостережения; Существует проблема сглаживания временных рядов, заключающаяся в том, что методы, определяющие, насколько гладкими или волнистыми являются функции, предполагают независимость данных. На практике это означает, что сглаженная функция time ( s(time)) может соответствовать информации, которая представляет собой действительно случайную автокоррелированную ошибку, а не только основной тренд. Следовательно, вы должны быть очень осторожны при подборе сглаживателей к данным временных рядов.

Есть несколько способов обойти это, но один из них состоит в том, чтобы перейти к подгонке модели, с помощью gamm()которой осуществляется lme()внутренний вызов и которая позволяет вам использовать correlationаргумент, который вы использовали для gls()модели. Вот пример

mm1 <- gamm(y ~ s(time, k = 6, fx = TRUE) + s(x), select = TRUE,
            method = "REML")
mm2 <- gamm(y ~ s(time, k = 6, fx = TRUE) + s(x), select = TRUE,
            method = "REML", correlation = corAR1(form = ~ time))

s(time)s(time)ρзнак равно0s(time)ρ>>0,5

Модель с AR (1) не представляет значительного улучшения по сравнению с моделью без AR (1):

> anova(mm1$lme, mm2$lme)
        Model df      AIC      BIC    logLik   Test   L.Ratio p-value
mm1$lme     1  9 301.5986 317.4494 -141.7993                         
mm2$lme     2 10 303.4168 321.0288 -141.7084 1 vs 2 0.1817652  0.6699

Если мы посмотрим на оценку для $ \ hat {\ rho}}, мы увидим

> intervals(mm2$lme)
....

 Correlation structure:
         lower      est.     upper
Phi -0.2696671 0.0756494 0.4037265
attr(,"label")
[1] "Correlation structure:"

Phiρρ


Большое спасибо, Гэвин, за этот превосходный подробный подробный ответ. Похоже, мои данные дают качественно схожий результат с GAM, в котором наблюдается либо очень небольшое улучшение, либо ухудшение соответствия (оценивается с помощью AIC / AICc) при сравнении GAM со стандартными корреляционными структурами и без них. Знаете ли вы / кто-либо: если в данных / остатках есть очень четкие, если нерегулярные, циклические тренды, то будет ли наиболее целесообразным придерживаться наиболее подходящей структуры корреляции, а не модели без таковой? Еще раз спасибо.
JupiterM104

1
Пришел очень поздно, но хотел поблагодарить Гэвина за этот фантастический ответ. Выручил меня за тонну.
Жираф здесь
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.