Надежные стандартные ошибки в sklearn.LinearRegression - PullRequest
1 голос
/ 06 ноября 2019

У меня есть фрагмент кода, который создает сводную линейную регрессию, как в 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, которые получают устойчивые стандартные ошибки.

Есть ли способы реализовать то же самое cov_type = 'HC0' в линейной регрессии sklearn?

...