成对比较的效应大小(Cohen d)

时间:2020-08-24 08:51:48

标签: r statistics

我正在尝试计算不同因子水平之间的效应大小。为了比较每个因子水平下的两种均值,下面的代码可以正常工作:

cohens_d_list <- by(mydata, mydata$factor, function(sub) 
                       cohens_d(sub$score1, sub$score2)

                 )

cohens_d_list

但是,我无法弄清楚如何比较单个平均值的每个因子水平(例如,对于得分1,我想将每个因子水平彼此进行比较:因子水平1与因子水平2,因子水平1与。因子级别3,因子级别1与因子级别4 ....)彼此之间。我使用了psych,effectize和effsize程序包,但是它们似乎在单个因子变量中所占的比例似乎不超过2。对代码或软件包有任何建议吗?

2 个答案:

答案 0 :(得分:1)

您可以拟合模型并使用 eff_size() 中的 emmeans 函数(这将有利于使用 所有 组中的池化 SD,而不仅仅是 2比较):

m <- lm(mpg ~ factor(cyl), data = mtcars)

library(emmeans)

(em <- emmeans(m, ~ cyl))
#>  cyl emmean    SE df lower.CL upper.CL
#>    4   26.7 0.972 29     24.7     28.7
#>    6   19.7 1.218 29     17.3     22.2
#>    8   15.1 0.861 29     13.3     16.9
#> 
#> Confidence level used: 0.95

eff_size(em, sigma = sigma(m), edf = df.residual(m))
#>  contrast effect.size   SE df lower.CL upper.CL
#>  4 - 6           2.15 0.56 29    1.003     3.29
#>  4 - 8           3.59 0.62 29    2.320     4.86
#>  6 - 8           1.44 0.50 29    0.418     2.46
#> 
#> sigma used for effect sizes: 3.223 
#> Confidence level used: 0.95

reprex package (v2.0.0) 于 2021 年 6 月 7 日创建

答案 1 :(得分:0)

尝试了数十种程序包后,esvis程序包成功了。

df%>%
  ungroup(Group)%>% # Include this line if you get grouping error
coh_d(score1~ Group)

您会得到一个不错的表格,其中包含所有可能的比较。