python - 我如何将切比雪夫不等式应用于这种情况?
问题描述
我有一个包含高度的数据框。数据不能低于零。这就是为什么我不能使用标准差,因为这个数据不是正态分布。我不能在这里使用 68-95-99.7 规则,因为在我的情况下它失败了。这是我的数据框,平均值和 SD。
0.77132064
0.02075195
0.63364823
0.74880388
0.49850701
0.22479665
0.19806286
0.76053071
0.16911084
0.08833981
Mean: 0.41138725956196015
Std: 0.2860541519582141
如果我得到 2 标准,如您所见,数字变为负数。
-2 x std calculation = 0.41138725956196015 - 0.2860541519582141 x 2 = -0,160721044354468
老实说,我尝试过使用percentile
并且对它不满意。我如何将切比雪夫不等式应用于这个问题?这是我到目前为止所做的:
np.polynomial.Chebyshev(df['Heights'])
但这返回的数字不是我可以测量的 SD 级别。还是您认为切比雪夫是我的最佳选择?
预期的解决方案:
I am expecting to get a range like 75% next height will be between 0.40 - 0.43 etc.
EDIT1:添加直方图
为了更清楚,我添加了我的真实数据的直方图
EDIT2:来自真实数据的一些值
Mean: 0.007041500928135767
Percentile 50: 0.0052000000000000934
Percentile 90: 0.015500000000000047
Std: 0.0063790857035425025
Var: 4.06873389299246e-05
非常感谢
解决方案
您似乎混淆了同一位数学家切比雪夫的两个想法。这些想法并不相同。
Chebysev 不等式陈述了一个事实,该事实对于许多概率分布都是正确的。对于两个标准偏差,它指出四分之三的数据项将位于平均值的两个标准偏差范围内。正如您所说,对于正态分布,大约 19/20 的项目将位于该区间内,但切比雪夫不等式是几乎所有分布都满足的绝对界限。您的数据值永远不会是负数这一事实不会改变不等式的真实性;它只是使区间中值的实际比例更大,因此不等式更加真实(在某种意义上)。
Chebyshev 多项式不涉及统计,而只是一系列(或两个系列)多项式,通常用于计算计算机函数的近似值。这就是所np.polynomial.Chebyshev
涉及的,因此对你来说似乎根本没有用。
所以自己计算切比雪夫不等式。不需要特殊功能,因为它非常简单(这是 Python 3 代码):
def Chebyshev_inequality(num_std_deviations):
return 1 - 1 / num_std_deviations**2
您可以更改它以处理k <= 1
想法很明显的情况。
在您的特定情况下:不等式表示至少 3/4 或 75% 的数据项将位于平均值的 2 个标准差内,这意味着大于0.41138725956196015 - 2 * 0.2860541519582141
和小于0.41138725956196015 + 2 * 0.2860541519582141
(注意不同的符号),这简化了到区间
[-0.16072104435446805, 0.9834955634783884]
在您的数据中,100% 的数据值都在该区间内,因此切比雪夫不等式是正确的(当然)。
现在,如果您的目标是预测或估计某个百分位数的位置,那么切比雪夫不等式并没有多大帮助。它是一个绝对下限,因此它为百分位数提供了一个限制。例如,通过我们上面所做的,我们知道第 12.5 个百分位等于或高于-0.16072104435446805
,而第 87.5 个百分位等于或低于0.9834955634783884
。这些事实是真实的,但可能不是你想要的。如果您想要一个更接近实际百分位数的估计值,这不是要走的路。68-95-99.7 规则是一个估计值——实际位置可能更高或更低,但如果分布正常,则估计值不会相差太远。切比雪夫不等式不做这种估计。
如果您想估计第 12.5 和第 87.5 的百分位数(显示所有人口的 75% 将下降的位置),您应该计算样本的这些百分位数并使用这些值。如果您不了解有关您拥有的分发类型的更多详细信息,我看不出有更好的方法。正态分布如此受欢迎是有原因的!
推荐阅读
- wordpress - WordPress CPT 编号分页
- python - Django 模型:如何在我的视图中获取模型对象
- javascript - 将渲染图像添加到数组 onclick 以使用 JS 提交
- python - Python代码中的MySQL查询编程错误
- beautifulsoup - 计算机找不到 bs4 & beautifulsoup4,虽然它已安装
- python - Matplotlib 错误栏顶部和底部的额外空间
- serialization - 如何使用 protobuf 反射来保证确定性序列化
- python - 为什么在替换文件中的文本时代码不起作用
- python - 在循环中使用和添加到 pygame 批处理
- windows - 从非特权(标准)用户帐户自动更新 Windows C++ 应用程序