这个问题已在stats.stackexchange上提出,但没有人回答。由于我不确定哪个论坛是合适的论坛,我在此再次发布一些数据。
我已经对树皮的各种特性进行了实验,现在想比较五个被检查树种在评估参数方面的差异。因此,建议我应该使用MANOVA分析我的数据,这对我来说似乎很合理。我的分析是在R
中进行的。
但是,与我发现的如何进行MANOVA(即here,here,here)的大多数示例不同,我的数据来自不同的测量来自不同的人。现在,我发现只有this个线程在讨论不相等的样本量,但这只针对解释因素内的样本量。
为进一步说明,假设我有每个树种 ...
当然,我可以对每个变量进行独立的方差分析(并且已经这样做),但是我认为MANOVA应该有一些优势,对吧?
MANOVA是否适合此类数据?我可以忽略不同的变量大小吗?有替代方法可以执行此操作,还是可以替代统计检验?我的小样本数量重要吗?
在R
中,我只是将所有变量放入一个data.frame
中,并由于NA
s样本大小不相等而填充了缺失值(这就是为什么{{1} }列在下面的nums
中)。然后,我运行了一个像这样的MANOVA:data.frame
和pH + water content + thickness + roughness ~ tree species
函数。
manova
如下所示(其中manova_df = structure(list(abbr = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L), .Label = c("AS", "BU", "CL", "MB", "PR"
), class = "factor"), nums = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 1L, 2L, 3L, 4L,
5L, 6L, 7L, 8L, 9L), comb_rugosity = c(3.44, 2.29, 5.21, 1.45,
2.84, 4.25, 1.54, 2.97, 1.38, 2.45, 9.44, 0, 0.58, 7.71, 5.53,
0.84, 1.22, 1, 10.83, 15.77, 5.5, 8.49, 10.46, 9.16, 5.52, 6.55,
1.77, 10.68, 13.43, 20.8, 8.82, 18.09, 15.1, 15.41, 16.3, 13.2,
2.67, 0.95, 1.49, 2.7, 0, 0.92, 0.83, 0, 1.89), bark_mm = c(9.59,
4.17, 17.23, 8.49, 3.58, NA, NA, NA, NA, 8.06, 13.53, 6.33, 10.96,
12.14, NA, NA, NA, NA, 17.94, 7.33, 10.54, 14.68, 16.66, NA,
NA, NA, NA, 8.52, 8.72, 7.57, 11.89, 6.41, NA, NA, NA, NA, 2.59,
9, 3.26, 5.81, NA, NA, NA, NA, NA), pH = c(6.5, 7.33, 8.17, NA,
NA, NA, NA, NA, NA, 7.84, 3.71, 12.47, 4.39, NA, NA, NA, NA,
NA, 11.04, 6.22, 5.41, 4.29, NA, NA, NA, NA, NA, 9.26, 11.18,
6.3, NA, NA, NA, NA, NA, NA, 8.42, 7.75, 4.33, NA, NA, NA, NA,
NA, NA), whc = c(192, 251, 166, 170, 466, NA, NA, NA, NA, 308,
187, 595, 324, 364, NA, NA, NA, NA, 171, 406, 790, 292, 579,
NA, NA, NA, NA, 672, 251, 700, 245, 260, 485, 383, NA, NA, 325,
481, 338, 476, 968, NA, NA, NA, NA), ret = c(83, 90, 286, 309,
374, NA, NA, NA, NA, 109, 159, 98, 164, 636, NA, NA, NA, NA,
144, 234, 383, 178, 446, NA, NA, NA, NA, 275, 56, 178, 107, 125,
367, 137, NA, NA, 132, 120, 142, 147, 330, NA, NA, NA, NA)), row.names = c(NA,
-45L), class = c("tbl_df", "tbl", "data.frame"))
是树种,abbr
是每个树种的测量数量,其余是树参数):
nums
我的分析非常简单:
> manova_df
# A tibble: 45 x 7
abbr nums comb_rugosity bark_mm pH whc ret
<fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AS 1 3.44 9.59 6.5 192 83
2 AS 2 2.29 4.17 7.33 251 90
3 AS 3 5.21 17.2 8.17 166 286
4 AS 4 1.45 8.49 NA 170 309
5 AS 5 2.84 3.58 NA 466 374
6 AS 6 4.25 NA NA NA NA
7 AS 7 1.54 NA NA NA NA
8 AS 8 2.97 NA NA NA NA
9 AS 9 1.38 NA NA NA NA
10 BU 1 2.45 8.06 7.84 308 109
# ... with 35 more rows
我没有在此处包括真实数据,但是它们遵循相同的结构。给定的数据远非重要,而我的实际数据却是!我的问题仅是关于数据中的许多mano_mod = manova(cbind(pH, bark_mm, comb_rugosity, whc, ret) ~ abbr, data = manova_df)
> summary(mano_mod)
Df Pillai approx F num Df den Df Pr(>F)
abbr 4 1.5708 1.4226 20 44 0.1628
Residuals 12
以及测试是否准确。
(如果不清楚,请询问。)