如何用python做没有截距项的多元回归?

如果是在做误差修正模型,一定要注意这一块,如果你没有把误差修正项拆开的话,原模型是不带截距项的,而LinearRegression()是默认带截距项的。

from sklearn import linear_model
ecm_clf = linear_model.LinearRegression(fit_intercept=False)
ecm_clf.fit(X,Y)

X和Y的shape都是(n_periods, m_features)

哥们我是没找到看相关统计量的方法,可能这个机器学习包根本没有提供统计量的计算。所以再介绍另一种方法:

 import numpy as np
 import pandas as pd
 import statsmodels.api as sm
 
# X为解释变量,y为被解释变量
# 为模型增加常数项,即回归线在 y 轴上的截距
 X=sm.add_constant(X)
 est=sm.OLS(y,X)
 
 # 查看模型拟合的结果
 est=est.fit()
 est.summary()

# 查看最终模型的参数
est.params

# 选择 100 个从最小值到最大值平均分布(equally spaced)的数据点
X_prime=np.linspace(X.GNP.min(), X.GNP.max(),100)[:,np.newaxis]
X_prime=sm.add_constant(X_prime)
# 计算预测值
y_hat=est.predict(X_prime)

使用了statsmodels.api果然很爽,不但能轻松导出模型的参数,还能输出残差和好看的回归检验表:

# 参数
est.params
# 残差
est.resid

在这里插入图片描述你看,输出回归结果表的时候,下面还友好的告诉你这个模型可能出现的问题:条件数较大,为1.13e+03;这可能表明存在强烈的多重共线性或其他数值问题。这简直不能更人性化了。

用python做回归,在操作难度上你肯定不能和Eviews/Excel/stata/SPSS相比,因为那些都是傻瓜软件,如果你想更自由的处理数据,那么选用python或者Matlab吧。鄙人自从用了python,已经弃用Matlab好久了,哈哈。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值