为什么从正态分布中抽取的 100 个最高值的平均值与正态分布的第 98 个百分位数不同?

机器算法验证 r 分布 极值
2022-04-01 15:47:30

为什么从正态分布中抽取的 100 次最高值的平均值与正态分布的 98% 百分位数不同?从定义上看,它们似乎应该是相同的。但...

R中的代码:

NSIM <- 10000
x <- rep(NA,NSIM)
for (i in 1:NSIM)
{
    x[i] <- max(rnorm(100))
}
qnorm(.98)
qnorm(.99)
mean(x)
median(x)
hist(x)

我想我误解了正态分布中 100 的最大值应该是多少。正如最大值的意外不对称分布所证明的那样。

4个回答

最大值不服从正态分布。它的 cdf 是Φ(x)100在哪里Φ(x)是标准的正常 cdf。一般来说,这种分布的矩很难通过分析获得。Tippett有一篇关于此的古老论文( Biometrika,1925)

我问为什么随机正态分布的最大 100 次抽取的平均值与正态分布的第 98 个百分位数之间存在差异。我从 Rob Hyndman 那里得到的答案大部分是可以接受的,但在技术上过于密集,无法在不修改的情况下接受。我想知道是否有可能提供一个答案,用直观易懂的简单语言解释为什么这两个值不相等。

最终,我的回答可能是不令人满意的循环;但从概念上讲,max(rnorm(100)) 往往高于 qnorm(.98) 的原因简而言之,因为平均而言,100 个随机正态分布分数中的最高值有时会超过其预期值。然而,这种扭曲是不对称的,因为当得出低分时,它们不太可能最终成为 100 分中的最高分。每次独立抽签都是超过预期值的新机会,或者因为获得的值不是 100 个抽签值中的最大值而被忽略。对于视觉演示,比较最大值 20 个值的直方图与最大值 100 个值的直方图,偏斜的差异,尤其是尾部的差异非常明显。

我在解决我在评论中提出的相关问题/问题时间接得出了这个答案。具体来说,如果我发现某人的考试成绩排在第 95 个百分位,我预计如果我将他们与其他 99 名应试者放在一个房间里,他们的平均排名将是 95。结果是或多或少的情况(R代码)......

for (i in 1:NSIM)
{
    rank[i] <- seq(1,100)[order(c(qnorm(.95),rnorm(99)))==1]
}
summary(rank)

作为这个逻辑的延伸,我同样期待,如果我在一个房间里找 100 个人,选择得分最高的人,然后再找 99 个人,让他们参加同样的测试,那么平均来说,被选中的人会在新组中排名第 95 位。但事实并非如此(R代码)......

for (i in 1:NSIM)
{
    testtakers <- rnorm(100)
    testtakers <- testtakers[order(testtakers)]
    testtakers <- testtakers[order(testtakers)]
    ranked95 <- testtakers[95]
    rank[i] <- seq(1,100)[order(c(ranked95,rnorm(99)))==1]
}
summary(rank)

第一种情况与第二种情况的不同之处在于,在第一种情况下,个人的得分恰好位于第 95 个百分位。在第二种情况下,他们的分数可能会高于或低于真正的第 95 个百分位数。由于他们不可能排名高于 100,因此产生排名 95 分数实际上处于第 99 个百分位或更高的组不能抵消(就平均排名而言)排名 95 分数远低于真正的第 90 位的那些情况百分位。如果您查看此答案中提供的两个秩向量的直方图,很容易看出上端存在范围限制,这是我一直在描述的这个过程的结果。

有两个问题:一个是您确定的最高值分布的偏度;另一个是您不应该查看第 98 个百分位数。

考虑中位数,而不是最大值的平均值。这更容易,因为它是一个订单统计信息。所有 100 个值都小于分位数的概率qq100所以最大值的中位数将是q100=12, IEq=121/1000.99309, 而不是0.98. 但是由于偏度,您会期望平均值更高。

作为 R 中的插图

require(matrixStats)
NSIM <- 100001
cases <- 100
set.seed(1)
simmat <- matrix(rnorm(cases*NSIM), ncol=cases)
tops <- rowMaxs(simmat)
c(mean(tops), median(tops), qnorm(1/2^(1/cases)))
c(pnorm(mean(tops)), pnorm(median(tops)), 1/2^(1/cases))

这使

> c(mean(tops), median(tops), qnorm(1/2^(1/cases)))
[1] 2.508940 2.464794 2.462038
> c(pnorm(mean(tops)), pnorm(median(tops)), 1/2^(1/cases))
[1] 0.9939453 0.9931454 0.9930925

只是为了扩展 Rob 的答案,假设我们想知道最高值的累积分布函数 (CDF)N从标准正态分布中独立抽取,X1,...,XN. 调用这个最高值Y1,一阶统计量。那么CDF是:

P(Y1<x)=P(max(X1,...,XN)<x)=P(X1<x,...,XN<x)=P(X1<x)P(XN<x)=P(X<x)100,
其中第二行是平局的独立性。我们也可以将其写为 其中表示 CDF,表示作为该函数的下标给出的随机变量的 PDF。
FY1(x)=FX(x)100,
Ff

Rob 使用标准表示法,被定义为 ---即,是标准法线 CDF。Φ(x)P(X<x) Φ(x)

一阶统计量的概率密度函数 (PDF) 只是 CDF 关于的导数: CDF 在乘以 100 (即 )时提高到 99 (即)乘以 PDF X

fY1(x)=100FX(x)99fX(x)
xN1xN