如何计算Python中非高斯分布中值周围的中位数和68%置信区间?

时间:2016-10-06 11:00:03

标签: python numpy scipy statistics

我有一个数据集,这是一个numpy数组,说a = [a1,a2,.....],而且数据的权重w = [w1,w2,w3 ...]。我使用numpy直方图包计算了直方图,它给出了hist数组。现在我想计算这个概率分布函数的中位数以及中位数周围的68%轮廓。记住我的数据集不是高斯数据。

有人可以帮忙吗?我正在使用python。

1 个答案:

答案 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)