java 概率分布_将概率分布拟合到数据并找到它的累积分布函数

本文讲述了如何使用Python的Scipy库来拟合数据以匹配exponentially modified Gaussian (EMG) 分布。作者遇到的问题包括优化过程的控制和初始参数选择,以及获取分布的累积分布函数(CDF)。通过展示代码片段和讨论遇到的挑战,作者寻求解决方案。
摘要由CSDN通过智能技术生成

我想在我的数据中加入非对称概率分布,我认为 exponentially modified Gaussian distribution 可以很好地代表我的数据 . 一世

m=array([ 16.25, 16.75, 17.25, 17.75, 18.25, 18.75, 19.25, 19.75,

20.25, 20.75, 21.25, 21.75, 22.25, 22.75, 23.25, 23.75,

24.25, 24.75, 25.25, 25.75, 26.25, 26.75, 27.25, 27.75,

28.25, 28.75, 29.25, 29.75, 30.25, 30.75])

pdf=array([ 0.00000000e+00, 2.40818784e-04, 1.38470801e-03,

1.62552679e-03, 3.07043949e-03, 3.37146297e-03,

5.47862733e-03, 8.36845274e-03, 1.61348585e-02,

1.92052980e-02, 2.79951836e-02, 3.97953040e-02,

4.95484648e-02, 7.09211318e-02, 9.50030102e-02,

1.40878989e-01, 1.90186635e-01, 2.42022878e-01,

2.77302830e-01, 2.69054786e-01, 2.40397351e-01,

1.74593618e-01, 9.16917520e-02, 2.41420831e-02,

7.22456352e-03, 3.01023480e-04, 0.00000000e+00,

0.00000000e+00, 0.00000000e+00, 6.02046960e-05])

我想使用scipy.optimize库,同时可以控制拟合的优点,并通过改变输入参数的初始条件来查看它以改善卡方 . 我写了以下代码:

import scipy.special as sse

from math import *

import numpy as np

import scipy.optimize

#defines the PDF of an exponentially modified Gaussian distribution

fitfunc =lambda p,x: 0.5*p[2]*np.exp(0.5*p[2]*(2*p[0]+p[2]*p[1]*p[1]-2*x))*sse.erfc((p[0]+p[2]*p[1]*p[1]-x)/(np.sqrt(2)*p[1]))

"""Deviations of data from fitted curve"""

errfunc = lambda p, x, y: fitfunc(p, x) - y

#initial values

p0=[24,1,1]

p1, success = scipy.optimize.leastsq(errfunc, p0, args=(pdf, m), maxfev=10000)

Update :嗯,我刚刚选择了 numpy.exp 并解决了第一个问题但仍然是最小的并没有给我可靠的输出,我该怎么办?另外,我也想获得这个发行版的 CDF .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值