welch.test返回NaN

时间:2019-06-28 12:17:01

标签: r anova

我想测试一下治疗之间的区别。 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

0 个答案:

没有答案