サンプルソース
import numpy as np import statsmodels.api as sm from statsmodels.sandbox.regression.predstd import wls_prediction_std import matplotlib.pyplot as plt np.random.seed(1234) nsample = 30 x1 = np.linspace(0, 20, nsample) x = np.column_stack((x1, x1**0.5)) x = sm.add_constant(x) beta = [1, 0.5, 0.5] y = np.dot(x, beta) + np.random.normal(size=nsample) res = sm.OLS(y, x).fit() prstd, iv_l, iv_u = wls_prediction_std(res) plt.plot(x1, y, 'o', label="Data") plt.plot(x1, res.fittedvalues, 'r--') plt.plot(x1, iv_u, 'r--', label="Ordinary Least Squares") plt.plot(x1, iv_l, 'r--') plt.legend(loc="best"); plt.show()
wls_prediction_stdは、学習データに対する予測値の有意水準5%信頼区間を返してくれる。有意水準は引数alphaで自由に設定できる。また、学習データ以外のデータに対する予測を行いたい場合は、引数exogにデータを渡せばよい[3]。
結果
参考
[1] https://www.reddit.com/r/MachineLearning/comments/3raivl/code_to_calculate_confidence_interval_for_linear/
[2] http://scikit-learn.org/stable/auto_examples/ensemble/plot_gradient_boosting_quantile.html
[3] https://github.com/statsmodels/statsmodels/blob/master/statsmodels/sandbox/regression/predstd.py
0 件のコメント:
コメントを投稿