基于三个百分位数估计分布

机器算法验证 r 回归 分位数
2022-02-09 04:36:40

如果我只知道三个百分位数,我可以使用哪些方法来推断分布?

比如我知道在某个数据集中,第5个百分位是8135,第50个百分位是11259,第95个百分位是23611。我希望能够从任何其他数字转到它的百分位数。

这不是我的数据,这些是我拥有的所有统计数据。很明显,分布不正常。我唯一掌握的其他信息是,这些数据代表了不同学区的政府人均资金。

我对统计学有足够的了解,知道这个问题没有明确的解决方案,但不足以知道如何去寻找好的猜测。

对数正态分布是否合适?我可以使用哪些工具来执行回归(或者我需要自己做)?

4个回答

正如@whuber 指出的那样,统计方法在这里并不完全适用。您需要从其他来源推断分布。当您知道分布时,您就有了非线性方程求解练习。的概率分布的分位数函数您所拥有的是以下非线性方程组:fθ

q0.05=f(0.05,θ)q0.5=f(0.5,θ)q0.95=f(0.95,θ)

其中是你的分位数。你需要解决这个系统才能找到现在实际上对于任何 3 参数分布,您都会找到满足该方程的参数值。对于 2 参数和 1 参数分布,该系统是超定的,因此没有精确的解决方案。在这种情况下,您可以搜索一组最小化差异的参数:qθ

(q0.05f(0.05,θ))2+(q0.5f(0.5,θ))2+(q0.95f(0.95,θ))2

这里我选择了二次函数,但你可以选择任何你想要的。根据@whuber 评论,您可以分配权重,以便更准确地拟合更重要的分位数。

对于四个或更多参数,系统是欠定的,因此存在无限数量的解决方案。

下面是一些示例 R 代码来说明这种方法。出于演示的目的,我从VGAM包的 Singh-Maddala 分布中生成分位数。该分布有 3 个参数,用于收入分布建模。

 q <- qsinmad(c(0.05,0.5,0.95),2,1,4)
 plot(x<-seq(0,2,by=0.01), dsinmad(x, 2, 1, 4),type="l")
 points(p<-c(0.05, 0.5, 0.95), dsinmad(p, 2, 1, 4))

替代文字

现在形成评估非线性方程组的函数:

 fn <- function(x,q) q-qsinmad(c(0.05, 0.5, 0.95), x[1], x[2], x[3])

检查真值是否满足方程:

 > fn(c(2,1,4),q)
   [1] 0 0 0

为了求解非线性方程组,我使用nleqslvnleqslv中的函数。

 > sol <- nleqslv(c(2.4,1.5,4.3),fn,q=q)
 > sol$x       
  [1] 2.000000 1.000000 4.000001

正如我们所看到的,我们得到了确切的解决方案。现在让我们尝试将对数正态分布拟合到这些分位数。为此,我们将使用该optim功能。

 > ofn <- function(x,q)sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2)
 > osol <- optim(c(1,1),ofn)
 > osol$par
   [1] -0.905049  0.586334

现在绘制结果

  plot(x,dlnorm(x,osol$par[1],osol$par[2]),type="l",col=2)
  lines(x,dsinmad(x,2,1,4))
  points(p,dsinmad(p,2,1,4))

替代文字

由此我们立即看出二次函数并不是那么好。

希望这可以帮助。

使用纯统计方法来完成这项工作绝对不会提供有关学校支出分布的额外信息:结果将仅反映算法的任意选择。

您需要更多数据

这很容易获得:使用前几年的数据,来自可比地区的数据,等等。例如,2008 年 14866 个学区的联邦支出可从人口普查网站获得。它表明,在全国范围内,人均(登记)联邦总收入大致呈对数正态分布,但按州划分显示差异很大(例如,阿拉斯加的原木支出具有负偏斜,而科罗拉多州的原木支出具有很强的正偏斜) . 使用这些数据来表征可能的分布形式,然后将分位数拟合到该形式。

如果您甚至接近正确的分布形式,那么您应该能够通过拟合一个或最多两个参数来准确地再现分位数。找到拟合的最佳技术将取决于您使用的分布形式,但更重要的是,它将取决于您打算将结果用于什么. 您需要估算平均支出金额吗?消费上限和下限?无论是什么,您都希望采用某种拟合优度度量,这将使您有最好的机会根据您的结果做出正确的决定。例如,如果您的兴趣集中在所有支出的前 10%,您将希望准确拟合第 95 个百分位,而您可能不太关心拟合第 5 个百分位。任何复杂的装配技术都不会为您考虑这些因素。

当然,没有人可以合理地保证这种以数据为依据、以决策为导向的方法会比某些统计方法表现更好(或更差),但是——与纯粹的统计方法不同——这种方法有一个基于现实的基础,专注于您的需求,使其具有一定的可信度和抵御批评的能力。

试试rriskDistributions包,如果您确定对数正态分布系列,请使用命令

get.lnorm.par(p=c(0.05,0.5,0.95),q=c(8.135,11.259,23.611))

这应该可以解决您的问题。fit.perc如果您不想限制为一个已知的 pdf,请改用

对于对数正态,第 95 个百分位数与中位数的比率与中位数与第 5 个百分位数的比率相同。这在这里甚至都不是真的,所以对数正态不适合。

您有足够的信息来拟合具有三个参数的分布,显然您需要一个偏斜分布。为了分析简单起见,我建议将移位的对数逻辑分布作为其分位数函数(即其累积分布函数的倒数)可以写成相当简单的封闭形式,因此您应该能够获得封闭形式的表达式它的三个参数根据你的三个分位数和一些代数(我会把它留作练习!)。此分布用于洪水频率分析。

不过,这不会给你任何迹象表明其他分位数估计值的不确定性。我不知道你是否需要,但作为一名统计学家,我觉得我应该能够提供它,所以我对这个答案并不满意。我当然不会使用这种方法或任何方法来推断(很多)超出第 5 到第 95 个百分位数的范围。