Menentukan beberapa efek acak (terpisah) di lme [ditutup]

25

Saya sedang mengerjakan paket R nlme dan lme4 , mencoba menentukan model dengan beberapa efek acak. Saya menemukan, bahwa hanya nlme yang memungkinkan untuk menentukan struktur varians yang heterogen. Oleh karena itu, saya mendapatkan model, di mana suhu (Y) tergantung pada waktu (dalam jam), intersepsi bervariasi menurut tanggal dan tahun, dan varians juga bervariasi menurut tahun:

fit1 <- lme(Y ~ time, random=~1|year/date, data=X, weights=varIdent(form=~1|year))

Namun, jika saya perlu menambahkan istilah acak lain (waktu bervariasi berdasarkan tanggal), dan tentukan model seperti ini:

fit2 <- lme(Y ~ time, random=list(~1|year, ~time-1|date,  ~1|date), data=X, 
            weights=varIdent(form=~1|year))

efek acak menjadi bersarang satu sama lain: tanggal dalam tahun; dan kemudian tanggal dalam tanggal dan tahun.

Saya juga mencoba

one  <- rep(1, length(Y))
fit3 <- lme(Y ~ time, random=list(one=pdBlocked(list(pdSymm(~1|year/date), 
            pdSymm(~time-1|year)))), data=X, weights=varIdent(form=~1|year))

tapi itu memberikan kesalahan:

Error in pdConstruct.pdBlocked(object, form = form, nam = nam, data = data,  :
  cannot have duplicated column names in a "pdMat" object

Saya mengerti bahwa sudah ada banyak pertanyaan terkait dengan masalah yang sama, tetapi saya benar-benar tidak menemukan jawaban untuk kasus saya. Bisakah Anda membantu saya dengan spesifikasi model yang tepat?

Slava
sumber

Jawaban:

30

Setelah banyak perjuangan saya menemukan solusi untuk masalah saya, yang saya posting di sini kalau-kalau ada orang yang memiliki pertanyaan serupa:

fit <- lme(Y ~ time, random=list(year=~1, date=~time), data=X, weights=varIdent(form=~1|year))
Slava
sumber