我创建了一个脚本,如下面的人做的东西我称之为“加权”回归:在R“加权”回归
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
被“膨胀”检查结果。但是我发现2个数据帧的输出不同lm
。
难道我误解在lm
功能weight
参数,任何人都可以让我知道我如何运行回归正常(即无需手动扩展数据帧)为呈现像temp.df
数据集呢?谢谢。
这两个回归对我来说产生相同的结果。 – 2012-04-22 14:25:55
查看'summary'输出,它们不同 – lokheart 2012-04-22 14:26:49
系数相同,但p值确实不同。我猜想会发生以下情况。当你扩展数据时,观察被认为是独立的:由于有大量数据,你可以对估计非常有信心,并且P值低。当使用权重时,观测值的数量仍然很小,并且p值很高。 – 2012-04-22 14:32:57