【发布时间】:2017-08-26 08:29:20
【问题描述】:
我正在尝试找到适合我的数据的最佳分布曲线,其中包含
y-axis = [0, 0, 0, 0, 0.24, 0.53, 0.49, 0.64, 0.54, 0.78, 0.59, 0.44,
0.34, 0.88, 0.2, 0.49, 0.39, 0.39, 0.29, 0.2, 0.05, 0.05,
0.25, 0.05, 0.1, 0.15, 0.1, 0.1, 0.1, 0, 0, 0, 0, 0]
y 轴是事件在 x 轴时间段中发生的概率:
x-axis = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,
12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0,
22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0,
32.0, 33.0, 34.0]
我在Fitting empirical distribution to theoretical ones with Scipy (Python)?上提供的示例下面的python中这样做
具体来说,我正在尝试重新创建名为“带有平方误差和 (SSE) 的分布拟合”的部分,您可以在其中运行不同的分布以找到与数据的正确拟合。
如何修改该示例以使其适用于我的数据输入?回答了
根据比尔的回应更新版本,但现在尝试根据数据绘制拟合曲线并看到一些东西:
%matplotlib inline
import matplotlib.pyplot as plt
import scipy
import scipy.stats
import numpy as np
from scipy.stats import gamma, lognorm, loglaplace
from scipy.optimize import curve_fit
x_axis = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0]
y_axis = [0, 0, 0, 0, 0.24, 0.53, 0.49, 0.64, 0.54, 0.78, 0.59, 0.44, 0.34, 0.88, 0.2, 0.49, 0.39, 0.39, 0.29, 0.2, 0.05, 0.05, 0.25, 0.05, 0.1, 0.15, 0.1, 0.1, 0.1, 0, 0, 0, 0, 0]
matplotlib.rcParams['figure.figsize'] = (16.0, 12.0)
matplotlib.style.use('ggplot')
def f(x, a, loc, scale):
return gamma.pdf(x, a, loc, scale)
result, pcov = curve_fit(f, x_axis, y_axis)
# get curve shape, location, scale
shape = result[:-2]
loc = result[-2]
scale = result[-1]
# construct the curve
x = np.linspace(0, 36, 100)
y = f(x, *result)
plt.bar(x_axis, y_axis, width, alpha=0.75)
plt.plot(x, y, c='g')
【问题讨论】:
-
你为什么不向我们展示你尝试过的东西,并解释它为什么没有按照你想要的方式工作。
-
其实很多东西在这里看起来很混乱。如果 y-s 是来自 [0, 1] 内的随机变量的样本,那么为什么要构建具有范围(48)的直方图?这没有任何意义,因为所有样本都将始终位于第一个 bin 中。如果否则 y 是 x 的函数,那么它实际上不是随机变量的样本,我不明白你想用这段代码拟合什么分布
-
所以我有一个假设的 x y 函数,我试图找到/拟合一条能够最好地塑造数据的分布曲线。在这种情况下,y 是彩票游戏中一个期限(47 个月期限)的月份,其中 x 是在该特定月份赢得彩票的概率。我查看了历史数据并以这种方式对数据进行分组以获得每个月的概率。现在我想通过分布曲线的形状找到适合我的数据的简单方程。
标签: python numpy scipy statistics distribution