无论我尝试什么,当我尝试在 R 中执行弗里德曼测试时,我总是收到错误“不是未复制的完整块设计”。 我有一个数据集,其中包含我计算的不同灌木种类的花卉访问总数,然后将其分为不同的类别(位置)。由于数据不满足双向方差分析假设,我转向弗里德曼检验。我的数据框如下:
> diversity_columns
# A tibble: 74 × 3
Category_ID Species Total_visits
<fct> <fct> <dbl>
1 UN Common hawthorn 22
2 UN Common hawthorn 42
3 UN Common hawthorn 3
4 UN Common hawthorn 13
5 UN Common hawthorn 76
6 UN Common hawthorn 95
7 UN Common hawthorn 53
8 RN Common hawthorn 50
9 RN Common hawthorn 18
10 UN Common hawthorn 6
Category_IN 的标签为“RA”、“RN”和“UN”,物种的标签为“普通山楂”、“黑莓”和“玫瑰”
我尝试了以下命令:
friedman.test(Total_visits ~ Category_ID | Species, data = diversity_columns)
但是,我得到了这个错误:
Error in friedman.test.default(mf[[1L]], mf[[2L]], mf[[3L]]) :
not an unreplicated complete block design
我已经尝试使用函数 as.matrix 转换我的数据集:
as.matrix(diversity_columns)
我也尝试将我的变量转化为因子:
Shannon_diversity$Species <- factor(Shannon_diversity$Species)
Shannon_diversity$Category_ID <- factor(Shannon_diversity$Category_ID)
这表明您至少缺少 Species/Category.ID 六个交叉类别中的一个。
您可以使用
table
: 查看缺少哪些内容
with(diversity_columns, table(Category_ID, Species))
我可以使用内置的
warpbreaks
数据集复制此错误。
wb <- aggregate(warpbreaks$breaks,
by = list(w = warpbreaks$wool,
t = warpbreaks$tension),
FUN = mean)
wb
w t x
1 A L 44.55556
2 B L 28.22222
3 A M 24.00000
4 B M 28.77778
5 A H 24.55556
6 B H 18.77778
friedman.test(x ~ w | t, data = wb)
Friedman rank sum test
data: x and w and t
Friedman chi-squared = 0.33333, df = 1, p-value = 0.5637
这有效。现在从 wb 中删除其中一行:
wb2 <- wb[-2,]
with(wb2, table(w, t))
t
w L M H
A 1 1 1
B 0 1 1
friedman.test(x ~ w | t, data = wb2)
#Error in friedman.test.default(mf[[1L]], mf[[2L]], mf[[3L]]) :
#not an unreplicated complete block design