我想使用 lawstat 包中的levene.test
函数来测试同方差性,因为我喜欢bootstrap选项以及它返回列表而不是{{{}的无法管理输出这一事实1}}。在car::leveneTest
的帮助下,很明显默认情况下应从我的数据集中省略NA。下面我提供原始数据。
lawstat::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)
中的错误(contrasts<-
,值= contr.funs [1 + isOF [nn]]):
对比度仅适用于具有2级或更多级别的因素
据我说,testset.treat显然有两个级别。
使用*tmp*
或leveneTest(y=testset.logcount,group=testset.treat)
同时运行时没有任何错误。
我无法找出为什么我在 lawstat :: levene.test 中遇到这个特殊错误,我希望有人可以帮助我。
我在x86_64-w64-mingw32 / x64平台(Windows 7,64位)上运行R 3.0.0。
答案 0 :(得分:2)
对于记录,此行为是由函数尝试删除NA值中的错误创建的。它试图使用代码执行此操作:
y <- y[!is.na(y)]
group <- group[!is.na(y)]
,如果是 y
中的NA值可能非常糟糕。在这种特殊情况下,它消灭了第二个因素水平。
一旦报告,这应该是一个简单的解决方法。
答案 1 :(得分: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
答案 2 :(得分:0)
我也经历过类似的过程。 目的不是让第二个因素消失,其中'y'是数字向量,'g'是数据的因子。
yg = na.omit(data.frame(y,g))
y = yg[,1]
g = yg[,2]