我创建了一个类似下面的脚本来执行我称之为“加权”回归的事情:
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)
您可以看到在 中temp.df
,每一行都有其权重,我的意思是总共有 1178 个样本,但对于具有相同bp
和的行age
,它们合并为 1 行并在weight
列中表示。
我使用了weight
函数中的参数lm
,然后将结果与另一个数据框进行了交叉检查,该temp.df
数据框已“扩展”。但我发现lm
2 个数据帧的输出不同。
我是否误解了函数中的weight
参数lm
,任何人都可以让我知道如何正确地运行回归(即不手动扩展数据框)对于像这样呈现的数据集temp.df
?谢谢。