Regressão “ponderada” em R
Eu criei um script como o abaixo para fazer algo que chamei de regressão "ponderada":
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)
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.