Nlme bilan xato

nlme kutubxonasidagi IGF ma'lumotlar uchun ushbu xato xabari olaman:

lme(conc ~ 1, data=IGF, random=~age|Lot)
Error in lme.formula(conc ~ 1, data = IGF, random = ~age | Lot) : 
  nlminb problem, convergence error code = 1
  message = iteration limit reached without convergence (10)

Ammo bu kod bilan hamma narsa yaxshi

lme(conc ~ age, data=IGF)
Linear mixed-effects model fit by REML
  Data: IGF 
  Log-restricted-likelihood: -297.1831
  Fixed: conc ~ age 
 (Intercept)          age 
 5.374974367 -0.002535021 

Random effects:
 Formula: ~age | Lot
 Structure: General positive-definite
            StdDev      Corr  
(Intercept) 0.082512196 (Intr)
age         0.008092173 -1    
Residual    0.820627711       

Number of Observations: 237
Number of Groups: 10 

IGF groupedData </​​code> bo'lgani uchun, har ikkala kod bir xil. Nima uchun birinchi kod xato qilsa, men shubhalanaman. Vaqtingiz va yordamingiz uchun tashakkur.

10
@JohnColby: Ushbu kodni kitobdan olganman.
qo'shib qo'ydi muallif MYaseen208, manba
Birinchi misolda iteratsiya chegaralarini kuchaytirishga harakat qildingizmi? ? LmeControl ga qarang.
qo'shib qo'ydi muallif Hong Ooi, manba
Men bu haqda tez-tez qarashga harakat qildim va hech narsa menda yo'qoldi. r-sig-mixed-models mailing list-da yaxshiroq imkoniyatga ega bo'lishingiz mumkin, bu paketni yaxshi biladigan odamlarning konsentratsiyasi ancha yuqori ...
qo'shib qo'ydi muallif Ben Bolker, manba
Quyidagi javoblar va sharhlarni ko'ring. Sizning birinchi modelingiz yoshni sobit bo'lgan ta'siri yoki ikkinchi modeldagi tasodifiy ta'sir cheklovlari emas.
qo'shib qo'ydi muallif John Colby, manba
Bundan tashqari, agar siz ushbu to'plamga faqat juda oddiy modellardan tashqari qazishni istasangiz, yuqori S va S-Plus ning aralash-effektlar modellari . Bu mavzularning barcha bo'limlari va misollar mavjud. Juda chuqur.
qo'shib qo'ydi muallif John Colby, manba

2 javoblar

Agar siz ma'lumotlaringizni tuzsangiz, age ning ta'siri yo'qligini ko'rishingiz mumkin, shunga qaramay shu bilan birga age tasodifiy effektiga moslashishga harakat qilish g'alati ko'rinadi. U bilan yaqinlashmaslik ajablanarli emas.

library(nlme)
library(ggplot2)

dev.new(width=6, height=3)
qplot(age, conc, data=IGF) + facet_wrap(~Lot, nrow=2) + geom_smooth(method='lm')

enter image description here

O'ylaymanki, nima qilishni istasangiz, bu Lot tasodifiy tasodifiy ta'siri. Biz age , jumladan, qattiq ta'sir qilib ko'rishga urinib ko'rishimiz mumkin, ammo biz buni ahamiyatli emas va tashqariga tashlab yuborishimiz mumkin:

> summary(lme(conc ~ 1 + age, data=IGF, random=~1|Lot))
Linear mixed-effects model fit by REML
 Data: IGF 
       AIC      BIC    logLik
  604.8711 618.7094 -298.4355

Random effects:
 Formula: ~1 | Lot
        (Intercept) Residual
StdDev:  0.07153912 0.829998

Fixed effects: conc ~ 1 + age 
                Value  Std.Error  DF  t-value p-value
(Intercept)  5.354435 0.10619982 226 50.41849  0.0000
age         -0.000817 0.00396984 226 -0.20587  0.8371
 Correlation: 
    (Intr)
age -0.828

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-5.46774548 -0.43073893 -0.01519143  0.30336310  5.28952876 

