Apakah pola residu autokorelasi tetap ada bahkan dalam model dengan struktur korelasi yang sesuai, & bagaimana memilih model terbaik?


17

Konteks

Pertanyaan ini menggunakan R, tetapi tentang masalah statistik umum.

Saya sedang menganalisis efek dari faktor kematian (% kematian karena penyakit dan parasitisme) pada tingkat pertumbuhan populasi ngengat dari waktu ke waktu, di mana populasi larva diambil sampelnya dari 12 lokasi setahun sekali selama 8 tahun. Data tingkat pertumbuhan populasi menampilkan tren siklus yang jelas namun tidak teratur dari waktu ke waktu.

Sisa dari model linear umum sederhana (tingkat pertumbuhan ~% penyakit +% parasitisme + tahun) menunjukkan tren siklus yang jelas tetapi tidak teratur dari waktu ke waktu. Oleh karena itu, model kuadrat terkecil umum dari bentuk yang sama juga dipasang pada data dengan struktur korelasi yang sesuai untuk menangani autokorelasi temporal, misalnya simetri senyawa, urutan proses autoregresif 1 dan struktur korelasi rata-rata bergerak autoregresif.

Semua model berisi efek tetap yang sama, dibandingkan dengan menggunakan AIC, dan dipasang oleh REML (untuk memungkinkan perbandingan struktur korelasi yang berbeda dengan AIC). Saya menggunakan paket R nlme dan fungsi gls.

pertanyaan 1

Residu model GLS masih menampilkan pola siklus yang hampir identik ketika diplot dengan waktu. Apakah pola seperti itu akan selalu ada, bahkan dalam model yang secara akurat menjelaskan struktur autokorelasi?

Saya telah mensimulasikan beberapa data yang disederhanakan tetapi serupa dalam R di bawah pertanyaan kedua saya, yang menunjukkan masalah berdasarkan pemahaman saya saat ini tentang metode yang diperlukan untuk menilai pola autokorelasi sementara dalam residual model , yang sekarang saya tahu salah (lihat jawaban).

Pertanyaan 2

Saya telah memasang model GLS dengan semua struktur korelasi yang mungkin masuk akal ke data saya, tetapi tidak ada yang secara substansial lebih pas daripada GLM tanpa struktur korelasi apa pun: hanya satu model GLS yang sedikit lebih baik (skor AIC = 1,8 lebih rendah), sementara sisanya memiliki nilai AIC yang lebih tinggi. Namun, ini hanya terjadi ketika semua model dipasang oleh REML, bukan ML di mana model GLS jelas jauh lebih baik, tetapi saya mengerti dari buku statistik Anda hanya harus menggunakan REML untuk membandingkan model dengan struktur korelasi yang berbeda dan efek tetap yang sama karena alasan Saya tidak akan merinci di sini.

Mengingat sifat data yang secara autokorelasi jelas sementara, jika tidak ada model yang bahkan lebih baik daripada GLM sederhana apa cara yang paling tepat untuk memutuskan model mana yang akan digunakan untuk inferensi, dengan asumsi saya menggunakan metode yang sesuai (akhirnya saya ingin menggunakan AIC untuk membandingkan kombinasi variabel yang berbeda)?

Q1 'simulasi' mengeksplorasi pola residual dalam model dengan dan tanpa struktur korelasi yang sesuai

Hasilkan variabel respons simulasi dengan efek siklus 'waktu', dan efek linear positif 'x':

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)

y harus menampilkan tren siklus selama 'waktu' dengan variasi acak:

plot(time,y)

Dan hubungan linier positif dengan 'x' dengan variasi acak:

plot(x,y)

Buat model aditif linier sederhana "y ~ time + x":

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

Model ini menampilkan pola siklus yang jelas dalam residu ketika diplot terhadap 'waktu', seperti yang diharapkan:

plot(time, m1$residuals)

Dan apa yang seharusnya menjadi kekurangan, baik jelas dari pola atau tren dalam residu ketika diplot terhadap 'x':

plot(x, m1$residuals)

Model sederhana "y ~ waktu + x" yang mencakup struktur korelasi autoregresif urutan 1 harus sesuai dengan data yang jauh lebih baik daripada model sebelumnya karena struktur autokorelasi, ketika dinilai menggunakan AIC:

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

Namun, model tersebut harus tetap menampilkan residu autokorelasi yang 'identik sementara':

plot(time, m2$residuals)

Terima kasih banyak atas sarannya.


Model Anda tidak menangkap dengan baik ketergantungan waktu yang disebabkan oleh siklus (bahkan untuk kasus simulasi Anda), sehingga karakterisasi ' akun akurat ' Anda tidak tepat. Alasan Anda masih memiliki pola dalam residu Anda mungkin karena itu.
Glen_b -Reinstate Monica

Saya pikir Anda memilikinya mundur. Perkiraan harus diperoleh menggunakan kemungkinan maksimum penuh daripada REML. Metode pemilihan = "ML" diperlukan untuk melakukan tes rasio kemungkinan dan diperlukan jika Anda ingin menggunakan AIC untuk membandingkan model dengan prediktor yang berbeda. REML memberikan perkiraan yang lebih baik dari komponen varians dan kesalahan standar daripada ML. Setelah menggunakan metode = "ML" untuk membandingkan model yang berbeda, kadang-kadang direkomendasikan bahwa model akhir diperbaiki menggunakan metode = "REML" dan bahwa perkiraan dan kesalahan standar dari kecocokan REML digunakan untuk inferensi akhir.
theforestecologist

