【问题标题】:How do I estimate a percentile for a value given several other percentiles?给定其他几个百分位数,我如何估计一个值的百分位数?
【发布时间】:2020-10-27 20:17:27
【问题描述】:

鉴于世界卫生组织发布的女孩长度百分位数数据。这是某些月份的长度(以厘米为单位)。例如出生时 50% 的百分位数是 49.1 厘米。

Month   L   M   S   SD  P01 P1  P3  P5  P10 P15 P25 P50 P75 P85 P90 P95 P97 P99 P999
0   1   49.1477 0.0379  1.8627  43.4    44.8    45.6    46.1    46.8    47.2    47.9    49.1    50.4    51.1    51.5    52.2    52.7    53.5    54.9
1   1   53.6872 0.0364  1.9542  47.6    49.1    50  50.5    51.2    51.7    52.4    53.7    55  55.7    56.2    56.9    57.4    58.2    59.7
2   1   57.0673 0.03568 2.0362  50.8    52.3    53.2    53.7    54.5    55  55.7    57.1    58.4    59.2    59.7    60.4    60.9    61.8    63.4
3   1   59.8029 0.0352  2.1051  53.3    54.9    55.8    56.3    57.1    57.6    58.4    59.8    61.2    62  62.5    63.3    63.8    64.7    66.3

P01 是 0.1% 的百分位,P1 是 1% 的百分位,P50 是 50% 的百分位。

比如说,我有一个特定的(可能是小数)月份,比如 2.3 个月。 (身高测量将在出生后的特定天数进行,您可以将其除以 30.4375 得到小数月份)

我将如何在一个小数月内估算特定高度的百分位数?也就是说,不仅仅是看到它“在 P50 旁边”,而是说,那是关于“P62”

我想到的一种方法是进行线性插值,首先在第 2 个月和第 3 个月之间在所有固定百分位值之间进行。然后在这些时间插值的 P50 和 P75(或有数据的那两个百分位数)值之间进行线性插值。

我担心的是,因为这是一条钟形曲线,所以靠近中间的线性值可能离得太远而无法使用。

所以我在想,是否有一些公式,例如一条四边形曲线,您可以将其与固定的百分位值一起使用,然后针对给定的测量值在该曲线上获得精确值?

【问题讨论】:

  • 这看起来更像是一个Mathematics 问题,而不是一个编程问题。
  • 非常有趣的问题。这是一个二维插值问题。棘手的是确保插值的行为与基础数据的预期一致。特别是插值必须按月和百分位数增加。我能看到的最简单的方法是将数据分解成三角形(而不是正方形),找到新点落入的三角形,构造由下式确定的表面周围的点,并在该表面上进行评估。这是简单线性插值的二维模拟。
  • Cocoanetics,我不知道你是否找到了答案。无论如何,我一直在研究,它看起来像是一个标准的事情,这可能是你建议的,在一个方向上进行线性插值,然后在另一个方向上进行第二次线性插值,称为bilinear interpolation。事实证明,这实际上是一个插值二次曲线(特别是双曲面)。希望这会有所帮助。

标签: math statistics


【解决方案1】:

我根据两个示例解决了这个问题。第一个是我的大女儿,她最初相当长/高。

女孩年龄 49 天,60 厘米 除以 30.4375 = 1.61 个月

所以这是在第 1 个月和第 2 个月之间:

Month  P01 P1  P3  P5  P10 P15 P25 P50 P75 P85 P90 P95 P97 P99 P999
1   47.6    49.1    50  50.5    51.2    51.7    52.4    53.7    55  55.7    56.2    56.9    57.4    58.2    59.7
2   50.8    52.3    53.2    53.7    54.5    55  55.7    57.1    58.4    59.2    59.7    60.4    60.9    61.8    63.4

减去下个月:1.61 - 1 = 0.61

所以这个值是第 2 个月的 61%。

我会通过线性插值得到一个百分位线

对于每个百分位数,我可以在它之前和之后的月份行中插入值。

例如P01

p1 = 47.6, p2 = 50.8

P01 = p1 * (1.0 - 0.61) + p2 * (0.61) P01 = 18.564 + 30.988 = 49,552