Number of Observations: 237
Number of Groups: 10 
5
qo'shib qo'ydi
Sizning tahlilingiz ma'lumotlarda nima sodir bo'layotganiga oid savolga javob beradi, ammo aslida mavjud bo'lgan modellarda farqlarning mavjudligi to'g'risida hali-beri qiziqarli savol bor. Yuqoridagi muvaffaqiyatli model natijalariga qaraganda, u ishlamaydi ni yoshning tasodifiy effektiga moslashini ko'rishingiz mumkin (garchi u modelning mahsuldorligi oshib borayotganligini ko'rsatuvchi ketma-ketlikning o'zgarishi bilan mukammal bir bog'liqlik bo'lsa-da). ..)
qo'shib qo'ydi muallif Ben Bolker, manba
Ha, lekin bu ham bajarilmaydi: lme ([email protected], data = IGF, random = ~ age | Lot) , uning yuzida xuddi shunday model bo'lishi mumkin. (Men ham emasman), shuning uchun juda ko'p harakat sarflamoqchiman, ammo javobimga mo''tadil qiziqib qoldim, chunki u quyidagi toifaga kiradi: "Doktor, Buni qilganimda achinaman. "" Xo'p, buni qilma ... ")
qo'shib qo'ydi muallif Ben Bolker, manba
Operatsiya qiladigan OP varaqidagi model age yamig'iga mos keladi va bu yamoqdagi Lot tasodifiy ta'siriga ega. Ma'lumotlar uni qo'llab-quvvatlasa, bu yaxshi narsadir. Buning yaxshi namunasi uchun lme (height ~ age, data = Oxboys, random = ~ 1 + age | Subject) ni tanlang. Bu ham ggplot2 kitobida §4.9.3 ga misol. Operatsiyaning ishi bo'lmagan birinchi maqola, qattiq ta'sir strukturasida ko'rsatilmagan biror narsaga tasodifiy ta'sir ko'rsatadi. Hatto mantiqiy fikrda emasman.
qo'shib qo'ydi muallif John Colby, manba
Ohhh, siz aytayotgan gapingizni endi ko'rib turibman. Buning uchun faqat groupedData </​​code> obyekti uchun nimaga mos keladigan tasodifiy effektlarga qo'shimcha cheklovlar qo'yiladi. Siz uni ishlayotgan joyda ko'rishingiz mumkin Structure: General positive-definite . aniq modelini qo'lda ko'rsatish uchun lme (konsultatsiya, ma'lumotlar = IGF, random = pdSymm (~ age)) bo'lishi kerak.
qo'shib qo'ydi muallif John Colby, manba

Bu erda men boshqasini topsam, eski javobim qoniqtirmaydi. Statistik jihatdan yoshning ta'siri yo'qligi va farqli o'laroq, hisoblash xatoligiga duch keladigan vaziyatlarni farqlayman. Shaxsan mana shu ikki holatni tanqid qilib, men mansab xatolarimga yo'l qo'ydim. R ikkinchisini sinab ko'rdi va men nima uchun bunga kirishni xohlayman.

O'P belgilagan model - bu o'sish modeli, tasodifiy yomg'ir va kesishmalar. Katta masofani o'z ichiga oladi, lekin katta yoshdagi nishab emas. "Katta" atamani qo'shmasdan, tasodifiy bir burchakka o'rnatib qo'yadigan bir noxush cheklov - bu tasodifiy nishabni o'rtacha qiymatga ega bo'lishga majbur qilishdir, bu esa optimallashtirish juda qiyin. Marginal modellar yoshni modeldagi 0dan statistik jihatdan ahamiyatli qiymatga ega emasligini ko'rsatadi. Bundan tashqari, yoshni sobit bo'lgan ta'sir sifatida qo'shish bu muammoni hal qilmaydi.

> lme(conc~ age, random=~age|Lot, data=IGF)
Error in lme.formula(conc ~ age, random = ~age | Lot, data = IGF) : 
  nlminb problem, convergence error code = 1
  message = iteration limit reached without convergence (10)

Bu erda xato aniq. Yinelemelerin sonini belgilash jozibador bo'lishi mumkin. lmeControl ko'p yineleyici hisobga ega. Lekin bu ham ishlamayapti:

> fit <- lme(conc~ 1, random=~age|Lot, data=IGF, 
control = lmeControl(maxIter = 1e8, msMaxIter = 1e8))

Error in lme.formula(conc ~ 1, random = ~age | Lot, 
data = IGF, control = lmeControl(maxIter = 1e+08,  : 
  nlminb problem, convergence error code = 1
  message = singular convergence (7)

Ya'ni, bu aniq narsa emas, optimizator ishlamayapti.

Taklif qilayotgan ikkita model va siz topgan xatolarni tashxislash usullari orasida asosiy farqlar bo'lishi kerak. Oddiy yondoshish, muammoli model uchun "aniq" moslashishni belgilab beradi:

> lme(conc~ 1, random=~age|Lot, data=IGF, control = lmeControl(msVerbose = TRUE))
  0:     602.96050:  2.63471  4.78706  141.598
  1:     602.85855:  3.09182  4.81754  141.597
  2:     602.85312:  3.12199  4.97587  141.598
  3:     602.83803:  3.23502  4.93514  141.598
   (truncated)
 48:     602.76219:  6.22172  4.81029  4211.89
 49:     602.76217:  6.26814  4.81000  4425.23
 50:     602.76216:  6.31630  4.80997  4638.57
 50:     602.76216:  6.31630  4.80997  4638.57

The first term is the REML (I think). The second through fourth terms are the parameters to an object called lmeSt of class lmeStructInt, lmeStruct, and modelStruct. If you use Rstudio's debugger to inspect attributes of this object (the lynchpin of the problem), you'll see it is the random effects component that explodes here. coef(lmeSt) after 50 iterations produces reStruct.Lot1 reStruct.Lot2 reStruct.Lot3 6.316295 4.809975 4638.570586

yuqorida ko'rib, ishlab chiqaradi

> coef(lmeSt, unconstrained = FALSE)

    reStruct.Lot.var((Intercept)) reStruct.Lot.cov(age,(Intercept)) 
                         306382.7                         2567534.6 
            reStruct.Lot.var(age) 
                       21531399.4 

bu ham xuddi shunday

Browse[1]> lmeSt$reStruct$Lot
Positive definite matrix structure of class pdLogChol representing
            (Intercept)      age
(Intercept)    306382.7  2567535
age           2567534.6 21531399

Shunday qilib tasodifiy effektlarning kovaryansi bu aniq optimizator uchun bu erda portlab chiqqan narsa. nlminb da PORT protseduralari ularning noto'g'ri xatolar uchun tanqid qilindi. Deyvid Gay (Bell Labs) matni bu yerda http: //ms.mcmaster. port/documentation/misc/port.pdf PORT xujjatlari 7 xatolikni 1 mlrd.lik maksimal "x juda ko'p bepul komponentlarga ega bo'lishi" dan foydalanishini ko'rsatadi (qarang: §5). Algoritmni tuzatish o'rniga, bizga o'xshash natijalarni yaratishi kerak bo'lgan taxminiy natijalar mavjudligini so'rashimiz kerak. Misol uchun, lmList ob'ektiga tasodifiy aralashish va tasodifiy Nishab farqiga kelish uchun osonlikcha mos keladi:

> fit <- lmList(conc ~ age | Lot, data=IGF)
> cov(coef(fit))
            (Intercept)          age
(Intercept)  0.13763699 -0.018609973
age         -0.01860997  0.003435819

Garchi ularning idealligi ularning aniq o'lchovlari bilan og'irroq bo'lishi kerak edi:

nlme to'plamini ishlatish uchun BFGS yordamida cheklanmagan optimallashtirish bunday xatolikni keltirib chiqarmaydi va shu kabi natijalarni beradi:

> lme(conc ~ 1, data=IGF, random=~age|Lot, control = lmeControl(opt = 'optim'))
Linear mixed-effects model fit by REML
  Data: IGF 
  Log-restricted-likelihood: -292.9675
  Fixed: conc ~ 1 
(Intercept) 
   5.333577 

Random effects:
 Formula: ~age | Lot
 Structure: General positive-definite, Log-Cholesky parametrization
            StdDev      Corr  
(Intercept) 0.032109976 (Intr)
age         0.005647296 -0.698
Residual    0.820819785       

Number of Observations: 237
Number of Groups: 10 

Ushbu modelning muqobil sintaktik deklaratsiyasi juda lme4 to'plami bilan amalga oshirilishi mumkin:

library(lme4)
lmer(conc ~ 1 + (age | Lot), data=IGF)

bu quyidagilarni beradi:

> lmer(conc ~ 1 + (age | Lot), data=IGF)
Linear mixed model fit by REML ['lmerMod']
Formula: conc ~ 1 + (age | Lot)
   Data: IGF
REML criterion at convergence: 585.7987
Random effects:
 Groups   Name        Std.Dev. Corr 
 Lot      (Intercept) 0.056254      
          age         0.006687 -1.00
 Residual             0.820609      
Number of obs: 237, groups:  Lot, 10
Fixed Effects:
(Intercept)  
      5.331 

lmer xususiyati va uning optimizatori 1, 0 yoki -1 ga juda yaqin bo'lgan tasodifiy effekt korelasyonlari, bu qiymatlarga soddalashtirilganligi sababli, optimallashtirishni soddalashtiradi (va statistikani samaradorligi) muhim ahamiyatga ega.

Birgalikda, bu emas, balki oldindan aytilganidek, yoshning ta'siri yo'qligini ko'rsatib turibdi va bu dalillar raqamli natijalar bilan qo'llab-quvvatlanishi mumkin.

3
qo'shib qo'ydi