r - eta平方是如何计算的?

标签 r anova

我想知道这张幻灯片中的 eta 平方是如何计算的。 我认为这是组间变异与总平方和的比率。

我尝试重现他们的数据,然后计算 eta 平方。但我最终得到了不同的结果。

G1 <- c(6.3, 2.8, 7.8, 7.9, 4.9)
G2 <- c(9.9, 4.1, 3.9, 6.3, 6.9)
G3 <- c(5.1, 2.9, 3.6, 5.7, 4.5)
G4 <- c(1.0, 2.8, 4.8, 3.9, 1.6)

n1 <- length(G1); n2 <- length(G2); n3 <- length(G3); n4 <- length(G4)

m1 <- sum(G1)/n1; m2 <- sum(G2)/n2; m3 <- sum(G3)/n3; m4 <- sum(G4)/n4
Gmean <- sum(c(G1,G2,G3,G4))/(n1 + n2 + n3 + n4)

SSb <- n1*((m1-Gmean)^2) + n2*((m2-Gmean)^2) + n3*((m3-Gmean)^2) + n4*((m4-Gmean)^2)

S1 <- var(G1); S2 <- var(G2); S3 <- var(G3); S4 <- var(G4)
SSw <- (n1-1)*S1 + (n2-1)*S2 + (n3-1)*S3 + (n4-1)*S4

SSt <- SSb + SSw

我的公式可能是错误的。

enter image description here

最佳答案

幻灯片似乎有误。我使用两种方法计算 eta2 只是为了确保我没有遗漏某些内容,并且它们会显示与您的幻灯片不同的相似结果。因此,如果我犯了错误,我会用两种方法都犯错误。

G1 <- c(6.3, 2.8, 7.8, 7.9, 4.9)
G2 <- c(9.9, 4.1, 3.9, 6.3, 6.9)
G3 <- c(5.1, 2.9, 3.6, 5.7, 4.5)
G4 <- c(1.0, 2.8, 4.8, 3.9, 1.6)

#method 1 (sum of squares as sum of squared deviations):
n1 <- n2 <- n3 <- n4 <- 5

m1 <- sum(G1) / n1
m2 <- sum(G2) / n2
m3 <- sum(G3) / n3
m4 <- sum(G4) / n4

Gmean <- sum(c(G1, G2, G3, G4)) / (n1 + n2 + n3 + n4)

SSb <- n1 * ((m1 - Gmean)^2) + 
  n2 * ((m2 - Gmean)^2) + 
  n3 * ((m3 - Gmean)^2) + 
  n4 * ((m4 - Gmean)^2)

SSw <- sum((G1 - m1)^2) + sum((G2 - m2)^2) + sum((G3 - m3)^2) + sum((G4 - m4)^2)
SSt <- SSb + SSw
eta2 <- SSb / SSt # 0.3935058

#method 2 (sum of squares as differences between sum of squares):
Y <- sum(c(G1, G2, G3, G4)^2)
A <- m1^2*n1 + m2^2*n2 + m3^2*n1 + m4^2*n2
Te <- Gmean^2*sum(n1, n2, n3, n4)

SSW <- Y-A
SSB <- A-Te
SST <- Y-Te
eta2_n <- SSB/SST # 0.3935058

直接在 R 中进行方差分析时,我得到相同的结果:

data <- data.frame(program = rep(c("G1", "G2", "G3", "G4"), each = 5),
                   weight_loss = c(6.3, 2.8, 7.8, 7.9, 4.9,
                                   9.9, 4.1, 3.9, 6.3, 6.9,
                                   5.1, 2.9, 3.6, 5.7, 4.5,
                                   1.0, 2.8, 4.8, 3.9, 1.6))

model <- aov(weight_loss ~ program, data = data)
summary(model)

            Df Sum Sq Mean Sq F value Pr(>F)  
program      3  37.13  12.375    3.46 0.0414 *
Residuals   16  57.22   3.576   

summary(model)[[1]][["Sum Sq"]][1]/sum(summary(model)[[1]][["Sum Sq"]])
# 0.3935058

关于r - eta平方是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77102689/

相关文章:

r - `plot_ly` 的线条和标记的自定义颜色问题

使用查找表 dplyr 替换字符串

r - 使用 ggplot2 和 dplyr 编程

r - 对 R 中一个因子的每个单独水平执行方差分析

r - 在 R 中使用 Kolmogorov Smirnov 检验

r - 如何更改 R 中 Tukey 测试中的样本顺序?

r - R : table vs == 中的数据一致性

r - 从 R 中的列表中提取向量

r - 与方差分析一起替代r

r - 如何为 lm() 设置平衡单向方差分析