测试正态性

机器算法验证 r 分布 正态假设 拟合优度
2022-04-09 09:20:03

我有一个大型数据集(500000 个数据,V1 列包含所有数据)。

x <- read.csv("mydata.csv", header=F)
hist(x)

这使:

直方图

看数据,我相信这不是正态分布。作为进一步检查,我构建了一个 qqplot:

x_norm <- (x$V1 - mean(x$V1))/sd(x$V1)
qqnorm(x_norm); abline(0, 1)

这给了:

QQ图

为了检查 x$V1 (原始数据)对正态分布的拟合优度,我使用了:

rnorm <- rnorm(500000, mean(x$V1), sd(x$V1))
cc <- cbind(rnorm, x$V1)
g <- goodfit(cc, method="MinChisq")
summary(g)

         Goodness-of-fit test for poisson distribution

             X^2 df      P(> X^2)
Pearson 914.5227 17 1.679266e-183
Warning message:
In summary.goodfit(g) : Chi-squared approximation may be incorrect

给予plot(g)

这看起来正确吗?我可以自信地断定我的数据集X$V1是或不是正态分布吗?

基于以上分析,我应该测试什么其他分布?

2个回答

我不会依赖 p 值来进行任何正态性检验(坦率地说,或者其他许多方面)。看图表。

您可以先验地说每个分布都是非正态的。如果您有一个大型数据集,则非正态性将具有统计意义。这些问题是如何不正常的?非正常表现在哪些方面?后果是什么?

任何正态性或统计显着性检验都不能回答这些问题。

为什么要测试正常性?如果这是对某个线性模型的残差的测试,那么 George Box 有一句很棒的名言……类似这样的事情“就像派出一艘划艇来看看水是否足够平静,可以乘坐远洋班轮”

我只能说,你的眼睛是你更好的 EDA 工具之一。如果您的数据(包含 500,000 次观察)看起来不正常,那么甚至没有理由对正态性进行统计检验。尤其是有这么多数据点,任何与正态性的轻微偏差都会使您无法通过测试。

看起来您的数据实际上也是离散的。您应该考虑将二项式或泊松或其他一些离散分布拟合到数据中。