![](/img/trans.png)
[英]Two-Way Repeated Measures ANOVA: Error in lm.fit()... 0 non-na cases (rstatix)
[英]Unable to run Two-way repeated measures ANOVA; 0 (non-NA) cases
我正在尝试按照 Datanovia 的教程进行双向重复测量 ANOVA 。
我的数据集的快速概览:
随着时间的推移,我测量了 12 个采样单元中不同细菌种类的数量。 我有 16 个时间点和 2 个组。 我将我的数据组织成一个名为“丰富度”的小标题;
# A tibble: 190 x 4
id selection.group Day value
<fct> <fct> <fct> <dbl>
1 KRH1 KR 2 111.
2 KRH2 KR 2 141.
3 KRH3 KR 2 110.
4 KRH1 KR 4 126
5 KRH2 KR 4 144
6 KRH3 KR 4 135.
7 KRH1 KR 6 115.
8 KRH2 KR 6 113.
9 KRH3 KR 6 107.
10 KRH1 KR 8 119.
id 是指每个采样单元,选择组有两个因素(KR 和 RK)。
richness <- tibble(
id = factor(c("KRH1", "KRH3", "KRH2", "RKH2", "RKH1", "RKH3")),
selection.group = factor(c("KR", "KR", "KR", "RK", "RK", "RK")),
Day = factor(c(2,2,4,2,4,4)),
value = c(111, 110, 144, 92, 85, 69)) # subset of original data
我的 tibble 似乎与教程中的格式相同;
> str(selfesteem2)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 72 obs. of 4 variables:
$ id : Factor w/ 12 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
$ treatment: Factor w/ 2 levels "ctr","Diet": 1 1 1 1 1 1 1 1 1 1 ...
$ time : Factor w/ 3 levels "t1","t2","t3": 1 1 1 1 1 1 1 1 1 1 ...
$ score : num 83 97 93 92 77 72 92 92 95 92 ..
在运行重复测量方差分析之前,我必须检查数据的正态性。 我复制了教程中提出的框架。
#my code
richness %>%
group_by(selection.group, Day) %>%
shapiro_test(value)
#tutorial code
selfesteem2 %>%
group_by(treatment, time) %>%
shapiro_test(score)
但是当我尝试运行代码时收到错误消息“错误:列variable
未知”。 有谁知道为什么会这样?
我试图在没有保证我的数据是正态分布的情况下继续并尝试运行方差分析
res.aov <- rstatix::anova_test(
data = richness, dv = value, wid = id,
within = c(selection.group, Day)
)
但是得到这个错误信息; lm.fit(x, y, offset = offset, single.ok = single.ok, ...) 中的错误:0(非 NA)情况
我已经用返回 FALSE 的any(is.na(richness))
检查了 NA 值。 我还检查了table(richness$selection.group, richness$Day)
以确保我的设置是正确的
2 4 6 8 12 16 20 24 28 29 30 32 36 40 44 50
KR 6 6 6 6 6 6 6 6 6 6 6 5 6 6 6 6
RK 6 6 6 6 6 5 6 6 6 6 6 6 6 6 6 6
并且设置显示正确。 我将非常感谢有关解决此问题的提示。
最好的问候玛德琳
以下是可重现格式的数据集子集:
library(tidyverse)
library(rstatix)
library(tibble)
richness_subset = data.frame(
id = c("KRH1", "KRH3", "KRH2", "RKH2", "RKH1", "RKH3"),
selection.group = c("KR", "KR", "KR", "RK", "RK", "RK"),
Day = c(2,2,4,2,4,4),
value = c(111, 110, 144, 92, 85, 69))
richness_subset$Day = factor(richness$Day)
richness_subset$selection.group = factor(richness$selection.group)
richness_subset$id = factor(richness$id)
richness_subset = tibble::as_tibble(richness_subset)
richness_subset %>%
group_by(selection.group, Day) %>%
shapiro_test(value)
# gives Error: Column `variable` is unknown
res.aov <- rstatix::anova_test(
data = richness, dv = value, wid = id,
within = c(selection.group, Day)
)
# gives Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
# 0 (non-NA) cases
我创建了类似于您的数据设计的东西:
set.seed(111)
richness = data.frame(id=rep(c("KRH1","KRH2","KRH3"),6),
selection.group=rep(c("KR","RK"),each=9),
Day=rep(c(2,4,6),each=3,times=2),value=rpois(18,100))
richness$Day = factor(richness$Day)
richness$id = factor(richness$id)
首先,shapiro_test,脚本中存在一个错误,您要测试的值不能命名为“值”:
# gives error Error: Column `variable` is unknown
richness %>% shapiro_test(value)
#works
richness %>% mutate(X = value) %>% shapiro_test(X)
# A tibble: 1 x 3
variable statistic p
<chr> <dbl> <dbl>
1 X 0.950 0.422
1 X 0.963 0.843
其次,对于方差分析,这对我有用。
rstatix::anova_test(
data = richness, dv = value, wid = id,
within = c(selection.group, Day)
)
在我的例子中,每个术语都可以估计。我怀疑你的一个术语是另一个的线性组合。 用我的例子,
set.seed(111)
richness =
data.frame(id=rep(c("KRH1","KRH2","KRH3","KRH4","KRH5","KRH6"),3),
selection.group=rep(c("KR","RK"),each=9),
Day=rep(c(2,4,6),each=3,times=2),value=rpois(18,100))
richness$Day = factor(richness$Day)
richness$id = factor(richness$id)
rstatix::anova_test(
data = richness, dv = value, wid = id,
within = c(selection.group, Day)
)
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases
给出完全相同的错误。 这可以使用以下方法检查:
lm(value~id+Day:selection.group,data=richness)
Call:
lm(formula = value ~ id + Day:selection.group, data = richness)
Coefficients:
(Intercept) id1 id2
101.667 -3.000 -6.000
id3 id4 id5
-6.000 1.889 11.556
Day2:selection.groupKR Day4:selection.groupKR Day6:selection.groupKR
1.667 -12.000 9.333
Day2:selection.groupRK Day4:selection.groupRK Day6:selection.groupRK
-1.667 NA NA
Day4:selection.groupRK 和 Day6:selection.groupRK 是不可估计的,因为它们之前被因素的线性组合所覆盖。
我遇到过同样的问题。 找不到解决办法。 最后以下工作:安装“ez”包
newModel<-ezANOVA(data = dataFrame, dv = .(结果变量), wid = .(识别参与者的变量), inside = .(重复测量预测变量), between = . (组间预测变量), detail = FALSE,类型 = 2)
示例:bushModel<-ezANOVA(data = longBush, dv = .(Retch), wid = .(Participant), inside = .(Animal), detail = TRUE, type = 3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.