我正在尝试计算不同因子水平之间的效应大小。为了比较每个因子水平下的两种均值,下面的代码可以正常工作:
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。对代码或软件包有任何建议吗?
答案 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)
您会得到一个不错的表格,其中包含所有可能的比较。