如果是在做误差修正模型,一定要注意这一块,如果你没有把误差修正项拆开的话,原模型是不带截距项的,而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好久了,哈哈。