如何⽤python做没有截距项的多元回归?
如果是在做误差修正模型,⼀定要注意这⼀块,如果你没有把误差修正项拆开的话,原模型是不带截距项的,⽽LinearRegression()是默认带截距项的。
from sklearn import linear_model
ecm_clf = linear_model.LinearRegression(fit_intercept=False)
ecm_clf.fit(X,Y)
linspace numpyX和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
# 残差
你看,输出回归结果表的时候,下⾯还友好的告诉你这个模型可能出现的问题:条件数较⼤,为1.13e+03;这可能表明存在强烈的多重共线性或其他数值问题。这简直不能更⼈性化了。
⽤python做回归,在操作难度上你肯定不能和Eviews/Excel/stata/SPSS相⽐,因为那些都是傻⽠软件,如果你想更⾃由的处理数据,那么选⽤python或者Matlab吧。鄙⼈⾃从⽤了python,已经弃⽤Matlab好久了,哈哈。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。