如何在python中指定非线性回归模型

问题描述 投票:0回答:1

[我正在上计量经济学课程,并且一直在尝试使用Python而不是他们在其中设置作业的专有STATA和EVIEWS。

其中一个问题是我有一段时间的消费数据。我被要求以两种方式进行计算。

第一种方法是计算消耗量= Aexp(Bt)形式的模型,第二种方法是记录双方并在log(consumption)= alpha + Bt上进行普通OLS

我知道第二种方法。但是,当我尝试第一种方法时,它就会出错。使用statsmodels,我可以对时间数据求幂(归一化之后),但是这会以消耗= Aexp(t)+ B的形式计算出回归,这不是我想要的。 (我想指定参数的位置)。在sklearn中,我可以找到多项式回归,但不是指数回归。

然后我找到了scipy.curve_fit但是,这似乎有两个问题:(1)它似乎依赖于对参数的初始猜测,这意味着我的输出最终将不同于专有软件(而OLS之类的东西的输出是相同的)[因为我认为初始猜测意味着完成了一些迭代解,对于非常奇怪和奇妙的功能很有帮助,但我认为相当标准的结果适用于指数回归](2)每当我尝试实现它时,它只会返回猜测参数。

这是我的代码

`consumption_data = pd.read_csv(......\consumption.csv")
def func(x,a,b):
    return a * np.exp(b*x)

xdata = consumption_data.YEAR
ydata = consumption_data.CONSUMPTION
ydata = (ydata - 1948)/100

popt, pcov = curve_fit(func, xdata, ydata, (1,1))
print(popt)

plt.plot(xdata, func(xdata, *popt), 'g--',)
`

scipy.optimize代码基本上只是从其教程中复制粘贴的https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html

scipy regression statsmodels non-linear-regression scipy-optimize
1个回答
0
投票

简短答案:

© www.soinside.com 2019 - 2024. All rights reserved.