我正在阅读的统计书推荐使用欧米茄平方来衡量我的实验效果。我已经使用裂区设计(受试者内和受试者间设计的混合)证明了我的受试者内因素在 p<0.001 和 F=17 时具有统计学意义。
现在我想看看有多大的区别......有没有在某个地方为 R(或 python)实现 omega squared?我知道......一个人可以梦想;)在互联网上搜索与 R 相关的东西是一个痛苦*,我不知道我如何设法用 C 找到东西。
谢谢!
我正在阅读的统计书推荐使用欧米茄平方来衡量我的实验效果。我已经使用裂区设计(受试者内和受试者间设计的混合)证明了我的受试者内因素在 p<0.001 和 F=17 时具有统计学意义。
现在我想看看有多大的区别......有没有在某个地方为 R(或 python)实现 omega squared?我知道......一个人可以梦想;)在互联网上搜索与 R 相关的东西是一个痛苦*,我不知道我如何设法用 C 找到东西。
谢谢!
计算欧米茄平方的函数很容易编写。该函数取 aov 测试返回的对象,并计算并返回和 omega 平方:
omega_sq <- function(aovm){
sum_stats <- summary(aovm)[[1]]
SSm <- sum_stats[["Sum Sq"]][1]
SSr <- sum_stats[["Sum Sq"]][2]
DFm <- sum_stats[["Df"]][1]
MSr <- sum_stats[["Mean Sq"]][2]
W2 <- (SSm-DFm*MSr)/(SSm+SSr+MSr)
return(W2)
}
编辑:n-way aov 模型的更新功能:
omega_sq <- function(aov_in, neg2zero=T){
aovtab <- summary(aov_in)[[1]]
n_terms <- length(aovtab[["Sum Sq"]]) - 1
output <- rep(-1, n_terms)
SSr <- aovtab[["Sum Sq"]][n_terms + 1]
MSr <- aovtab[["Mean Sq"]][n_terms + 1]
SSt <- sum(aovtab[["Sum Sq"]])
for(i in 1:n_terms){
SSm <- aovtab[["Sum Sq"]][i]
DFm <- aovtab[["Df"]][i]
output[i] <- (SSm-DFm*MSr)/(SSt+MSr)
if(neg2zero & output[i] < 0){output[i] <- 0}
}
names(output) <- rownames(aovtab)[1:n_terms]
return(output)
}
我最近不得不报告一个。
partialOmegas <- function(mod){
aovMod <- mod
if(!any(class(aovMod) %in% 'aov')) aovMod <- aov(mod)
sumAov <- summary(aovMod)[[1]]
residRow <- nrow(sumAov)
dfError <- sumAov[residRow,1]
msError <- sumAov[residRow,3]
nTotal <- nrow(model.frame(aovMod))
dfEffects <- sumAov[1:{residRow-1},1]
ssEffects <- sumAov[1:{residRow-1},2]
msEffects <- sumAov[1:{residRow-1},3]
partOmegas <- abs((dfEffects*(msEffects-msError)) /
(ssEffects + (nTotal -dfEffects)*msError))
names(partOmegas) <- rownames(sumAov)[1:{residRow-1}]
partOmegas
}
这是一个很容易清理的杂乱功能。它计算部分,并且可能只应用于主体间因子设计。
我在某人的 .Rprofile 中发现了一个欧米茄平方函数,他们在网上提供了该函数:
http://www.estudiosfonicos.cchs.csic.es/metodolo/1/.Rprofile
我建议将广义 eta 平方视为(ref,ref)更合适的效果大小度量。它包含在R的ez 包的 ANOVA 输出中。