【发布时间】:2013-06-23 21:20:09
【问题描述】:
我有一个数据集,其中有 18 个人口。每个种群中有几个个体,每个个体都有一个“颜色”调用。我只想在以人口为主要因素的单向方差分析中一次比较两个人口,以获得成对的 MS-within 和 MS-among。
我知道如何使用以下代码从综合 ANOVA 中提取 MS:
mylm <- lm(Color ~ Pop, data=PopColor)
anova(mylm)[["Mean Sq"]]
先产生主体间 MS (PopColor$Pop),然后分别产生主体间 MS (残差):
[1] 3.7079911 0.4536985
- 有没有一种方法可以创建一个 do-loop 以在所有人群之间进行所有成对单向 ANOVA,然后提取 MS 之间和内部?
- 然后,我想将每个比较中的两个 MS 值移动到它们自己的对称矩阵中:一个按人口标记的受试者间 MS 矩阵,一个按人口标记的受试者内 MS 矩阵。这些将具有与人口名称相同的列名和行名。
以下是我的六个人口数据的子集:
dput(dat)
structure(list(Pop = structure(c(6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("pop1001", "pop1026",
"pop252", "pop254a", "pop311", "pop317"), class = "factor"),
Color = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L,
3L, 3L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 3L, 3L, 2L, 3L, 2L,
3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 3L, 3L, 2L, 3L, 3L, 2L,
3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 4L,
2L, 3L, 2L, 4L, 3L, 3L, 2L, 3L, 2L, 3L, 3L, 4L, 3L, 2L, 4L,
4L, 1L, 2L, 2L, 2L, 2L, 1L, 3L, 2L, 3L, 2L, 3L, 3L, 3L, 3L,
2L, 3L, 4L, 2L, 2L, 4L, 3L)), .Names = c("Pop", "Color"), class = "data.frame", row.names = c(NA,
-94L))
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
欢迎来到 SO。我格式化了一点你的问题。请阅读有关如何格式化您的问题的 SO 帮助。格式良好的问题通常会得到最佳答案。
-
感谢您重新格式化我的问题 agstudy!
-
您最好使用
multcomp包,它也可以纠正多重比较。 -
@hadley 是的,我将在通用/综合方差分析模型中添加一个 bonferroni 校正。现在我只需要 MS,多重比较校正只会改变 F 显着性的临界值,不会改变实际的 MS 值。但是谢谢 - 我会研究 multcomp 包。
标签: r statistics anova do-loops mean-square-error