使数据适合概率分布,也许偏正态?

时间:2018-07-16 09:47:20

标签: python scipy statistics

我正在尝试使我的数据适合某种概率分布,因此我可以根据该分布生成随机数。下面是数据点的外观,x轴位于数据值后面,y轴位于概率后面。

Data plot

它们看起来像适合于偏态正态分布,均值约为10 ^ -4。该图的数据实际上是从原始数据集中进行分类的。我尝试使用scipy.stats库来适应原始数据的偏斜法线,但是该拟合根本不起作用。

我想知道是否有人知道将其适合任何PDF的方法?我图中的数据如下(由于过大,无法发布原始原始数据):

x = [2.0030289496413441e-07, 6.021220996561269e-07, 1.8100138940039783e-06, 5.4410065638820868e-06, 1.6355980761406714e-05, 4.916702516834233e-05, 0.00014779892439152631, 0.00044429212417263257, 0.0013355678494582283, 0.0040147942838919017, 0.012068704071088232, 0.036279223206999923, 0.10905744550124194, 0.32783299552460016, 0.98548496584223111, 2.9624248661943691, 8.9052206700550585, 26.769608940074498, 80.470994415019419, 241.90046842440222, 727.16681394735679, 2185.9055451626773, 6570.9586311220974, 19752.682098944373]

y (or P(x) in the diagram) = [2.2554525565554728e-05, 2.2554525565554728e-05, 3.1576335791776624e-05, 0.0013140978842667934, 0.00029833486088983759, 0.00083417571068968434, 0.0013023224717182351, 0.00030292744905932074, 0.00018784462533064236, 0.00015960011900197359, 5.231239486282394e-05, 4.8227744123750205e-05, 3.8972462681781172e-05, 2.9372389964277703e-05, 3.3001942979800356e-05, 2.8061790992628833e-05, 2.6056781088158009e-05, 2.522638138246609e-05, 2.4144908778509908e-05, 2.5086756895368843e-05, 2.3095834179128078e-05, 2.2554525565554745e-05, 2.2554525565554755e-05, 2.2554525565554728e-05]

1 个答案:

答案 0 :(得分:0)

您可以使用scipy.stats.skewnorm.fit(请参阅文档here)将数据拟合为偏正态分布。

skewnorm.fit从数据中返回形状,位置和比例参数的最大似然估计(MLE)。

from scipy import stats

# define your dataset here

# let's make a sample with pre-defined parameters to demonstrate how it works
a, loc, scale = 1.6, -0.2, 3.2
data = stats.skewnorm(a, loc, scale).rvs(10000)

# estimate parameters of the sample
a_estimate, loc_estimate, scale_estimate = stats.skewnorm.fit(data)
print(a_estimate, loc_estimate, scale_estimate)

输出:

  

1.5784198343540448 -0.18066366859003175 3.1817350641737274