Argumen bobot dalam lm dan lme sangat berbeda dalam R-apakah saya menggunakannya dengan benar?

8

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.

  1. Jika saya ingin memberi bobot pada data saya berdasarkan kebalikan dari variabel dependen, apakah boleh menggunakan kode bobot = ~ (variabel dependen) saja di dalam lme?
  2. Mengapa aku ditulis untuk menangani bobot sama sekali berbeda dari aku? Apa tujuan dari ini selain untuk menghasilkan kebingungan?

Wawasan apa pun akan dihargai!

colin
sumber
1
Jawaban 2. adalah bahwa mereka ditulis oleh orang yang sangat berbeda untuk melakukan hal yang sangat berbeda. 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 daripada lmmemungkinkan.
Gavin Simpson

Jawaban:

12

Q1

Dalam lmenotasi weights = ~ bakan menghasilkan varFixedfungsi varians yang digunakan dengan argumen tunggal b. Fungsi ini akan menambah model fungsi varians yang memiliki bentuk, di mana mengambil nilai argumen vektor .s2(v)s2(v)=|v|vb

Oleh karena itu, Anda harus menggunakan weights = ~ I(1/b)di lme()untuk memiliki varians dari .εsaya=1/bsaya

Dalam lmapa yang Anda lulus weightstampaknya adalah kebalikan; weightsadalah 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()dan lme()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 daripada lmmemungkinkan melalui penggunaan varians fungsi melalui varFuncinfrastruktur.

Gavin Simpson
sumber
Ini cukup jelas. Dengan 'menimbang data saya', maksud saya, saya ingin model tersebut sesuai untuk mempertimbangkan bahwa residu besar harus diharapkan dari pengamatan besar, dan mencocokkan sesuatu yang mirip dengan persentase kuadrat terkecil, daripada kuadrat terkecil. JUGA- Saya menghapus pos lintas pada stack overflow, maaf!
colin
Anda mungkin ingin melihat fungsi varians lain di nlme lalu. Apa yang Anda lakukan adalah mengatakan bahwa variasi pengamatan Anda persis dengan nilai (absolut) dari b. Tampaknya lebih baik untuk mengatakan bahwa varians meningkat dengan b. 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 . σ^2×|b|2δδbvarExp()vSebuahr(εsaya)=σ^2×e2δ×bsaya
Gavin Simpson
Dalam lm(), perhatikan kata-kata bahwa varians sebanding dengan kebalikan dari weights. Dalam lmekode 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 merupakan lmekode lakukan.
Gavin Simpson
Akhirnya, maaf jika saya terdengar pemarah di Stack Overflow . Itu tidak disengaja. Saya hanya lupa bahwa Anda tidak dapat memilih untuk ditutup karena OT & bermigrasi ke Cross Validated . Anda harus meninggalkan komentar mengapa, tetapi saya sudah meninggalkan komentar pertama. Jangan memilih situs SE untuk pertanyaan Anda berdasarkan jumlah mata yang akan melihatnya. Pilih tempat yang paling tepat. Tidak ada yang salah dengan mempromosikan pertanyaan Anda pada Cross Validated untuk mendapatkan lebih banyak mata, Anda bahkan dapat memposting tautannya di Ruang Obrolan Publik R di Stack Overflow . Crossposting atau memposting pertanyaan PL melemahkan sumber daya jika kita memiliki terlalu banyak, maka suara dekat dll.
Gavin Simpson