You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中指定consumption=Aexp(Bt)型非线性回归模型

计量经济学作业建模问题求助

我目前正在修读计量经济学课程,想试着用Python替代作业指定的商用软件STATA和EVIEWS来完成建模任务。手里有一份时间序列消费数据,需要用两种方法建模:

  • 第一种是拟合非线性回归模型:consumption = A*exp(Bt)
  • 第二种是对模型两边取对数后做普通最小二乘(OLS)回归,也就是log(consumption) = alpha + Bt,这个方法我已经掌握了。

但在实现第一种非线性回归模型时,我遇到了不少麻烦:

  1. statsmodels的问题:我对时间数据做了归一化后进行指数变换,结果得到的却是consumption = A*exp(t) + B形式的模型,这根本不是我想要的——我需要能自定义参数位置的建模方式。
  2. sklearn的局限:sklearn只支持多项式回归,没有直接的指数回归功能,没法满足需求。
  3. scipy.curve_fit的两个棘手问题:
    • 这个方法依赖参数的初始猜测,这意味着我的结果可能和商用软件的输出不一致,但我觉得指数回归属于标准模型,不应该依赖迭代初始值;
    • 每次运行代码,返回的参数值居然就是我设定的初始猜测值,完全没有迭代优化的效果。

我的scipy代码如下:

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--',)

内容的提问来源于stack exchange,提问作者riemann_lebesgue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:57:51