如果我的直方图显示钟形曲线,我可以说我的数据是正态分布的吗?

机器算法验证 正态假设 kolmogorov-smirnov 测试 直方图 探索性数据分析
2022-03-11 00:12:19

我为受访者年龄创建了一个直方图,并设法获得了一个非常漂亮的钟形曲线,从中我得出结论,分布是正常的。

然后我在 SPSS 中运行正态性检验,n = 169。Kolmogorov-Smirnov 检验的p值 (Sig.) 小于 0.05,因此数据违反了正态性假设。

为什么测试显示年龄分布不正常,但直方图呈钟形曲线,我的理解是正常的?我应该遵循哪个结果?

2个回答

我们通常知道变量不可能完全正态分布......

正态分布在任一方向都有无限长的尾巴——数据不太可能在这些极端中远离,但对于真正的正态分布,它必须在物理上是可能的。对于年龄,正态分布模型将预测数据高于或低于平均值 5 个标准差的非零概率 - 这对应于物理上不可能的年龄,例如低于 0 或高于 150。(虽然如果你看人口金字塔,不清楚为什么您首先会期望年龄甚至近似正态分布。)同样,如果您有身高数据,直观上可能遵循更“类似正态”的分布,它只能是真正的如果高度有可能低于 0 厘米或高于 300 厘米,则为正常。

我偶尔看到它暗示我们可以通过将数据中心化为均值为零来规避这个问题。这样,积极和消极的“中心时代”都是可能的。但是,尽管这使得负值在物理上是合理的和可解释的(负中心值对应于低于平均值的实际值),但它并不能解决正常模型会以非零概率产生物理上不可能的预测的问题,一旦你将建模的“中心年龄”解码回“实际年龄”。

...那为什么还要麻烦测试呢?即使不精确,正态性仍然是一个有用的模型

重要的问题不在于数据是否完全正常——我们先验地知道在大多数情况下不可能是这样,即使没有运行假设检验——而是近似值是否足够接近您的需要。看到问题是正常性测试基本上没用吗?正态分布对于许多目的来说是一种方便的近似。它很少是“正确的”——但它通常不必完全正确才能有用。我希望正态分布通常是人们身高的合理模型,但它需要更不寻常的背景才能使正态分布作为人们年龄的模型有意义。

如果您确实觉得需要执行正态性检验,那么 Kolmogorov-Smirnov 可能不是最佳选择:如评论中所述,可以使用更强大的检验。Shapiro-Wilk 对一系列可能的替代方案具有强大的能力,并且具有不需要事先知道真实均值和方差的优点但请注意,在小样本中,可能仍然无法检测到与正态性的相当大的偏差,而在大样本中,即使是非常小的(出于实际目的,无关紧要的)正态性偏差也可能显示为“非常显着”(低p -价值)。

“钟形”不一定正常

似乎有人告诉您将“钟形”数据(在中间达到峰值且尾部概率较低的对称数据)视为“正常”数据。但是正态分布的峰尾需要特定的形状。乍一看,还有其他具有相似形状的分布,您可能也将其描述为“钟形”,但这是不正常的。除非您有大量数据,否则您不太可能区分“它看起来像这个现成的分布,但不像其他分布”。如果您确实有大量数据,您可能会发现它看起来根本不像任何“现成的”分布!但在那种情况下,出于许多目的,你'

“钟形”分布画廊

正态分布是你习惯的“钟形” 柯西有一个更尖锐的峰和“更重”(即包含更多概率)的尾巴;具有 5 个自由度t分布介于两者之间(正常是具有无限 df 的t ,而 Cauchy 是具有 1 df 的t,所以这是有道理的);拉普拉斯或双指数分布具有由两个重新缩放的指数分布背靠背形成的 pdf,导致比正态分布更尖锐的峰值Beta分布完全不同 - 例如,它没有指向无穷大的尾部,而是有尖锐的截止 - 但它仍然可以在中间具有“驼峰”形状。实际上,通过调整参数,您还可以获得一种“倾斜的驼峰”,甚至是“U”形 - 链接的 Wikipedia 页面上的画廊对该分布的灵活性很有指导意义。最后,三角分布是有限支持上的另一种简单分布,常用于风险建模。

很可能这些分布都没有准确地描述您的数据,并且存在许多具有相似形状的其他分布,但我想解决“驼峰在中间且大致对称意味着正常”的误解。由于年龄数据存在物理限制,如果您的年龄数据在中间“驼峰”,那么仍然有可能具有有限支持的分布(如 Beta 或什至三角形分布)可能证明比具有无限尾(如正常)更好的模型。请注意,即使您的数据确实是正态分布的,除非您的样本量相当大,否则您的直方图仍然不太可能类似于经典的“钟形”。即使是来自像拉普拉斯这样的分布的样本,由于它的尖端,它的 pdf 与正态分布的 pdf 可以清楚地区分,

各种样本大小的正常和拉普拉斯样本

R代码

par(mfrow=c(3,2))
plot(dnorm, -3, 3, ylab="probability density", main="Normal(0,1)") 
plot(function(x){dt(x, df=1)}, -3, 3, ylab="probability density", main="Cauchy") 
plot(function(x){dt(x, df=5)}, -3, 3, ylab="probability density", main="t with 5 df") 
plot(function(x){0.5*exp(-abs(x))}, -3, 3, ylab="probability density", main="Laplace(0,1)") 
plot(function(x){dbeta(x, shape1=2, shape2=2)}, ylab="probability density", main="Beta(2,2)")
plot(function(x){1-0.5*abs(x)}, -1, 1, ylab="probability density", main="Triangular")

par(mfrow=c(3,2))
normalhist <- function(n) {hist(rnorm(n), main=paste("Normal sample, n =",n), xlab="x")}
laplacehist <- function(n) {hist(rexp(n)*(1 - 2*rbinom(n, 1, 0.5)), main=paste("Laplace sample, n =",n), xlab="x")}

# No random seed is set
# Re-run the code to see the variability in histograms you might expect from sample to sample
normalhist(50); laplacehist(50)
normalhist(100); laplacehist(100)
normalhist(200); laplacehist(200)

年龄不能来自正态分布。从逻辑上思考:你不能有负年龄,但正态分布允许负数。

那里有许多钟形分布。如果某物看起来是钟形的,并不意味着它必须是正常的。

无法确定统计中的任何内容,包括数据来自哪个分布。形状是一个线索:钟形是正态分布的一个论据。此外,了解您的数据非常重要。年龄等变量经常出现偏差,这将排除正常性。如前所述,正态分布没有界限,但有时用于有界变量。例如,如果平均年龄为 20 岁,标准差为 1,则年龄 <17 或 >23 的概率小于 0.3%。因此,正态分布可能是一个很好的近似值

您可以尝试对正态性进行统计检验,例如 Jarque-Bera,它会考虑样本的偏度和峰度。在某些情况下,峰度可能很重要。这在金融领域非常重要,因为如果你用正态分布对数据进行建模,但数据实际上是来自肥尾分布,你最终可能会低估资产的风险和价格。

它会帮助您报告一些描述性统计数据或您的年龄和身高数据的直方图,例如均值、方差、偏度、峰度。