Es scheint mir also, dass die Gewichtsfunktion in lm Beobachtungen umso mehr Gewicht verleiht, je größer der 'Gewicht'-Wert der zugehörigen Beobachtung ist, während die lme-Funktion in lme genau das Gegenteil bewirkt. Dies kann mit einer einfachen Simulation überprüft werden.
#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)
Wenn Sie jetzt ein Modell ausführen, bei dem Sie die Beobachtungen basierend auf der Umkehrung der abhängigen Variablen in lm gewichten, können Sie in nlme nur dann genau das gleiche Ergebnis erzielen, wenn Sie nur mit der abhängigen Variablen gewichten, ohne die Umkehrung vorzunehmen.
summary(lm(b~a,weights=1/b))
summary(lme(b~a,random=~1|c,weights=~b))
Sie können dies umdrehen und sehen, dass die Umkehrung wahr ist. Wenn Sie Gewichte = b in lm angeben, sind Gewichte = 1 / b erforderlich, um ein passendes lme-Ergebnis zu erhalten.
Also, ich verstehe so viel, ich möchte nur eine Sache validieren und eine Frage zu einer anderen stellen.
- Wenn ich meine Daten basierend auf der Umkehrung der abhängigen Variablen gewichten möchte, ist es in Ordnung, nur Gewichte = ~ (abhängige Variable) innerhalb von lme zu codieren?
- Warum ist ich so geschrieben, dass ich mit Gewichten ganz anders umgehen kann als ich? Was ist der andere Zweck als Verwirrung zu stiften?
Jeder Einblick wäre dankbar!
lm()
mit S und verschiedenen Büchern kompatibel sein, aber es zielte darauf ab, flexibler zu sein, sodass die Heterogenität flexibler modelliert werden konnte als eslm
erlaubt.Antworten:
Q1
Ins2(v) s2(v)=|v| v
lme
der Notationweights = ~ b
würde dievarFixed
Varianzfunktion mit alleinigem Argument verwendetb
. Diese Funktion würde dem Modell eine Varianzfunktion hinzufügen, die die Form, wobei die Werte des annimmt .b
Daher sollten Sieεi=1/bi
weights = ~ I(1/b)
inlme()
den haben Varianz von .In dem,
lm
was Sie passieren,weights
scheint das genaue Gegenteil zu sein;weights
ist umgekehrt proportional zur Varianz.Ich bin mir nicht 100% sicher, was Sie unter Gewicht meiner Daten verstehen , aber wenn Sie die heterogene Varianz der Beobachtungen angeben, dann denke ich, dass Sie es wollen
weights = ~ I(1/b)
.Q2
Mein Bauchgefühl (Sie müssten die jeweiligen Autoren der beiden Funktionen fragen) ist, dass dies falsch ist
lm()
undlme()
von sehr unterschiedlichen Leuten geschrieben wurde, um sehr unterschiedliche Dinge zu tun.lm()
erforderlich (wurde als gewünscht) mit S und verschiedenen Büchern kompatibel zu sein, nlme nicht, und es sollte flexibler sein, die Heterogenität ermöglichte flexibler modelliert werden alslm
durch die Verwendung von Varianz ermöglicht Funktionen über dievarFunc
Infrastruktur.quelle
b
. Es scheint besser zu sein, nur zu sagen, dass die Varianz mit zunahmb
.varPower()
Zum Beispiel hätte die Varianz als mit einen Modellparameter geschätzt. Dies ist in Ordnung, wenn keine 0-Werte angenommen werden. Wenn es 0 Werte annehmen kann, ist die Funktion möglicherweise besser, da die Varianz . δvar(εi)= σ 2×e2δ×bib
varExp()
lm()
beachten , die Formulierung , dass die Varianz proportional zu dem Kehrwertweights
. In demlme
Code, den wir besprochen haben,b
ist die Varianz. Nach Ihrer Erklärung glaube ich nicht, dass Sie das wirklich wollen ... Beachten Sie auch, dass, wenn die Varianz mit der mittleren Antwort zunimmt, ein GLMM geeignet sein kann und das lme4- Paket geeignet wäre, da es die mittlere Varianzbeziehung direkt modellieren kann anstatt durch Modifikation der Kovarianzmatrix - was derlme
Code tut.