我有一段代码可以创建线性回归摘要,如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'
吗?