关于R中的异常值检测的grubbs测试

hon*_*ong 4 r outliers

我按照如何重复Grubbs测试和标记异常值的网站上的程序代码,并在我的数据向量中测试异常值.我的数据向量包含更多44000个项目.

输出如下:

grubbs.result = grubbs.test(test_data)

pvalue = grubbs.result$p.value

grubbs.result

Grubbs test for one outlier
data:  test_data
G = 3.79551464153584561, U = 0.99967764032789053, p-value = 1
alternative hypothesis: highest value -48.70000076 is an outlier

pvalue

[1] 1

grubbs.result$alternative

[1] "highest value -48.70000076 is an outlier"
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么pvalue是1,但程序检测到的值-48.70000076是异常值??? 是否-48.70000076通过grubbs测试检测到异常值?如果是,如何解释pvalue是1,不是像0.01这样的小值?

因为我是这个领域的新学习者,任何人都可以给我任何帮助吗?非常感谢你提前.

Sam*_*son 6

这对简历来说更像一个问题,但我会给出一个快速统计课程.在寻找异常值时最重要的事情是,除非你有一个有效的,非统计的原因,否则没有数据点,无论与其他数据有多么不同,都是真正的异常值.这些极端数据点是您数据的一部分 - 它们属于您的数据.

有些数据确实是异常值,但不是因为Grubb的测试就是这样说的.例如,你正在接受人们的温度,一个人把他的温度计放在灯泡旁边,他们的温度可能被认为是一个异常值.如果其他人只是喝了一杯冷水并且这是口服测量,那么它们也可能被视为异常值.但如果有人和刚刚喝了一杯冷水的人温度相同,那就不一定有资格作为异常值.出于统计学原因,我们并没有说某事是异常值.

除了免责声明,我们可以解决这里的核心问题,这是统计数据.该测试说明了替代假设是什么,即最极端的数据点是异常值.在这种情况下,'-48.70000076' 恰好是进一步远离比其他任何数据点的其它数据点,所以我们的零假设是没有数据点是异常区 - 包括最极端的点.另一种假设,而如果我们拒绝零假设,我们将结束,这是最起码的是最极端的点是一个离群(统计).

在这种情况下,p值表示您没有任何证据表明您的任何数据都是异常值,因为p值为1:

set.seed(123)
test0 <- runif(1000) 
test_data <- test0-max(test0)-48.70000076
grubbs.test(test_data)

#     Grubbs test for one outlier

# data:  test_data
# G = 1.74660, U = 0.99694, p-value = 1
# alternative hypothesis: highest value -48.70000076 is an outlier
Run Code Online (Sandbox Code Playgroud)