基于Python状态模型的非线性最小二乘法

2024-09-27 07:32:36 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python库statsmodels中,是否可以使用非线性参数执行非线性最小二乘拟合?换句话说,我想在以下统计模型中找到p的最佳拟合(最小二乘法):

y=ln(p)*x^2+p

假设我有一组观察值x和y,我可以使用函数scipy.optimize.leatsq寻找最合适的。下面是一个例子:

import numpy as np
import scipy.optimize as spopt
import matplotlib.pyplot as plt

def fitFunc(p,x):
    return np.log(p[0])*x**2 + p[0]
def errFunc(p,x,y):
    return fitFunc(p,x)-y

# create x, y and y_true
nSample = 100
x = np.linspace(-10,10,nSample)
y_true = fitFunc([1.2],x)
err = np.random.normal(scale=7.0,size=nSample)
y = y_true+err

# find optimal p with least-square and plot it
p1, success = spopt.leastsq(errFunc, [2], args=(x,y))

plt.figure()
plt.scatter(x,y,label='obsevation')
plt.plot(x,y_true,label='true y')
plt.plot(x,fitFunc(p1,x),label='model')
plt.grid(True)
plt.legend()

是否有可能使用库statsmodels执行此类分析?在


Tags: importtruereturnplotdefasnpplt

热门问题