dplyr中的多个分组差异

问题描述 投票:0回答:1

目标

目前我只报告我在下面显示的计算方法,但我想添加置信区间。

如果我的数据格式正确,我就不会使用线性回归lm()来计算估计的分组差异及其间隔,但我很难以正确的格式获取数据。

这是一些数据:

假数据

> set.seed(909)
> d2017pre <- tibble(n = rnorm(25, mean = 1100, sd = 10),period = "pre", year = 2017)
> d2016pre <- tibble(n = rnorm(25, mean = 1500, sd = 10),period = "pre", year = 2016)
> d2017post <- tibble(n = rnorm(25, mean = 1000, sd = 10),period = "post", year = 2017)
> d2016post <- tibble(n = rnorm(25, mean = 900, sd = 10),period = "post", year = 2016)
> df <- bind_rows(d2017pre,d2016pre,d2017post,d2016post)


> df %>% group_by(year,period) %>% summarise(mean(n))
# A tibble: 4 x 3
# Groups: year [?]
   year period `mean(n)`
  <dbl> <chr>      <dbl>
1  2016 post         899
2  2016 pre         1498
3  2017 post         999
4  2017 pre         1104

背景

这些是我经常做的三个计算。

> # pre - post 2016
> pp16 <- 1498 - 899
> pp16
[1] 599
> 
> # pre - post 2017
> pp17 <-1100 - 999
> pp17
[1] 101
> 
> # net of control: pp2016 - pp2017 
> noc <- pp16 - pp17
> noc
[1] 498

这个答案的问题是:

  1. prepost20162017时期之间有什么区别
  2. 2017s前/后差异大于2016s前/后差异。

我想回答这些问题,不仅仅是估算,还有置信区间。如上所述,我正在计划使用lm()来获得差异的置信区间,但我很难以正确的格式获取数据。

我相信这需要两个数据集。一个用于表示年份中的时间差异,一个用于差异的差异(净控制)。这导致以下问题。

问题

  1. 我如何计算nperiod分组的year的差异?
  2. 如何计算差异的差异?
r dplyr linear-regression
1个回答
1
投票

首先,你可以使用另一个group_by获得差异。

diffs <- df %>% 
  group_by(year, period) %>% 
  summarise(mean = mean(n)) %>%
  group_by(year) %>%
  summarise(diff = diff(mean))

# A tibble: 2 x 2
   year  diff
  <dbl> <dbl>
1  2016   599
2  2017   105

差异的差异是相似的,那么(坏名称空间可能......)

diff(rev(diffs$diff))

[1] 493.8846

对于回归,您实际上不需要更改数据帧 - 需要数据来计算效果。我想(但不确定我是否理解正确)您正在寻找具有互动效果的模型?

EG,

m1 <- lm(n ~ period + factor(year) + period*factor(year), data = df)
summary(m1)

注意交互效果基本上是如何区别的

© www.soinside.com 2019 - 2024. All rights reserved.