Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何计算非高斯分布的中位数和中位数周围的68%置信区间?_Python_Numpy_Scipy_Statistics - Fatal编程技术网

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

在Python中,如何计算非高斯分布的中位数和中位数周围的68%置信区间?,python,numpy,scipy,statistics,Python,Numpy,Scipy,Statistics,我有一个数据集,它是一个numpy数组,比如a=[a1,a2,…],还有数据的权重w=[w1,w2,w3…]。我已经使用numpy直方图包计算了直方图,它给了我hist数组。现在我想计算这个概率分布函数的中位数,以及中位数周围68%的等高线。记住,我的数据集不是高斯分布的 有人能帮忙吗?我正在使用python。这里有一个解决方案,它使用: 输出反映了示例数据集中的不均匀权重: 中值:13.0 68%可信区间:(7.0,18.0) 看看。为了确认,对于您的数据集,w1给出了a1值的可能性,等等。我

我有一个数据集,它是一个numpy数组,比如a=[a1,a2,…],还有数据的权重w=[w1,w2,w3…]。我已经使用numpy直方图包计算了直方图,它给了我hist数组。现在我想计算这个概率分布函数的中位数,以及中位数周围68%的等高线。记住,我的数据集不是高斯分布的

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

这里有一个解决方案,它使用:

输出反映了示例数据集中的不均匀权重:

中值:13.0
68%可信区间:(7.0,18.0)

看看。为了确认,对于您的数据集,w1给出了a1值的可能性,等等。我注意到,即使答案“我觉得不错”,您也不必对问题的答案进行投票并接受。如果您认识到这些答案,您会发现人们更愿意提供帮助!毕竟,你得到了免费的帮助,通常来自专家!如果权重表示值的可能性,则您没有样本,但有总体描述(在本例中为离散随机变量),引导不是正确的做法。Re:置信区间,计算并不困难,但“仅仅是numpy.percentile”听起来并不正确。稍后将发布答案。手动计算68%的置信区间应如下所示:创建(ai,wi)对并按ai排序对。然后,从中间值开始,在每个方向上的总和(wi)增加34%。这将是维基百科计算置信区间的扩展。边缘情况/值需要仔细考虑(注意,例如Wikipedia有两个中位数情况),因此我很高兴scipy.stats有一个置信区间计算:非常感谢你。这是一种非常有用的、更干净的方法,可以做我真正需要的事情。
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))