Jawaban:


24

Q1

Anda melakukan dua hal yang salah di sini. Yang pertama adalah hal yang umumnya buruk; jangan secara umum mempelajari objek model dan merobek komponen. Pelajari cara menggunakan fungsi ekstraktor, dalam hal ini resid(). Dalam hal ini Anda mendapatkan sesuatu yang bermanfaat tetapi jika Anda memiliki jenis objek model yang berbeda, seperti GLM dari glm(), maka mod$residualsakan berisi residu yang berfungsi dari iterasi IRLS terakhir dan merupakan sesuatu yang umumnya tidak Anda inginkan!

Hal kedua yang Anda lakukan salah adalah sesuatu yang membuat saya keluar juga. Residu yang Anda ekstrak (dan juga akan diekstraksi jika Anda akan gunakan resid()) adalah residu mentah atau respons. Pada dasarnya ini adalah perbedaan antara nilai yang dipasang dan nilai yang diamati dari respons, dengan mempertimbangkan ketentuan efek tetap saja . Nilai-nilai ini akan mengandung autokorelasi residu yang sama dengan m1karena efek tetap (atau jika Anda lebih suka, prediktor linier) adalah sama pada kedua model ( ~ time + x).

Untuk mendapatkan residu yang menyertakan istilah korelasi yang Anda tentukan, Anda perlu residu yang dinormalisasi . Anda mendapatkan ini dengan melakukan:

resid(m1, type = "normalized")

Ini (dan jenis residu lain yang tersedia) dijelaskan dalam ?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"’.

Dengan perbandingan, berikut adalah ACFs dari raw (response) dan residual yang dinormalisasi

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

masukkan deskripsi gambar di sini

Untuk melihat mengapa ini terjadi, dan di mana residu mentah tidak menyertakan istilah korelasi, pertimbangkan model yang Anda paskan

y=β0+β1tsayame+β2x+ε

dimana

εN(0,σ2Λ)

Λρ^ρ|d|d

Residual mentah, default dikembalikan oleh resid(m2)hanya dari bagian prediktor linier, maka dari ini sedikit

β0+β1tsayame+β2x

Λ

Q2

Tampaknya Anda mencoba menyesuaikan tren non-linear dengan fungsi linier timedan memperhitungkan kurangnya kecocokan dengan "tren" dengan AR (1) (atau struktur lain). Jika data Anda sama dengan contoh data yang Anda berikan di sini, saya akan cocok dengan GAM untuk memungkinkan fungsi kovariat yang lancar. Model ini akan menjadi

y=β0+f1(tsayame)+f2(x)+ε

Λ=saya

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

di mana select = TRUEberlaku beberapa penyusutan tambahan untuk memungkinkan model untuk menghapus salah satu syarat dari model.

Model ini memberi

> 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

dan memiliki istilah halus yang terlihat seperti ini:

masukkan deskripsi gambar di sini

Residu dari model ini juga berperilaku lebih baik (residu mentah)

acf(resid(m3))

masukkan deskripsi gambar di sini

Sekarang kata hati-hati; ada masalah dengan smoothing time series dalam hal metode yang memutuskan seberapa halus atau goyahnya fungsi diasumsikan bahwa data independen. Apa artinya ini secara praktis adalah bahwa fungsi waktu yang mulus ( s(time)) dapat cocok dengan informasi yang benar-benar kesalahan otokorelasi acak dan tidak hanya tren yang mendasarinya. Oleh karena itu Anda harus sangat berhati-hati ketika menyesuaikan data deret waktu.

Ada beberapa cara di sekitar ini, tetapi satu cara adalah beralih untuk menyesuaikan model melalui gamm()mana panggilan lme()internal dan yang memungkinkan Anda untuk menggunakan correlationargumen yang Anda gunakan untuk gls()model. Berikut ini sebuah contoh

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)ρ>>.5

Model dengan AR (1) tidak mewakili peningkatan yang signifikan atas model tanpa 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

Jika kita melihat perkiraan untuk $ \ hat {\ rho}} kita lihat

> intervals(mm2$lme)
....

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

Phiρρ


Terima kasih banyak Gavin untuk jawaban terperinci yang luar biasa. Sepertinya data saya menghasilkan hasil yang secara kualitatif serupa dengan GAM, dalam hal ini hanya ada sedikit peningkatan atau semakin buruknya kecocokan (dinilai melalui AIC / AICc) ketika membandingkan GAM dengan dan tanpa struktur korelasi standar. Apakah Anda / ada yang tahu: jika ada tren siklus data / residu yang sangat jelas, jika tidak teratur, apakah akan lebih tepat untuk tetap menggunakan struktur korelasi yang paling pas daripada model yang tidak ada? Terima kasih lagi.
JupiterM104

1
Datang sangat terlambat, tetapi ingin berterima kasih kepada Gavin atas respons yang fantastis ini. Membantu saya keluar satu ton.
jerapah di sini
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.