R 用模型按组复制平均值

R 用模型按组复制平均值,r,R,我想用R中的统计模型复制每组平均值的简单计算结果 以下是我正在处理的数据: EXIST DATE VAR1 VAR2 1 0 10/2015 6 4 2 0 01/2016 6 4 3 0 01/2014 5 4 4 1 05/2015 5 4 5 0 11/2015 6 4 其中,VAR1,VAR2是整数1:8(组/或级别),并且存在=

我想用
R
中的统计模型复制每组平均值的简单计算结果

以下是我正在处理的数据:

      EXIST    DATE VAR1 VAR2
    1     0 10/2015    6    4
    2     0 01/2016    6    4
    3     0 01/2014    5    4
    4     1 05/2015    5    4
    5     0 11/2015    6    4
其中,
VAR1
VAR2
是整数1:8(组/或级别),并且
存在
=(0,1)

我只需计算每个变量的平均值:

ag <- data.frame(as.matrix(aggregate(EXIST ~ VAR1 + VAR2, 
                                     data = dat, function(x) c(mean = mean(x)))))
我被告知模型应该是
lm(EXIST~VAR1*VAR2,data=dat)


那么,我如何复制计算每个变量因子平均值的聚合函数?(为什么问?嗯,我想知道如何使用model)

您需要更加努力地让R分别对待每个组:相关公式是
VAR1:VAR2-1
(只包括交互作用
,而不包括主要影响:
VAR1*VAR2
对应于
VAR1+VAR2+VAR1:VAR2
;使用
-1
从模型中删除截距)

样本数据:

set.seed(101)
dd <- data.frame(EXIST=rbinom(1000,size=1,prob=0.3),
                 VAR1=factor(sample(1:8,size=1000,replace=TRUE)),
                 VAR2=factor(sample(1:8,size=1000,replace=TRUE)))
检查第一组:

mean(subset(dd,VAR1=="1" & VAR2=="1")$EXIST)  ## 0.266667

aggregate
的结果是
VAR1
VAR2
的所有组合的平均值(
nrow(ag)
是64…),你说得对!我想我把这里的每个人都搞糊涂了,包括我自己。问题是我现在没有可用的数据(用于输出聚合计算),所以我错误地记住它可能是64。您发布的解决方案确实正确。好的,取消删除。。。
head(coef(lm(EXIST~VAR1:VAR2-1,data=dd)))
## VAR11:VAR21 VAR12:VAR21 VAR13:VAR21 VAR14:VAR21 VAR15:VAR21 VAR16:VAR21 
## 0.2666667   0.2307692   0.5714286   0.1176471   0.3846154   0.1333333 
mean(subset(dd,VAR1=="1" & VAR2=="1")$EXIST)  ## 0.266667