首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用模型按组复制均值

用模型按组复制均值
EN

Stack Overflow用户
提问于 2018-03-31 19:10:30
回答 1查看 115关注 0票数 1

我希望使用R中的统计模型复制简单计算每个组平均值的结果。

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

代码语言:javascript
复制
      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

其中VAR1VAR2是整数1:8 (组/或级别),EXIST = (0,1)

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

代码语言:javascript
复制
ag <- data.frame(as.matrix(aggregate(EXIST ~ VAR1 + VAR2, 
                                     data = dat, function(x) c(mean = mean(x)))))

现在,我想用模型(即lmglm等)复制这个结果,并获得与aggregate相同的结果。

因此,我将得到16个值的比率(VAR1 1:8和VAR 1:8)。

以下是我的尝试:

代码语言:javascript
复制
tmp <- with(d,
        by(d, VAR1,
           function(x) lm(EXIST ~ VAR2 + VAR1 , data = dat)))

我被告知模型应该是lm(EXIST ~ VAR1 * VAR2, data=dat)

那么,我如何复制计算每一个变量因子的平均值的aggregate function呢?(为什么要问?嗯,我想知道怎么用模特儿来做)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-31 19:20:17

您需要更加努力地获得R来分别处理每个组:相关公式是VAR1:VAR2-1 (只包括交互:,而不是主要效果:VAR1*VAR2对应于VAR1+VAR2+VAR1:VAR2;使用-1从模型中删除拦截)。

样本数据:

代码语言:javascript
复制
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)))

请注意,需要将分组变量作为因素。

拟合模型和提取系数:

代码语言:javascript
复制
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 

检查第一组:

代码语言:javascript
复制
mean(subset(dd,VAR1=="1" & VAR2=="1")$EXIST)  ## 0.266667
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49591430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档