![](/img/trans.png)
[英]Two-Way Repeated Measures ANOVA: Error in lm.fit()... 0 non-na cases (rstatix)
[英]“anova_test” function error (0 (non_NA) cases) and linear combination for two-way repeated anova
我正在嘗試使用rstatix package 中的 anova_test function 在 R 中運行雙向重復測量 anova。 我大致按照此處找到的教程進行操作。 我的數據由幾個 ant 菌落(“菌落”)組成,每個菌落分為 3 個處理(“大小”)。 我收集了超過 8 個時間點(“時間”)的數據(“g”)。 我在 github 上上傳了我的數據子集,但這里有一個簡短的摘要:
# A tibble: 24 x 6
Species Colony Fragment Size Time g
<fct> <fct> <fct> <fct> <fct> <dbl>
1 obs 5 5L L 1 0.565
2 obs 2 2L L 2 0.002
3 obs 8 8L L 3 0.699
4 obs 12 12L L 4 0.257
5 obs 12 12L L 5 0.131
6 obs 3 3L L 6 0.014
7 obs 10 10L L 7 0.15
8 obs 12 12L L 8 0.054
9 obs 10 10M M 1 0.448
10 obs 8 8M M 2 0.135
# ... with 14 more rows
我嘗試使用以下代碼以三種不同的方式運行雙向重復測量方差分析:
aov <- df %>% anova_test(g ~ Size*Time + Error(Colony/(Size*Time)))
aov <- df %>% anova_test(dv=g, wid = Colony, within= c(Size,Time))
aov <- anova_test(data = df, dv=g, wid=Colony, within=c(Size, Time))
他們每個 output 出現以下錯誤:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases
我在兩個與我的數據集格式相似的示例數據集上嘗試了相同的代碼,並且 function 完美運行(每種方法輸出相同的結果)。 以下是示例數據集的摘要以供參考:
# A tibble: 6 x 4
id treatment time score
<fct> <fct> <fct> <dbl>
1 7 ctr t1 92
2 6 ctr t2 65
3 12 ctr t3 62
4 6 Diet t1 76
5 9 Diet t2 94
6 7 Diet t3 87
# A tibble: 6 x 4
len supp dose id
<dbl> <fct> <dbl> <int>
1 21.5 OJ 0.5 2
2 14.5 OJ 1 9
3 22.4 OJ 2 3
4 4.2 VC 0.5 1
5 17.3 VC 1 4
6 29.5 VC 2 10
我已經驗證我的數據沒有任何返回 FALSE 的any(is.na(df))
的 NA 值。
我遇到了一個類似的問題,一個有用的海報建議這個錯誤可能是由於線性組合,而不是 NA 值。 我決定使用lm(g ~ Colony+Time:Size, data=df)
檢查我的數據,事實上,我確實有一個線性組合:
Call:
lm(formula = g ~ Colony + Time:Size, data = df)
Coefficients:
(Intercept) Colony1 Colony2 Colony3 Colony4 Colony5 Time1:SizeL Time2:SizeL Time3:SizeL
0.044167 -0.118549 -0.108424 0.076868 0.073243 0.034368 0.213000 0.351167 0.199833
Time4:SizeL Time5:SizeL Time6:SizeL Time7:SizeL Time8:SizeL Time1:SizeM Time2:SizeM Time3:SizeM Time4:SizeM
0.060667 0.071333 0.005000 0.017000 -0.029167 0.239667 0.216333 0.174667 0.050500
Time5:SizeM Time6:SizeM Time7:SizeM Time8:SizeM Time1:SizeS Time2:SizeS Time3:SizeS Time4:SizeS Time5:SizeS
0.069500 0.033167 0.011500 -0.003667 -0.015500 0.081167 0.020000 0.042500 0.026333
Time6:SizeS Time7:SizeS Time8:SizeS
-0.014333 -0.000500 NA
但是,我不明白為什么。 Time8:SizeS 類別與所有其他 Time:Size 組合基本相同。 如果有人能解釋為什么我可能會遇到這個錯誤,或者有一個解決方案來解決我如何對我的數據執行雙向重復測量 anova(有或沒有anova_test ),我將不勝感激!
提前致謝!
我需要再次閱讀 rstatix::anova_test 的代碼,但是您的設計還可以,它是平衡的,導致所有問題的原因是額外的列。 我懷疑由於列的原因,某處旋轉失控:
library(rstatix)
library(dplyr)
df=read.csv("https://raw.githubusercontent.com/mwest9/sample_data/master/test_repeat_anova.csv")
df$Colony = factor(df$Colony)
df$Time = factor(df$Time)
df %>% select(g,Size,Time,Colony) %>%
anova_test(g ~ Size*Time + Error(Colony/(Size*Time)))
ANOVA Table (type III tests)
Effect DFn DFd F p p<.05 ges
1 Size 2 10 4.098 0.05000 0.075
2 Time 7 35 5.428 0.00028 * 0.209
3 Size:Time 14 70 1.595 0.10200 0.099
請注意,它僅報告 anova 而不是其他球形度測試:
Mauchly 的球形檢驗:如果存在任何具有 2 個以上水平的 Ss 內變量,則包含 Mauchly 球形檢驗結果的數據框。 僅報告具有超過 2 個級別的效果,因為球形度必然適用於僅具有 2 個級別的效果。 • 球形校正:如果存在任何Ss 內變量,則包含Greenhouse-Geisser 和Huynh-Feldt epsilon 值以及相應的校正p 值的數據框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.