我有一个数据集,这是一个numpy数组,说a = [a1,a2,.....],而且数据的权重w = [w1,w2,w3 ...]。我使用numpy直方图包计算了直方图,它给出了hist数组。现在我想计算这个概率分布函数的中位数以及中位数周围的68%轮廓。记住我的数据集不是高斯数据。
有人可以帮忙吗?我正在使用python。
答案 0 :(得分:5)
这是使用scipy.stats.rv_discrete的解决方案:
from __future__ import division, print_function
import numpy as np, scipy.stats as st
# example data set
a = np.arange(20)
w = a + 1
# create custom discrete random variable from data set
rv = st.rv_discrete(values=(a, w/w.sum()))
# scipy.stats.rv_discrete has methods for median, confidence interval, etc.
print("median:", rv.median())
print("68% CI:", rv.interval(0.68))
输出反映了示例数据集中的不均匀权重:
median: 13.0
68% CI: (7.0, 18.0)