我很难回到 emmeans 包给出的“CL”值。
我的第一个目标是进行一种功率研究:我正在研究植物,我想看看我可以在下个季节改进多少实验设计,以便在我的基因型之间产生更显着的差异。我的基因型是重复的,这被用作阻止因素。我想玩重复次数(假设均值和残差 SE 保持不变)。最后,我想在预算问题和统计能力之间找到一个折衷方案。
我正在考虑查看置信区间 (CI),记住如果两种基因型的 CI 至少包含一个共同值,那么这两种基因型没有显着差异。所以我想看看在玩重复次数时我能减少多少 CI。
我对使用 Tukey 方法进行多重比较的 CI 计算的猜测是:
μi ± (σ/(2*√(ni)))*q
μi 是第 i 个基因型的平均值
ni 第 i 个基因型的观察次数,
σ 残差标准误差和
q 以 t(基因型的数量)和 dfE(残差的自由度)作为 α = 0.05 的参数的学生化范围统计
这相当于:
μi ± (SEi*q)/2
SEi 是第 i 个基因型的标准误
这是一个包含 6 个基因型和 3 个重复的小示例数据集以及我运行的代码:
library(emmeans)
# import DF
df <- structure(list(Geno = structure(c(6L, 3L, 2L, 1L, 4L, 5L, 2L,
4L, 5L, 1L, 3L, 6L, 2L, 3L, 1L, 5L, 6L, 4L),
.Label = c("A", "B", "C", "D", "E", "F"),
class = "factor"), variable = c(2.279628571, 3.925157143, 3.089, 2.26, 2.503,
2.495114286, 2.867166667, 3.069238095, 3.884285714, 3.409595238,
3.710714286, 1.763142857, 2.865285714, 4.219214286, 3.263452381,
3.359428571, 2.335285714, 2.443),
Rep = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L),
.Label = c("1", "2", "3"), class = "factor")), .Names = c("Geno", "variable", "Rep"),
row.names = c(NA, 18L), class = "data.frame")
# Number of observation
N <- nrow(df)
# Number of treatments
t <- nlevels(df$Geno)
# Define the model
model <- lm(data=df, variable ~ Geno + Rep)
# Compute means and confidence intervals
E_means <- as.data.frame(emmeans(model, pairwise~Geno)$emmean)
# Extract Standard Errors
se <- E_means[,"SE"]
# Studentized range statistic
q <- qtukey(0.95, nmeans=t, df=E_means[,"df"])
expected_CI <- se*q/2
emmeans_CI <- ((E_means[,"upper.CL"] - E_means[,"lower.CL"])/2)
print(expected_CI)
print(emmeans_CI)
请注意,大部分时间我都在处理不平衡的数据(所以我对每种基因型都有不同的 SE)。我想首先说明一个简单(=平衡)的情况。
到目前为止,对于我所做的每个测试,expected_CI 和 emmeans_CI 总是不同的(差别不大,但仍然不同),所以我想我的计算方式与 emmeans 包不同。所以这是我的问题:它是如何在 emmeans 包中完成的?
任何帮助将非常感激 !