使用statmodels和numpy polyfit进行线性回归的不同截距值

kfgdxczn  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(150)

我使用statmodels回归拟合和numpy polyfit得到了两个不同的截距值。该模型是一个单变量的简单线性回归。
根据我使用的statsmodels回归:

results1 = smf.ols('np.log(NON_UND) ~ (np.log(Food_consumption))', data=Data2).fit()

在那里我收到以下结果:

coef    std err          t      P>|t|      [0.025      0.975]
--------------------------------------------------------------------------------------------
Intercept                    5.4433      0.270     20.154      0.000       4.911       5.976
np.log(Food_consumption)     1.1128      0.026     42.922      0.000       1.062       1.164

当绘制数据并使用numpy polyfit添加趋势线时,我收到了不同的截距值:

x = np.array((np.log(Data2.Food_consumption)))
y = np.array((np.log(Data2.NON_UND)*100))

z = np.polyfit(x, y, 1)

array([ 1.11278898, 10.04846693])

为什么我会得到两个不同的截距值?
先谢谢你了!

j1dl9f46

j1dl9f461#

这是因为您在第一次和第二次回归中使用了不同的线性模型。在第一次回归中,你对因变量和自变量都取对数,而在第二次回归中,你没有,另外,你把y乘以100。
为了获得与第二个规格中的第一个回归相同的结果,您需要确保回归模型与第一个完全相同。我建议你这样做:

x = np.log(np.array(((Data2.Food_consumption))))
y = np.log(np.array(((Data2.NON_UND))))

z = np.polyfit(x, y, 1)

第二个函数的输出应该和第一个函数的输出一样。

相关问题