How to “Weighted Least Squares” using Python
Pythonのstatsmodelsモジュールを用いて重みづけ最小2乗法を行う
How to “Weighted Least Squares” using Python
statsmodels.apiのWLS(Weighted Least Squares)クラスは、重み付き最小二乗法を用いて回帰モデルを構築するためのクラスです。通常の最小二乗法では、各データポイントは等しい重みを持つと仮定されますが、WLSクラスでは異なる観測値に異なる重みを適用することができます。
以下に、statsmodels.apiのWLSクラスの一部のプロパティとメソッドをコードとともに解説します。
,code>import numpy as np
import statsmodels.api as sm
# サンプルデータの生成
np.random.seed(123)
X = np.random.rand(100, 2)
y = 2 * X[:, 0] + 3 * X[:, 1] + 0.5 * np.random.randn(100)
weights = np.arange(1, 101)
# WLSモデルの構築
wls_model = sm.WLS(y, sm.add_constant(X), weights=1/weights)
# モデルの適合
results = wls_model.fit()
# プロパティの例
print("Parameters:")
print(results.params)
print("\nCovariance Matrix:")
print(results.cov_params())
print("\nModel Endog (Dependent Variable):")
print(results.model.endog)
print("\nModel Exog (Independent Variables):")
print(results.model.exog)
# メソッドの例
print("\nModel Summary:")
print(results.summary())
print("\nPredictions:")
predictions = results.predict(sm.add_constant(X))
print(predictions.head())
この例では、WLSモデルを構築し、そのプロパティとメソッドをいくつか使用しています。
WLSクラスのプロパティ
WLSクラスのプロパティは多岐にわたりますが、主要なものを以下に示します。なお、これは一例であり、完全なリストは公式ドキュメントを参照してください。
WLSクラスの主要なプロパティと使用例
| プロパティ | 説明 | 使用例 |
|---|---|---|
| aic | 赤池情報量基準 (AIC) を返します。 | aic_value = wls_results.aic |
| bic | ベイズ情報量基準 (BIC) を返します。 | bic_value = wls_results.bic |
| bse | 推定されたパラメータの標準誤差を返します。 | bse_values = wls_results.bse |
| centered_tss | 中心化された総平方和を返します。 | centered_tss = wls_results.centered_tss |
| conf_int() | パラメータの信頼区間を計算します。 | conf_interval = wls_results.conf_int() |
| covariance_type | 推定された共分散構造の種類を返します。 | cov_type = wls_results.covariance_type |
| cov_kwds | 共分散行列の計算に使用されるキーワード引数を返します。 | cov_kwds = wls_results.cov_kwds |
| cov_params() | 推定されたパラメータの共分散行列を計算します。 | cov_matrix = wls_results.cov_params() |
| df_model | モデルの自由度を返します。 | df_model = wls_results.df_model |
| df_resid | 残差の自由度を返します。 | df_resid = wls_results.df_resid |
| eigenvals() | 推定された固有値を計算します。 | eigenvalues = wls_results.eigenvals() |
| f_pvalue | パラメータの全体の統計的有意性の p 値を返します。 | f_pvalue = wls_results.f_pvalue |
| fittedvalues | 推定されたモデルに基づいて計算された予測値を返します。 | predicted_values = wls_results.fittedvalues |
| get_influence() | 推定値の影響を計算するオブジェクトを返します。 | influence = wls_results.get_influence() |
| get_prediction() | 予測値および予測区間を計算します。 | prediction = wls_results.get_prediction() |
| get_robustcov_results() | ロバスト共分散行列を取得します。 | robust_results = wls_results.get_robustcov_results() |
| get_sigma_u() | モデルの残差に対する共分散行列の一部を返します。 | sigma_u = wls_results.get_sigma_u() |
| get_sigma_uhat() | 推定された残差に対する共分散行列の一部を返します。 | sigma_uhat = wls_results.get_sigma_uhat() |
| hat_matrix_diag | モデルのハット行列の対角成分を返します。 | hat_diag = wls_results.hat_matrix_diag |
| k_constant | モデルに切片が含まれている場合は 1、そうでない場合は 0 を返します。 | constant = wls_results.k_constant |
| llf | ログ尤度を返します。 | log_likelihood = wls_results.llf |
| model | 推定されたモデルオブジェクトを返します。 | fitted_model = wls_results.model |
| nobs | モデル | |
| nobs | モデルへの観測値の数を返します。 | num_observations = wls_results.nobs |
| normalized_cov_params | 正規化された共分散行列を返します。 | normalized_cov = wls_results.normalized_cov_params |
| params | 推定されたモデルのパラメータを返します。 | model_parameters = wls_results.params |
| predict() | 新しいデータポイントの予測を生成します。 | predictions = wls_results.predict(new_data) |
| pvalues | パラメータの統計的有意性を示す p 値を返します。 | p_values = wls_results.pvalues |
| remove_data() | 内部のデータを削除します。 | wls_results.remove_data() |
| resid | 残差を返します。 | residuals = wls_results.resid |
| rsquared | 決定係数 (R^2) を返します。 | r_squared = wls_results.rsquared |
| rsquared_adj | 調整済み決定係数を返します。 | r_squared_adj = wls_results.rsquared_adj |
| save() | 結果をファイルに保存します。 | wls_results.save(“output_results.pkl”) |
| scale | 推定されたモデルのスケールを返します。 | model_scale = wls_results.scale |
| summary() | モデルの要約統計量を表示します。 | wls_results.summary() |
| summary2() | より詳細なモデルの要約統計量を表示します。 | wls_results.summary2() |
| tvalues | パラメータの t 値を返します。 | t_values = wls_results.tvalues |
| uncentered_tss | 中心化されていない総平方和を返します。 | uncentered_tss = wls_results.uncentered_tss |
| wresid | 重み付き残差を返します。 | w_residuals = wls_results.wresid |
WLSクラスのメソッド
WLSクラスのメソッドは多岐にわたりますが、主要なものを以下に示します。なお、これは一例であり、完全なリストは公式ドキュメントを参照してください。
| メソッド | 説明 | 使用例 |
|---|---|---|
| abs_bse() | 推定されたパラメータの絶対値の標準誤差を返します。 | abs_bse = results.abs_bse() |
| aic() | 赤池情報量基準 (AIC) を計算します。 | aic_value = results.aic() |
| bic() | ベイズ情報量基準 (BIC) を計算します。 | bic_value = results.bic() |
| bse | 推定されたパラメータの標準誤差を返します。 | bse_values = results.bse |
| centered_tss() | 中心化された総平方和 (centered total sum of squares) を返します。 | centered_tss = results.centered_tss() |
| compare_f_test() | 2つの制約モデルの F 検定を比較します。 | f_test_result = results.compare_f_test(other_results) |
| compare_lm_test() | 2つの制約モデルの LM (Likelihood Ratio) 検定を比較します。 | lm_test_result = results.compare_lm_test(other_results) |
| compare_lr_test() | 2つの制約モデルの LR (Likelihood Ratio) 検定を比較します。 | lr_test_result = results.compare_lr_test(other_results) |
| conf_int() | パラメータの信頼区間を計算します。 | confidence_interval = results.conf_int() |
| conf_int_el() | エラスティックネット用の信頼区間を計算します。 | confidence_interval_el = results.conf_int_el() |
| covariance_type | 推定された共分散構造の種類を返します。 | cov_type = results.covariance_type |
| cov_kwds | 共分散行列の計算に使用されるキーワード引数を返します。 | cov_kwds = results.cov_kwds |
| cov_params() | 推定されたパラメータの共分散行列を計算します。 | cov_matrix = results.cov_params() |
| cov_params_default() | 共分散行列のデフォルトの計算方法による共分散行列を返します。 | cov_matrix_default = results.cov_params_default() |
| cov_white() | ホワイトの非自己相関共分散行列を計算します。 | cov_white_matrix = results.cov_white() |
| df_model | モデルの自由度を返します。 | degrees_of_freedom_model = results.df_model |
| df_resid | 残差の自由度を返します。 | degrees_of_freedom_resid = results.df_resid |
| eigenvals() | 推定された固有値を計算します。 | eigenvalues = results.eigenvals() |
| el_test() | エラスティックネットの制約テストを行います。 | el_test_result = results.el_test() |
| f_pvalue | パラメータの全体の統計的有意性の p 値を返します。 | f_pvalue = results.f_pvalue |
| fittedvalues | 推定されたモデルに基づいて計算された予測値を返します。 | predicted_values = results.fittedvalues |
| get_influence() | 推定値の影響を計算するオブジェクトを返します。 | influence = results.get_influence() |
| get_prediction() | 予測値および予測区間を計算します。 | prediction = results.get_prediction() |
| get_robustcov_results() | ロバスト共分散行列を取得します。 | robust_results = results.get_robustcov_results() |
| get_sigma_u() | モデルの残差に対する共分散行列の一部を返します。 | sigma_u = results.get_sigma_u() |
| get_sigma_uhat() | 推定された残差に対する共分散行列の一部を返します。 | sigma_uhat = results.get_sigma_uhat() |
| hat_matrix_diag | モデルのハット行列の対角成分を返します。 | hat_diag = results.hat_matrix_diag |
| k_constant | モデルに切片が含まれている場合は 1、そうでない場合は 0 を返します。 | constant = results.k_constant |
| llf | ログ尤度を返します。 | log_likelihood |
- Pythonのstatsmodels.apiを使って分位点回帰を行う
- Pythonのstatsmodels.apiを用いてロジスティック回帰を行う
- Pythonでプロビットモデルを推定する
- Pythonのstatsmodelsを使って多項ロジットモデルを推定する
- Pythonのstatsmodelsを使ってポワソン回帰モデルを推定する
- Pythonのstatsmodelsを使って負の2項分布回帰モデルを推定する
- UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0xef in position 0: illegal multibyte sequence
にほんブログ村

インターネット・コンピュータランキング
ブログ王ランキングに参加中!
PC関連ランキング
「Pythonのstatsmodelsモジュールを用いて重みづけ最小2乗法を行う
How to “Weighted Least Squares” using Python」への3件のフィードバック
コメントは受け付けていません。