Ponderat Least Square (Programare, R, Regresie)

user1671537 a intrebat.

Vreau să fac o regresie a y~x (doar 1 variabilă dependentă și 1 variabilă independentă) dar am heteroskedasticitate. Variabilitatea lui y crește pe măsură ce crește x. Pentru a face față, aș dori să folosesc metoda celor mai mici pătrate ponderate prin intermediul "gls()" funcție din R.

Dar trebuie să recunosc că nu înțeleg cum să o folosesc. Trebuie să aplic o funcție de varianță la argumentul „weights” al funcției gls funcției. Dar nu știu pe care să o aleg și cum să o folosesc.

1 răspunsuri
Chrismit

Iată un exemplu de a avea grijă de datele de tip poisson count like în care variația va fi proporțională cu media (ceea ce se pare că aveți).

fit = lm (y ~ x, data=dat,weights=(1/dat$x^2))

Folosești recipricolul ca pondere, deoarece vei înmulți valorile. Pentru a avea grijă de datele de numărare Poisson, o pătrați pentru că varianța are unități la pătrat. Puteți face ceva de genul:

fit = lm (y ~ x, data=dat,weights=(1/dat$x))

Pentru a scala pur și simplu cu valoarea x și a vedea ce funcționează mai bine.

Comentarii

  • Cum pot evalua dacă funcționează mai bine. Valoarea returnată de testul Bartlett este aceeași cu și fără argumentul „weights”. Iată codul meu: a2=read.table(„total37.txt”,header=TRUE) m1=lm(Res~ModeF, a2, weights=1/a2$ModeF^2) m2=lm(Res~ModeF, a2) bartlett.test(residuals(m1)~a2$ModeF)) Datele testului Bartlett: reziduuri(m1) și a2$ModeF K pătrat Bartlett = 35,2706, df = 11, valoare p = 0,0002236 bartlett.test(reziduuri(m2)~a2$ModeF))) Datele testului Bartlett: reziduuri(m2) și a2$ModeF K-squared Bartlett = 35.2706, df = 11, p-valoare = 0.0002236 –  > Por user1671537.

Tags:,