Regressão “ponderada” em R
Eu criei um script como o abaixo para fazer algo que chamei de regressão "ponderada":
<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>
Você pode ver isso emtemp.df
, cada linha tem seu peso, o que quero dizer é que há um total de 1178 amostras, mas para linhas com o mesmobp
eage
, eles são mesclados em uma linha e representados noweight
coluna.
Eu usei oweight
parâmetros nolm
função, então eu cruzar o resultado com outro dataframe que otemp.df
O dataframe é "expandido". Mas eu encontrei olm
saídas diferentes para o 2 dataframe.
Eu interpretei mal oweight
parâmetros emlm
função, e alguém pode me deixar saber como executar a regressão corretamente (ou seja, sem expandir o dataframe manualmente) para um conjunto de dados apresentado comotemp.df
? Obrigado.