sklearn.LinearRegression中的鲁棒标准错误

时间:2019-11-06 09:47:03

标签: python pandas scikit-learn linear-regression statsmodels

我有一段代码可以创建线性回归摘要,如statsmodels.api.OLS(X, y).fit().summary()

lm = LinearRegression()
lm.fit(X, y)
params = np.append(lm.intercept_, lm.coef_)
predictions = lm.predict(X)

X_const = pd.concat([X, pd.DataFrame({'const: np.ones(len(X))})\
                                          .set_index(X.index)], axis = 1)

MSE = sum((y - predictions) ** 2) / len(X_const)

var_b = MSE * (np.linalg.inv(np.dot(X_const.T, X_const)).diagonal())
std = np.round(np.sqrt(var_b), 3)
tval = np.round(params / std, 3)
pval = np.round([2 * (1 - stats.t.cdf(np.abs(i), (len(X_const) - 1))) for i in tval], 3)

summary = pd.DataFrame({'feature_name': ['const'] + X.columns.tolist(),
                      'coef': params, 'std': std, 't': tval, 'p_value': pval})

print(summary)

该代码的输出是一个表:

    feature_name    coef    std t   p_value
0   const       -70.491203  1.481   -47.597 0.000
1   season     13.668229    9.790   1.396   0.163
2   holiday    -7.823670    3.498   -2.237  0.025
3   workingday  -0.228692   0.193   -1.185  0.236
4   atemp       8.020878    0.195   41.133  0.000
5   windspeed   3.003974    6.554   0.458   0.647

但是,如果我使用statsmodels.api.OLS(X, y).fit(cov_type = 'HC0')会获得可靠的标准错误,则统计信息与cov_type = 'HC0的值会有所不同。

有什么方法可以在sklearn的线性回归中实现相同的cov_type = 'HC0'吗?

0 个答案:

没有答案