你能检验 (0,1) 有界分布的正态性吗?

机器算法验证 r 正态分布 正态假设 直方图
2022-04-12 01:23:33

我有一个观察向量, MyData它是一个 >= 0 和 <= 1 的百分位数。

我想测试MyData向量的正态性。首先,我用和绘制了MyData向量与正态分布的关系在 RI 中进行正态分布以与以下内容进行比较:mean= mean(mydata)sd = sd(mydata)

rnorm(rnorm(length(mydata), mean(mydata), sd(mydata))

在下面,您会看到直方图,并且MyData在 0.8 到 1 的存储桶中,中间的观察次数较多,而观察次数较多。

所以数据看起来不正常,当我运行 Jarque-Bera 和 Shapiro-Wilk 测试时,我得到了

雅克-贝拉 p 值 = .0007

夏皮罗-威尔克 p 值 = .000000006

所以这些测试也支持数据的非正态性:

历史

我的问题是:是否真的可以测试 >= 0 和 <= 1 之间的分布是否正常?因为从下面的直方图中可以看出,正态分布进入了MyData没有的范围。请注意,直方图具有低于 0 和高于 1 的黄色 bin,它们超出了MyData(>= 0 和 <=1) 的可能值。

那么:在这种情况下测试正常性的正确方法是什么,或者我是否在正确的轨道上得出数据不正常的结论?

1个回答

测试这些数据的正态性(具体来说,计算一些测试统计量并将其与真正来自正态分布的样本的预期测试统计量的分布进行比较)与以往一样有意义。如果这种测试是其他数据集工作流程的常见部分,并且您在阅读以下内容后认为它应该是,那么请继续在您当前的数据集上使用此测试。扩展该答案...

有一种强烈的观点(我同意),即正态性检验的许多常见应用都是愚蠢的我们知道零假设是错误的/任何真实的数据集非常、非常、非常不可能实际上是正常的(数据是否有一些理论上的最小值或最大值?数据是测量到无限精度,还是只记录到一些有限的精度?有没有什么方法可以使数据不独立且同分布?)真正的问题是数据是否足够接近正态性以用于您当前的实际目的,例如线性模型是否会给出足够准确的答案。在测试p-value 可能是尝试回答这个问题的一种愚蠢的方式(链接的问题强调值对于大型数据集总是很小),对于中小型数据集可能是真的近似等效到“对于假设正态性有用的程序,数据足够接近正态性”。(出于这些目的值而不是固定的值可能会更好。)pp>0.05Wp

你可以做一些数值实验来看看截断的影响有多大(对于大的截止值,平均值应该收敛到 0.5,因为 p 值分布将是,但是这个图非常嘈杂,因为p值的分布是高度可变的......)U(0,1)

set.seed(101)
cutvec <- seq(3,1,by=-0.1)
n <- 100
res <- sapply(cutvec,
      function(c) {
         x <- rnorm(n)
         mean(replicate(100000,shapiro.test(x[abs(x)<c])$p.value))
      })
library(ggplot2); theme_set(theme_bw())
ggplot(data.frame(cutvec,res),
       aes(cutvec,res))+
    geom_point()+
    scale_y_log10()+
    geom_smooth()+
    geom_hline(yintercept=0.5,lty=2)

在此处输入图像描述