我想测试一下治疗之间的区别。 Anova工作得很好,但是我有不相等的差异(根据shapiro测试的正常性还可以)。实际上,可以看到处理S的方差为零。我尝试了Welch.test,但没有用。请向我解释为什么Welch Test无法正常工作,如何通过事后分析对我的数据进行测试,以检验治疗之间的差异。
Treatment WG
1 H NA
2 H 60.00
3 H 57.14
4 H 42.86
5 HS NA
6 HS 85.71
7 HS 88.89
8 HS 100.00
9 S 100.00
10 S 100.00
11 S 100.00
12 S 100.00
str(d)
'data.frame': 12 obs. of 2 variables:
$ Treatment: Factor w/ 3 levels "H","HS","S": 1 1 1 1 2 2 2 2 3 3 ...
$ WG : num NA 60 57.1 42.9 NA ...
d.aov<-aov(WG~Treatment, data=d)
summary(d.aov)
Df Sum Sq Mean Sq F value Pr(>F)
Treatment 2 4013 2006.3 49.94 7.19e-05 ***
Residuals 7 281 40.2
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
2 observations deleted due to missingness
shapiro.test(residuals(object=d.aov))
Shapiro-Wilk normality test
data: residuals(object = d.aov)
W = 0.9515, p-value = 0.6862
bartlett.test(WG ~ Treatment, data=d)
Bartlett test of homogeneity of variances
data: WG by Treatment
Bartlett's K-squared = Inf, df = 2, p-value < 2.2e-16
library(onewaytests)
welch.test(WG~Treatment, d, rate = 0, na.rm=TRUE, verbose=TRUE)
Welch's Heteroscedastic F Test (alpha = 0.05)
data : WG and Treatment
statistic : NaN
num df : 2
denom df : NaN
p.value : NaN
Error in if (p.value > alpha) { : missing value where TRUE/FALSE needed
oneway.test(WG~Treatment, d,na.action=na.omit, var.equal=FALSE)
One-way analysis of means (not assuming equal variances)
data: WG and Treatment
F = NaN, num df = 2, denom df = NaN, p-value = NA