„Ważona” regresja w R
Stworzyłem skrypt podobny do poniższego, aby zrobić coś, co nazwałem regresją „ważoną”:
<code>library(plyr) set.seed(100) temp.df <- data.frame(uid=1:200, bp=sample(x=c(100:200),size=200,replace=TRUE), age=sample(x=c(30:65),size=200,replace=TRUE), weight=sample(c(1:10),size=200,replace=TRUE), stringsAsFactors=FALSE) temp.df.expand <- ddply(temp.df, c("uid"), function(df) { data.frame(bp=rep(df[,"bp"],df[,"weight"]), age=rep(df[,"age"],df[,"weight"]), stringsAsFactors=FALSE)}) temp.df.lm <- lm(bp~age,data=temp.df,weights=weight) temp.df.expand.lm <- lm(bp~age,data=temp.df.expand) </code>
Możesz to zobaczyć wtemp.df
, każdy wiersz ma swoją wagę, mam na myśli to, że jest w sumie 1178 próbek, ale dla wierszy z tym samymbp
iage
, są scalane w 1 wiersz i reprezentowane wweight
kolumna.
Użyłemweight
parametry wlm
funkcji, a następnie sprawdzam wynik z inną ramką danych, którątemp.df
ramka danych jest „rozwinięta”. Ale znalazłemlm
wyjścia różne dla 2 ramek danych.
Czy źle zinterpretowałemweight
parametry wlm
funkcji i czy ktoś może mi powiedzieć, jak prawidłowo uruchomić regresję (tj. bez ręcznego rozwijania ramki danych) dla prezentowanego zestawu danychtemp.df
? Dzięki.