0

我想使用lawstatlevene.test包中的函数来测试同方差性,因为我喜欢 bootstrap 选项以及它返回一个列表而不是. 很明显,在我的数据集中默认情况下应该省略 NA。下面我提供原始数据。car::leveneTestlawstat::levene.test

testset.logcount<-c(6.86923171973098, 6.83122969386706, 7.30102999566398,7.54282542695918,6.40823996531185, 6.52891670027766, 6.61278385671974, 6.71933128698373, 6.96567197122011, 6.34242268082221, 6.60205999132796, 6.69897000433602, 6.6232492903979, 6.54157924394658, 6.43136376415899, 6.91381385238372,6.44715803134222, 6.30102999566398, 6.10037054511756, 6.7481880270062,NA, 4.89762709129044,5.26951294421792, 5.12385164096709, 5.11394335230684, 4.43136376415899, 5.73957234445009, 5.83250891270624, 5.3451776165427, 5.77887447200274, 5.38524868240322, 5.75127910398334, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)
testset.treat<-structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("CTL","TRM"), class = "factor")

当我执行时,lawstat::levene.test(y=testset.logcount,group=testset.treat)我收到以下错误消息:Error in contrasts<-( *tmp*, value = contr.funs[1 + isOF[nn]]) : contrasts can be applied only to factor with 2 or more levels

据我所知, testset.treat 显然有两个级别。

同样在使用leveneTest(y=testset.logcount,group=testset.treat)fligner.test(x=testset.logcount,g=testset.treat)两者都运行时没有任何错误。

我不知道为什么我在lawstat::levene.test中遇到了这个特殊错误,我希望这里有人可以帮助我。

我在 x86_64-w64-mingw32/x64 平台(Windows 7、64 位)上运行 R 3.0.0。

4

3 回答 3

2

作为记录,此行为是由函数尝试删除 NA 值时的错误造成的。它试图使用以下代码执行此操作:

y <- y[!is.na(y)]
group <- group[!is.na(y)]

其中,如果有NAy可能会非常糟糕。在这种特殊情况下,它消除了第二个因素水平。

一旦报告,这应该是一个简单的修复。

于 2013-08-12T15:22:16.823 回答
0

我也经历过类似的过程。目的是不要让第二个因素被抹去,其中“y”是您的数字向量,“g”是数据的因素。

yg = na.omit(data.frame(y,g))
y = yg[,1]
g = yg[,2]
于 2014-11-13T09:09:58.670 回答
0

在玩了一些 levene.test() 之后,我认为问题出在缺失值上。

test <- cbind(testset.logcount, testset.treat)
test <- test[complete.cases(test),] #removing Nas
levene.test(test[,1], test[,2])


        modified robust Brown-Forsythe Levene-type test based on the absolute
        deviations from the median

data:  test[, 1]
Test Statistic = 0.9072, p-value = 0.3487

这确实匹配汽车的 levene 测试(df = 29),因此它必须自动删除丢失的行

> leveneTest(y=testset.logcount,group=testset.treat)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  1  0.9072 0.3487
      29     
于 2013-08-12T15:16:10.073 回答