Pythonのstatsmodelsモジュールを用いて重みづけ最小2乗法を行う
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
にほんブログ村 教育ブログへ
にほんブログ村
インターネット・コンピュータランキング
インターネット・コンピュータランキング
ブログ王ランキングに参加中!
PC関連ランキング
くる天 人気ブログランキング

Pythonのstatsmodelsモジュールを用いて重みづけ最小2乗法を行う
How to “Weighted Least Squares” using Python
」への3件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です