估计均值双重差异的显着性

Estimate significance of double difference in means

这可能是一个微不足道的问题。

在我的数据中,我有两组 grp1grp2。在每个组中,我将一些观察结果分配给治疗组,将一些观察结果分配给对照组。

我的问题是 grp1grp2 的治疗 dv 是否存在统计学上的显着差异。从某种意义上说,这是差异中的差异。 我想估计以下差异是否显着:

dd = 均值(dv_grp1_treat-dv_grp1_control)-均值(dv_grp2_treat-dv_grp2_control)

# create data
install.packages("librarian")
librarian::shelf(librarian,tidyverse,truncnorm)
aud_tr<- as.data.frame(list(avglist=rtruncnorm(625, a=0,b=4, mean=2.1, sd=1))) %>% mutate(group="grp1_tr")
aud_notr <- as.data.frame(list(avglist=rtruncnorm(625, a=0,b=4, mean=2, sd=1))) %>% mutate(group="grp1_notr")
noaud_tr<- as.data.frame(list(avglist=rtruncnorm(625, a=0,b=4, mean=2.4, sd=1))) %>% mutate(group="grp2_tr")
noaud_notr<- as.data.frame(list(avglist=rtruncnorm(625, a=0,b=4, mean=2.1, sd=1))) %>% mutate(group="grp2_notr")
df<- bind_rows(aud_tr,aud_notr,noaud_tr,noaud_notr)
unique(df$group)
[1] "grp1_treat"   "grp1_control" "grp2_treat"   "grp2_control"

我知道如何 运行 t.test 了解每组之间的均值差异,但是如果我想检查各组之间的差异,我该怎么做?

t.test(df$dv[df$group=="grp1_treat"],df$dv[df$group=="grp1_control"])
t.test(df$dv[df$group=="grp2_treat"],df$dv[df$group=="grp2_control"])

听起来您需要 two-way 方差分析 (ANOVA)。首先,您应该确保将“群体成员资格”和“治疗与对照”分成两列,因为它们实际上是两个不同的变量:

df$treatment <- ifelse(grepl('treat', df$group), 'treat', 'control')
df$group     <- ifelse(grepl('1', df$group), 'grp1', 'grp2')

然后您可以使用 aov

进行双向方差分析
summary(aov(dv ~ group + treatment, data = df))
#>              Df Sum Sq Mean Sq F value   Pr(>F)    
#> group         1   1.18   1.175   1.362    0.245    
#> treatment     1  26.14  26.145  30.307 1.14e-07 ***
#> Residuals   197 169.95   0.863                     
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

这告诉你,在这个样本中,处理的效果很显着,但组成员的效果却不是


数据

显然,我们没有您的数据,因为问题中没有提供,但以下示例数据框的名称和结构与您自己的相同:

set.seed(1)

df <- data.frame(dv = c(rnorm(50, 3.2), rnorm(50, 3.8), 
                        rnorm(50, 3.5), rnorm(50, 4.1)),
                 group = rep(c('grp1_control', 'grp1_treat', 
                               'grp2_control', 'grp2_treat'), each = 50))