Jadi, bagi saya kelihatannya fungsi bobot dalam lm memberikan bobot pengamatan lebih besar, semakin besar nilai 'bobot' pengamatan, sedangkan fungsi lme di lme justru melakukan sebaliknya. Ini dapat diverifikasi dengan simulasi sederhana.
#make 3 vectors- c is used as an uninformative random effect for the lme model
a<-c(1:10)
b<-c(2,4,6,8,10,100,14,16,18,20)
c<-c(1,1,1,1,1,1,1,1,1,1)
Jika Anda sekarang menjalankan model di mana Anda menimbang pengamatan berdasarkan pada kebalikan dari variabel dependen dalam lm, Anda hanya dapat menghasilkan hasil yang sama persis di nlme jika Anda menimbang dengan hanya variabel dependen, tanpa mengambil invers.
summary(lm(b~a,weights=1/b))
summary(lme(b~a,random=~1|c,weights=~b))
Anda dapat membalik ini dan melihat yang sebaliknya adalah benar-menentukan bobot = b dalam lm membutuhkan bobot = 1 / b untuk mendapatkan hasil yang cocok.
Jadi, saya sangat mengerti ini, saya hanya ingin validasi pada satu hal dan untuk bertanya tentang yang lain.
- Jika saya ingin memberi bobot pada data saya berdasarkan kebalikan dari variabel dependen, apakah boleh menggunakan kode bobot = ~ (variabel dependen) saja di dalam lme?
- Mengapa aku ditulis untuk menangani bobot sama sekali berbeda dari aku? Apa tujuan dari ini selain untuk menghasilkan kebingungan?
Wawasan apa pun akan dihargai!
lm()
dibutuhkan untuk kompatibel dengan S dan berbagai buku, nlme tidak, dan itu bertujuan untuk menjadi lebih fleksibel, yang memungkinkan heterogenitas yang akan dimodelkan lebih fleksibel daripadalm
memungkinkan.Jawaban:
Q1
Dalams2( v ) s2( v ) = | v | v
lme
notasiweights = ~ b
akan menghasilkanvarFixed
fungsi varians yang digunakan dengan argumen tunggalb
. Fungsi ini akan menambah model fungsi varians yang memiliki bentuk, di mana mengambil nilai argumen vektor .b
Oleh karena itu, Anda harus menggunakanεsaya= 1 /bsaya
weights = ~ I(1/b)
dilme()
untuk memiliki varians dari .Dalam
lm
apa yang Anda lulusweights
tampaknya adalah kebalikan;weights
adalah berbanding lurus dengan varians.Saya tidak 100% yakin apa yang Anda maksud dengan berat data saya , tetapi jika Anda bermaksud memberikan varians yang heterogen dari pengamatan, maka saya pikir Anda menginginkannya
weights = ~ I(1/b)
.Q2
Perasaan saya (Anda harus bertanya kepada masing-masing penulis tentang dua fungsi) adalah bahwa ini adalah karena
lm()
danlme()
ditulis oleh orang yang sangat berbeda untuk melakukan hal yang sangat berbeda.lm()
diperlukan (yang diinginkan untuk menjadi) agar kompatibel dengan S dan berbagai buku, nlme tidak, dan itu bertujuan untuk menjadi lebih fleksibel, yang memungkinkan heterogenitas yang akan dimodelkan lebih fleksibel daripadalm
memungkinkan melalui penggunaan varians fungsi melaluivarFunc
infrastruktur.sumber
b
. Tampaknya lebih baik untuk mengatakan bahwa varians meningkat denganb
.varPower()
misalnya akan memiliki varians sebagai dengan mengestimasi parameter model. Ini OK jika tidak mengambil nilai 0. Jika dapat mengambil nilai 0, maka fungsinya mungkin lebih baik, variansnya adalah .b
varExp()
lm()
, perhatikan kata-kata bahwa varians sebanding dengan kebalikan dariweights
. Dalamlme
kode yang kita diskusikan,b
adalah varians. Mengikuti penjelasan Anda, saya tidak berpikir Anda benar-benar menginginkannya ... Juga perhatikan bahwa jika varians meningkat dengan respons rata-rata, maka GLMM mungkin sesuai dan paket lme4 akan cocok karena dapat memodelkan hubungan mean-variance secara langsung , alih-alih melalui modifikasi ke matriks kovarians - yang merupakanlme
kode lakukan.