我有一个数据集,其中有 18 个人口。每个种群中有几个个体,每个个体都有一个“颜色”调用。我只想在以人口为主要因素的单向方差分析中一次比较两个人口,以获得成对的 MS-within 和 MS-among。
我知道如何使用以下代码从综合方差分析中提取 MS:
mylm <- lm(Color ~ Pop, data=PopColor)
anova(mylm)[["Mean Sq"]]
首先产生受试者间 MS (PopColor$Pop),然后分别产生受试者间 MS (残差):
[1] 3.7079911 0.4536985
- 有没有一种方法可以创建一个循环来在所有人群之间进行所有成对的单向方差分析,然后提取 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))
任何帮助将不胜感激!谢谢!