查找均值落在某个范围内的概率 - Python、matplotlib

问题描述

我是 matplotlib 和统计的新手。尝试通过下面的例子学习,在理解和解决方面需要一些帮助。

我在下面添加一个条形图图像。我有 1992 年、1993 年、1994 年和 1995 年四年的样本数据。我为它们的均值和误差幅度绘制了 4 个条形图。此外,我允许用户绘制一个矩形以在 y 轴上选择一个范围。这在图像中显示为灰色水平矩形,ymax=46132 和 ymin=37527。现在的任务是将每个条形与此 y 轴范围进行比较,并评估每个分布的值是否落在 y 轴上所选范围内的概率,并相应地根据底部的颜色图为条形着色。

enter image description here

我已使用以下代码来计算此概率,但未显示正确结果。 df2 有 4 行,包含每个条的平均值和标准偏差。 ymax=46132 和 ymin=37527。

$this->_Redis->getLastError()

以下是输出 cdf 值。所有都接近于 0,因此 cmap 为所有条形设置浅色。根据我的理解,根据图像中当前的 y 轴范围,1993 年的条形图应该用深色(应该有更高的概率),1992 年和 1995 年用浅色(概率较低)和 1994 年可能用-颜色之间。

import pandas as pd
import matplotlib.cm as cm
import scipy.stats as st

cmap = cm.get_cmap('Reds')
df2 = pd.DataFrame(data=[[33312.107476,200630.901553,6508.897970],[41861.859541,98398.356203,3192.254314],[39493.304941,140369.925240,4553.902287],[47743.550969,69781.185469,2263.851744]],columns=['mean','std','MoE'],index=['1992','1993','1994','1995'])
ymax = 46132
ymin = 37527

for i in range(len(df2)):
    cdf_value = (st.norm(df2.iloc[i]['mean'],df2.iloc[i]['std']).cdf(ymax) - 
                 st.norm(df2.iloc[i]['mean'],df2.iloc[i]['std']).cdf(ymin))
    print(cdf_value)
    clr_shade = cmap(cdf_value)

请帮助我了解我做错了什么以及如何解决这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)