目前我只报告我在下面显示的计算方法,但我想添加置信区间。
如果我的数据格式正确,我就不会使用线性回归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
回答的问题是:
pre
或post
2016
和2017
期间有何区别?
2017
的前/后差异大于2016
之前/之后的差异。
我想回答这些问题不仅包括估算,还包括置信区间。如上所述,我正在计划使用lm()
来获得差异的置信区间,但我很难以正确的格式获取数据。
我认为这需要两个数据集。一个用于表示年份中的时间差异,一个用于差异的差异(净控制)。这导致了以下问题。
如何计算按n
和period
分组的year
的差异?
如何计算差异的差异?
答案 0 :(得分: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
对于回归,您实际上不需要更改数据框 - 需要数据来计算效果。我认为(但不确定我是否理解正确)你正在寻找具有互动效果的模型?
如,
m1 <- lm(n ~ period + factor(year) + period*factor(year), data = df)
summary(m1)
注意交互效果基本上是那种差异