Dengan dataset berikut, saya ingin melihat apakah respons (efek) berubah sehubungan dengan situs, musim, durasi, dan interaksinya. Beberapa forum online tentang statistik menyarankan saya untuk melanjutkan dengan Linear Mixed-Effects Model, tetapi masalahnya adalah karena replikat diacak di setiap stasiun, saya memiliki sedikit kesempatan untuk mengumpulkan sampel dari tempat yang persis sama di musim berturut-turut (misalnya, repl-1 dari s1 post-monsoon mungkin tidak sama dengan monsoon). Ini tidak seperti uji klinis (dengan desain dalam-subjek) di mana Anda mengukur subjek yang sama berulang kali selama musim. Namun, dengan mempertimbangkan situs dan musim sebagai faktor acak, saya menjalankan perintah berikut dan menerima pesan peringatan:
Warning messages:
1: In checkConv(attr(opt, "derivs"), optpar,ctrl=controlpar,ctrl=controlcheckConv,
: unable to evaluate scaled gradient
2: In checkConv(attr(opt, "derivs"), optpar,ctrl=controlpar,ctrl=controlcheckConv,
: Model failed to converge: degenerate Hessian with 1 negative eigenvalues
Adakah yang bisa membantu saya menyelesaikan masalah ini? Kode diberikan di bawah ini:
library(lme4)
read.table(textConnection("duration season sites effect
4d mon s1 7305.91
4d mon s2 856.297
4d mon s3 649.93
4d mon s1 10121.62
4d mon s2 5137.85
4d mon s3 3059.89
4d mon s1 5384.3
4d mon s2 5014.66
4d mon s3 3378.15
4d post s1 6475.53
4d post s2 2923.15
4d post s3 554.05
4d post s1 7590.8
4d post s2 3888.01
4d post s3 600.07
4d post s1 6717.63
4d post s2 1542.93
4d post s3 1001.4
4d pre s1 9290.84
4d pre s2 2199.05
4d pre s3 1149.99
4d pre s1 5864.29
4d pre s2 4847.92
4d pre s3 4172.71
4d pre s1 8419.88
4d pre s2 685.18
4d pre s3 4133.15
7d mon s1 11129.86
7d mon s2 1492.36
7d mon s3 1375
7d mon s1 10927.16
7d mon s2 8131.14
7d mon s3 9610.08
7d mon s1 13732.55
7d mon s2 13314.01
7d mon s3 4075.65
7d post s1 11770.79
7d post s2 4254.88
7d post s3 753.2
7d post s1 11324.95
7d post s2 5133.76
7d post s3 2156.2
7d post s1 12103.76
7d post s2 3143.72
7d post s3 2603.23
7d pre s1 13928.88
7d pre s2 3208.28
7d pre s3 8015.04
7d pre s1 11851.47
7d pre s2 6815.31
7d pre s3 8478.77
7d pre s1 13600.48
7d pre s2 1219.46
7d pre s3 6987.5
"),header=T)->dat1
m1 = lmer(effect ~ duration + (1+duration|sites) +(1+duration|season),
data=dat1, REML=FALSE)
sumber
Jawaban:
"Memecahkan" masalah yang Anda alami dalam arti tidak menerima peringatan tentang konvergensi yang gagal agak mudah: Anda tidak menggunakan pengoptimal BOBYQA default tetapi Anda memilih untuk menggunakan rutin optimasi Nelder-Mead yang digunakan secara default pada
1.0.x
versi sebelumnya sebelumnya. Atau Anda menginstal paketoptimx
sehingga Anda dapat langsung melakukan rutinitas L-BFGS-B ataunlminb
(sama sepertilme4
versi sebelum ver.1
). Sebagai contoh:semua berfungsi dengan baik (tidak ada peringatan). Pertanyaan menarik adalah:
REML = TRUE
Anda tidak mendapat peringatan.Ringkas, 1. Anda menerima peringatan-peringatan itu karena Anda didefinisikan
duration
baik sebagai efek tetap serta kemiringan acak untuk faktorsites
sertaseason
. Model ini secara efektif kehabisan derajat kebebasan untuk memperkirakan korelasi antara lereng dan intersep yang Anda tetapkan. Jika Anda menggunakan model yang sedikit lebih sederhana seperti:Anda tidak akan mengalami masalah konvergensi. Model ini akan secara efektif memperkirakan intersepsi acak tidak berkorelasi dan lereng acak untuk masing-masing
season
.Selain itu, 2. saat Anda menentukanX y= Xβ+ Zγ+ ϵ K KX= 0 y Ky Z ke . Saya sangat curiga bahwa ini mempengaruhi nomor kondisi dari matriks desain dan dengan demikian membantu Anda keluar dari angka-angka keras yang Anda temukan sendiri.KZ Z
REML = FALSE
Anda menggunakan estimasi Kemungkinan Maksimum alih-alih yang Maksimal Kemungkinan Maksimal. Perkiraan REML mencoba untuk "faktor keluar" pengaruh efek tetap sebelum pindah ke menemukan struktur varians efek acak optimal (lihat utas " Apa itu" kemungkinan maksimum dibatasi "dan kapan harus digunakan? " Untuk lebih rinci informasi tentang masalah ini). Secara komputasional prosedur ini pada dasarnya dilakukan dengan mengalikan kedua bagian dari persamaan model LME asli dengan matriks sedemikian rupa sehingga , yaitu Anda mengubah asli ke serta ituCatatan terakhir adalah bahwa saya tidak yakin apakah itu masuk akal untuk digunakan
season
sebagai efek acak untuk memulai. Bagaimanapun, hanya ada begitu banyak musim sehingga Anda mungkin memperlakukannya sebagai efek tetap.sumber
REML = FALSE, glmerControl(optimizer ='optimx', optCtrl=list(method='nlminb'))
- benar-benar memecahkan masalah konvergensiglmer
!Pertanyaannya adalah statistik daripada teknis. Sebenarnya, saya menggunakan model efek acak alih-alih efek tetap. Tidak satu pun faktor, saya pikir, harus diperlakukan sebagai faktor acak karena kita memerlukan setidaknya 5 atau 6 level atau replikasi untuk memperlakukan faktor sebagai efek acak (lihat di sini Berapakah jumlah minimum kelompok yang disarankan untuk faktor efek acak? ).
Dataset di atas hanya berisi sampel rangkap tiga / situs / musim yang tidak mencukupi untuk model efek acak. Dalam data yang menetapkan durasi, 4 hari dan 7 hari milik dua percobaan paralel terpisah yang dijalankan di bawah waktu yang sama. Jadi, letakkan data yang ditetapkan berdasarkan durasi (4 hari dan 7 hari) dan lakukan anova 2 arah untuk setiap durasi dengan musim dan lokasi karena faktor-faktor akan cukup untuk memodelkan efek (variabel respon) di sini. Model harus sebagai berikut:
Terima kasih kepada Bodo Winter ( http://www.bodowinter.com/tutorial/bw_LME_tutorial2.pdf ) dan @ usεr11852 yang membantu saya memecahkan masalah ini.
sumber