R t.test .....不再重要

机器算法验证 r 统计学意义 t检验 p 值 异常值
2022-04-04 06:34:13

t.test在查看函数的帮助示例时,我感到非常困惑

t.test(1:10, y = c(7:20))      # P = .00001855

t.test(1:10, y = c(7:20, 200)) # P = .1245    -- NOT significant anymore

为什么增加值 200 会增加 p 值?我们不应该得到一个较小的 p 值,从而拒绝原假设吗?请注意,第二个元素会导致 p 值再次下降。

t.test(1:10, y = c(7:20, 200,200))  # P = 0.06883
2个回答

进入分母的标准偏差也受到离群观察的影响。(它也会影响自由度,因为我们实际上是在这里进行 Welch 测试。)

我们可以检查该附加观察值的变化对 t 统计量的影响:

tinfl <- function(x) t.test(1:10, y = c(7:20, x))$statistic

(或 p 值tinflp <- function(x) t.test(1:10, y = c(7:20, x))$p.value)。

[在 10.18855 附近添加一个观测值会使检验统计量在没有额外观测值的情况下处于何处(9.666492 附近的观测值将 p 值留在原来的位置)。

这称为经验影响函数。这对于查看统计数据如何响应移动数据点很有用。

因此,当我们改变额外的观察结果时,t 统计量的分子、分母和值会发生以下情况:

在此处输入图像描述

红色虚线标记了当额外观察出现时发生的情况10(接近需要获得相同测试统计量或与没有观察时相同的 p 值所需的位置)。

当您将额外的观察结果向上移动时,t 统计量变得越来越负(更显着),直到您达到大约 -17.25,然后对标准偏差(以及在某种程度上 df)的影响开始将其拉回.

作为x,检验统计量变为-1。

(限制为x是 1)

您也可以通过等方差两样本 t 检验看到类似的效果。

t 检验对非常大的异常值不是特别稳健。

如果您有两个过程您对识别位置差异感兴趣,但极少有极端异常值污染(来自一些对您想要与测试进行比较的事物不感兴趣的额外过程),您可以加强 t-测试(通过修改分子和分母的影响函数,使它们都是有界的),或者考虑说一个 Wilcoxon-Mann-Whitney 测试,这样额外观察的效果更像你所期望的。或者您可以考虑进行置换检验(无论是否具有稳健的统计数据)。

这是对 Wilcoxon-Mann-Whitney 检验的影响,以及用于比较的一种特殊形式的鲁棒 t 检验 - 如您所见,Wilcoxon 统计量是单调的,而鲁棒 t 检验仅略微回归。

在此处输入图像描述

两组 t 检验平衡(通过计算它们的比率)值分布的两个方面,一:均值的差异,您的“干扰”确实有所增加,二:您的干扰增加了很多更多的。方差随点值与平均值之差的平方而变化,而与平均值相差数百个单位的单个额外值将在方差估计中添加大约 180^2 的东西,而方差估计值要小得多. 在正态分布值的假设下(您的更改已大量违反),方差现在要大得多,并且组均值差异的估计现在可能包括零。

如果要使用不依赖于平方偏差的检验统计量,请考虑 ks.test:

 ks.test(1:10, y = c(7:20, 200))
#-------------------------
    Two-sample Kolmogorov-Smirnov test

data:  1:10 and c(7:20, 200)
D = 0.7333, p-value = 0.003151
alternative hypothesis: two-sided

Warning message:
In ks.test(1:10, y = c(7:20, 200)) : cannot compute exact p-value with ties

正如我与 Glen_b 的通信中所清楚的那样,我将 R 中的 wilcox.test 与 R 中的 ks.test 混为一谈。我打算使用wilcox.test(Wilcoxon Rank Sum test):

> wilcox.test(1:10, y = c(7:20, 200))

    Wilcoxon rank sum test with continuity correction

data:  1:10 and c(7:20, 200)
W = 8, p-value = 0.0002229
alternative hypothesis: true location shift is not equal to 0

Warning message:
In wilcox.test.default(1:10, y = c(7:20, 200)) :
  cannot compute exact p-value with ties