Month   P01 P1  P3  P5  P10 P15 P25 P50 P75 P85 P90 P95 P97 P99 P999
1   47.6    49.1    50.0    50.5    51.2    51.7    52.4    53.7    55.0    55.7    56.2    56.9    57.4    58.2    59.7
2   50.8    52.3    53.2    53.7    54.5    55.0    55.7    57.1    58.4    59.2    59.7    60.4    60.9    61.8    63.4
1.6 49.552  51.052  51.952  52.452  53.213  53.713  54.413  55.774  57.074  57.835  58.335  59.035  59.535  60.396  61.957

60 厘米介于 59,535 (P97) 和 60,396 (P99) 之间。距离较低值 0.465,距离较高值 0.396。 0.465 是它们之间距离的 54% (0,861)

P = (1-0.54) * 97 + 0.54 * 99 = 44.62 + 53.46 = 98,08 圆角P98

事实证明,这是一个不好的例子。在极端情况下,百分位数非常接近,因此线性插值会给出类似的结果。但我的问题是中间的线性插值不准确。让我们做一个更好的例子。这次是和我的第二个女儿一起,她出生后就更加处于“中间地带”。

女孩年龄 119 天,60.5 厘米除以 30.4375 = 3.91 个月 - 所以我们在第 3 个月和第 4 个月之间进行插值:

Month   P01 P1  P3  P5  P10 P15 P25 P50 P75 P85 P90 P95 P97 P99 P999
3   53.3    54.9    55.8    56.3    57.1    57.6    58.4    59.8    61.2    62.0    62.5    63.3    63.8    64.7    66.3
4   55.4    57.1    58.0    58.5    59.3    59.8    60.6    62.1    63.5    64.3    64.9    65.7    66.2    67.1    68.8
3.91    55.211  56.902  57.802  58.302  59.102  59.602  60.402  61.893  63.293  64.093  64.684  65.484  65.984  66.884  68.575
        

60.5 厘米介于 60.402 (P25) 和 61.893 (P50) 之间 距离 1.491 的 0.098 = 6.6%

P = 25 * (1-0.066) + 50 * 0.066 = 23.35 + 3.3 = 26.65向上取整到 P27

为了将其与钟形曲线上的近似值进行比较,我使用了online calculator/plotter

这需要一个平均值和一个标准差,我想我是在百分位表最左边的列上找到的。但我还需要在 3.91 月插入这些内容:

Month   L   M   S   SD
    3    1.0 59.8029 0.0352  2.1051
4   1.0 62.0899 0.03486 2.1645
3.91    1.0 61.88407    0.0348906   2.159154
    

我不知道 L 和 S 是什么意思,但 M 可能意味着 MEAN,SD 可能意味着标准偏差。

将它们插入在线绘图仪......

μ = 61.88407σ = 2.159154x = 60.5

在线绘图仪给我的结果是 P(X

这与我通过线性插值得到的 P27 相距甚远,需要更准确的方法。

我搜索了一下,偶然发现了great explanation of z-Scores

Z-Score 是某个数据点与平均值的标准差数。

(x - M) / SD = -0.651

然后我可以通过咨询z-score table 将其转换为百分位数。

在左侧垂直向上查找 -0.6,然后水平向上查找 0.05,我得到0.25785

所以轮到也是P26。

所以这是一种可行的方法,尽管它需要我实现这些 z-Tables 以便我可以在应用程序中实现它。我找到了一个Swift package,它提供了多种统计功能。

“正态分布”的函数描述为

返回给定 x、μ 和 σ 值的正态分布。返回值为x值左侧正态曲线下面积。

我尝试了第二个例子,看看我在 P25 和 P50 之间的这个值会得到什么结果:

let y = Sigma.normalDistribution(x: 60, μ: 55.749061, σ: 2.00422)
// result 0.2607534748851712

这似乎与 P26 非常接近。它与 z 表中的值不同,0.25785,但它舍入到相同的整数百分位数。

对于第一个例子,在 P97 和 P99 之间,我们也得到了 P98 的舍入距离。

let y = Sigma.normalDistribution(x: 60, μ: 55.749061, σ: 2.00422)
// result 0.9830388548349042

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 2021-08-16
    • 2014-09-24
    • 2018-06-11
    • 2021-02-26
    • 2020-03-19
    • 2013-08-31
    • 2011-12-29
    • 2013-06-20
    相关资源
    最近更新 更多