你如何根据最高的 n 值找到人口规模 N?

机器算法验证 分布 估计 曲线拟合
2022-04-02 20:39:23

例如,假设人进行了 GMAT 之类的选拔测试。假设分数的分布是正态分布(但参数未知)。如果你有最高分的列表(被批准的人),你如何估计直观地说,完全有可能做出这样的估计,如果等于,那么你会期望 n 分数的分布是正常的(一些非常高的分数,很多平均分数和一些非常低的分数) 如果NnNnNnN那么当您查看最低分数时,您会期望看到分数数量几乎线性增加(只有几个高分和很多低分,这里的低意味着与其他可用分数相比较低)。动机是,在我的国家(巴西),很多时候有一个测试是为了获得一份公共工作,有时他们不公布有多少人参加,而是公布通过的人的名单和他们的分数。我想找到一种方法来确定(每个职位的候选人)。nN/n

1个回答

这是一个很好的问题。我会试一试...用表示正态分布的 cdf,用表示它的密度。最高分的联合分布 (即,之下个值,以及观察到的其他值)。Φϕny(Nn+1),,y(N)

N!(Nn)!Φ(y(Nn+1))Nnϕ(y(Nn+1))ϕ(y(N)),
NnNy(Nn+1)

乍一看这有点令人费解:通常的设置是你知道并且你想推断分布的参数。在这里您只对感兴趣,因此通过最大化 NnN

(Nn)logΦ(y(Nn+1))+log(N!)log((Nn)!).

这有点直观:最后录取的分数和录取的数量都很重要。y(Nn+1)

一个快速的数值实验:

> N <- 1000
> set.seed(1)
> x <- sort(rnorm(N), decreasing=TRUE)[1:10]  
> x
[1] 3.810277 3.055742 2.675741 2.649167 2.497662 2.446531 2.401618 2.350554
[9] 2.349493 2.321334
> f <- function(N, n = 10, xn = x[n])  
+      (N-n)*log(pnorm(xn)) + lfactorial(N) - lfactorial(N-n)
> plot( 800:1200, sapply(800:1200, f), type="l")

可能性

这看起来很有希望。让我们看看这个估计器的属性,同样是n=10

> MLE <- replicate( 1e4, {x <- sort(rnorm(N), decreasing=TRUE)[1:10]; 
+        optimize(f, c(100,20000), maximum=TRUE, xn = x[10])$maximum} )
> mean(MLE)
[1] 1112.798
> sd(MLE)
[1] 393.086
> hist(MLE, breaks=40)

MLE直方图

但是,从您对问题的编辑中,我认为您想估计和正态分布的参数。这可以通过最大化联合密度以上的对数来完成。但是,对于您的具体应用程序,底层分布不太可能是正常的。这肯定是各种准备的候选人的成绩之间的混合,我对获得良好估计的可能性并不乐观。n


所以让我们再试一次,正态分布的参数未知:

g <- function(N, mu, sd, X) {
  n <- length(x); 
  (N-n)*pnorm(X[n], mean = mu, sd = sd, log.p = TRUE) 
  + sum(dnorm(X, mean=mu, sd=sd, log=TRUE)) 
  + lfactorial(N) - lfactorial(N-n) 
}

> optim( c(1000,0,1), function(theta) -g(theta[1], theta[2], theta[3], x) )
$par
[1] 292951.707061     -3.650634      1.498264

$value
[1] -13.78503

所以 MLE 在这里说,最好的猜测是平均值 -3.65(而不是 0),标准差为 1.49(而不是 1,好吧,好吧),大小 ... hu...再试一次:10 次观察并不多!N=293000n=100

> set.seed(17)
> x <- sort(rnorm(N), decreasing=TRUE)[1:100] 
> optim( c(1000,0,1), function(theta) -g(theta[1], theta[2], theta[3], x) )
$par
[1] 1031.1320174   -0.2112833    1.1694436

$value
[1] -321.6677

没那么糟糕……?但如果我再试一次set.seed(18)的估计值是 5000...!我可能会遗漏一些东西,但目前我仍然很悲观。N

而且,在现实世界中,成绩也不正常。坦率地说,双峰分布并不罕见,而右尾通常很特别。最好的学生/候选人离分布很远,我曾多次检查过这一点。因此,依靠右尾来进行这些估计是错误的:例如,如果最佳候选者都来自一个(相对)同质的非常聪明且准备充分的候选者组,那么您将只估计本组;你不会有任何关于(更多)准备不足的候选人的信息。n=20100