Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用最大似然估计实现的曲线拟合不起作用_Python_Scipy_Curve Fitting_Statsmodels_Log Likelihood - Fatal编程技术网

Python 使用最大似然估计实现的曲线拟合不起作用

Python 使用最大似然估计实现的曲线拟合不起作用,python,scipy,curve-fitting,statsmodels,log-likelihood,Python,Scipy,Curve Fitting,Statsmodels,Log Likelihood,为了曲线拟合的目的,我正在为离散计数数据实现一个最大似然估计,使用curve\u fit的结果作为minimize的起点。我为多个发行版定义并尝试了这些方法,但为了简单起见,将只包括一个,即logseries发行版 此时,我还尝试了statsmodels方法中的以下方法: statsmodels.discrete.discrete_model.fit statsmodels.discrete.count_model.fit statsmodels.base.model.GenericLikeli

为了曲线拟合的目的,我正在为离散计数数据实现一个最大似然估计,使用
curve\u fit
的结果作为
minimize
的起点。我为多个发行版定义并尝试了这些方法,但为了简单起见,将只包括一个,即logseries发行版

此时,我还尝试了statsmodels方法中的以下方法:

  • statsmodels.discrete.discrete_model.fit
  • statsmodels.discrete.count_model.fit
  • statsmodels.base.model.GenericLikelihoodModel
  • 大多数曲线拟合往往会出现溢出错误或内部出现“南”和“零”。我将在另一篇文章中详细介绍这些错误

    #导入几个包
    将numpy作为np导入
    从scipy.optimize导入曲线\u拟合
    从scipy.optimize导入最小化
    从scipy导入统计信息
    从numpy导入日志
    将numpy作为np导入
    将matplotlib.pyplot作为plt导入
    #给定数据
    x=np.arange(1,28,1)
    y=np.数组([188991042762804281273618351158746467328201129,65,69,39,21,15,10,3,3,1,1,1,1,1,1,1,1,1])
    #定义自定义分发
    def记录器(x,p):
    返回(-p**x)/(x*log(1-p))
    #进行最小二乘曲线拟合
    定义lsqfit(x,y):
    cf_结果=曲线拟合(Logser,x,y,p0=0.7,界限=(0.5,1),方法='trf')
    返回cf_结果
    param_guess=lsqfit(x,y)[0][0]
    打印(参数猜测)
    #执行自定义MLE定义,使用scipy最小化函数最小化
    定义回归(参数猜测):
    yhat=Logser(x,param#u guess)#基于参数值的预测
    sd=1#最初猜测用于拟合回归曲线周围的正态分布误差
    #接下来,我们翻转贝叶斯问题
    #计算平均值周围正态分布的观测值的PDF(yhat)
    #标准偏差为sd
    negLL=-np.sum(stats.norm.logpdf(y,loc=yhat,scale=sd))#概率密度函数的对数
    返回内格尔
    结果=最小化(MLE回归,参数猜测,方法='L-BFGS-B',界限=(0.5,1.0),选项={'disp':True})
    最终参数=结果['x']
    打印(最终参数)
    

    我已约束优化器,使其结果与我期望的结果相似(参数值约为0.8或0.9)。。该算法输出零,否则

    我认为这是由于缩放。当我通过添加比例因子将方程更改为“scale*(-p**X)/(X*log(1-p)),我在不使用任何边界的情况下得到以下值:p=9.0360470735534726E-01和scale=5.1189277041342692E+04,得出以下结果:


    我对p的拟合值实际上是0.9。

    我认为这是由于缩放。当我通过添加比例因子将方程更改为“scale*(-p**X)/(X*log(1-p)),我在不使用任何边界的情况下得到以下值:p=9.0360470735534726E-01和scale=5.1189277041342692E+04,得出以下结果:


    我对p的拟合值实际上是0.9。

    谢谢James!!在pdf中添加缩放项是否可以优化所有发行版??任何关于比例重要性的理论,以及为什么会发生这种情况?我现在已经老了,从经验中知道,比例因子、偏移量或两者有时都能帮助解决困难的回归问题——因此我尝试向方程中添加比例因子,它起到了作用,得到了预期的p=0.9。我没有应用任何理论,而是我那腐烂的旧大脑似乎觉得值得一试。谢谢詹姆斯!!在pdf中添加缩放项是否可以优化所有发行版??任何关于比例重要性的理论,以及为什么会发生这种情况?我现在已经老了,从经验中知道,比例因子、偏移量或两者有时都能帮助解决困难的回归问题——因此我尝试向方程中添加比例因子,它起到了作用,得到了预期的p=0.9。我没有运用任何理论,相反,我腐朽的旧大脑似乎认为它值得一试。