Des*_*ova 1 python distribution scipy cdf
我有一个数据包丢失的 CDF 分布图。因此,我没有原始数据或 CDF 模型本身,而是来自 CDF 曲线的样本。(数据是从文献中发表的图表中提取的。)
我想找到哪种分布以及哪些参数最适合 CDF 样本。
我已经看到 Scipy 统计分布提供 fit(data) 方法,但所有示例都适用于原始数据点。随后根据拟合参数得出 PDF/CDF。对我的 CDF 样本使用拟合不会给出合理的结果。
我是否正确地假设 fit() 不能直接应用于经验 CDF 中的数据样本?
我可以使用哪些替代方法来查找匹配的已知分布?
我不确定你到底想做什么。当你说你有 CDF 时,这是什么意思?您有一些数据点或函数本身吗?如果您可以发布更多信息或一些示例数据,将会很有帮助。
如果您有一些数据点并且知道分布,那么使用 scipy 并不难做到。如果您不知道该分布,您可以迭代所有分布,直到找到一个效果相当好的分布。
我们可以定义 所需形式的函数scipy.optimize.curve_fit。即第一个参数应该是x,然后其他参数都是形参。
我使用此函数根据带有一点附加噪声的正态随机变量的 CDF 生成一些测试数据。
n = 100
x = np.linspace(-4,4,n)
f = lambda x,mu,sigma: scipy.stats.norm(mu,sigma).cdf(x)
data = f(x,0.2,1) + 0.05*np.random.randn(n)
Run Code Online (Sandbox Code Playgroud)
现在,使用curve_fit来查找参数。
mu,sigma = scipy.optimize.curve_fit(f,x,data)[0]
Run Code Online (Sandbox Code Playgroud)
这给出了输出
>> mu,sigma
0.1828320963531838, 0.9452044983927278
Run Code Online (Sandbox Code Playgroud)
我们可以绘制原始 CDF(橙色)、噪声数据并拟合 CDF(蓝色),并观察其效果非常好。

请注意,curve_fit可以采用一些附加参数,并且输出提供有关函数拟合程度的附加信息。
| 归档时间: |
|
| 查看次数: |
4938 次 |
| 最近记录: |