r语言 - 估计均值双差的显著性

  • 本文关键字:r语言 r mean causality
  • 更新时间 :
  • 英文 :


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

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

我的问题是grp1grp2治疗的dv是否有统计学意义上的差异。在某种程度上,这是差异中的差异。我想估计一下以下差异是否显著:

dd = mean(dv_grp1_treat-dv_grp1_control)-mean(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"])

听起来你需要一个双向方差分析(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))

相关内容

  • 没有找到相关文章

最新更新