【发布时间】:2020-05-10 04:35:49
【问题描述】:
我正在尝试生成最佳指数分布(适合明智) 将具有以下特点:
1.结果的范围在[0,500]
2.CDF百分位数接近以下关系(.percentile,value) 0.3-50,0.5-100, 0.8:200,0.9-300, 0.95-400, 1-500
首先,我尝试通过 100 的中值约束来获得 lambda 系数: lambda=100/ln(2)= 0.006931 然后绘制分布:
data = np.random.exponential((1/0.006931), size=1000)
plt.hist(data,bins=30)
plt.show()
重新缩放到 [0,500]
data=(data-min(data))/(max(data)-min(data))*500
plt.hist(data,bins=30)
plt.show()
我试图将结果重新缩放到 500 并绘制直方图和 CDF,但我离类似于百分位数的红点还很远,我也想接近分布。
x = np.sort(data)
y = np.arange(1, len(x) +1) /len(x)
_ = plt.plot(x,y, marker ='.', linestyle='none')
x_percentile = np.array([0,50, 100, 200, 350, 400, 500])
y_percentile = np.array([0,30, 50, 80, 90, 95, 100])
plt.scatter(x_percentile, y_percentile/100,color='r')
plt.xlabel('results')
plt.ylabel('ECDF')
plt.show()
如何找到最接近我的问题的分布函数?
【问题讨论】:
-
如果它在 500 之后被限制为 0,那么它并不是真正的指数分布。您是否有这样的限制,即 CDF 在 x=0 时也应该为 0? “最佳”/最接近的指数分布可以通过曲线拟合到您的目标百分位数来找到。
-
嗯,是的,它不是经典的指数,但它应该在 [0,500] 范围内看起来“指数”
-
你检查我的答案了吗?够了吗?
标签: python statistics distribution exponential