落とし穴¶
このページには、統計モデルの使用中に発生する可能性のある問題がリストされています。これらは、データ関連または統計的な問題、ソフトウェア設計、モデルの「非標準」使用、または, "特殊" なケースの結果である可能性があります。
statsmodelsには、診断チェックのためのいくつかの警告とヘルパー関数が用意されています(線形回帰における誤指定チェックの例については、この blog article を参照してください)。もちろん網羅的なものではありませんが、今後さらに多くの警告と診断関数が追加される予定です。
根底にある統計的問題はすべての統計パッケージで同じですが、極端なケースや特殊なケースの処理方法はソフトウェアの実装によって異なります。モデルが機能しない可能性のある特殊なケースについては、適切に対処できるようご報告ください。
異なるパラメータに適合させるための呼び出しを繰り返すこと¶
結果インスタンスは、多くの場合、対応するモデル インスタンスの属性にアクセスする必要があります。異なる引数を使用してモデルを複数回近似すると、モデルの属性が変更される可能性があります。これは、モデルが再適合された後、結果インスタンスが正しいモデル属性を指さなくなる可能性があることを意味します。
したがって、異なるフィット関数引数を使用してモデルをフィットさせる場合は、別々のモデルインスタンスを作成することをお勧めします。
例えば、これは後で使用するための結果インスタンスを保持していないので、問題なく動作します :
mod = AR(endog)
aic = []
for lag in range(1,11):
res = mod.fit(maxlag=lag)
aic.append(res.aic)
However, when we want to hold on to two different estimation results, then it is recommended to create two separate model instances.
mod1 = RLM(endog, exog)
res1 = mod1.fit(scale_est='mad')
mod2 = RLM(endog, exog)
res2 = mod2.fit(scale_est=sm.robust.scale.HuberScale())
未確認のパラメータ¶
ランク不足の exog、完全な多重共線性¶
GLS、RLM、GLMなどの線形モデルに基づくモデルでは、一般化逆行列が使用されます。これは次のことを意味します :
ランクが不足している行列ではエラーが発生しません
ほぼ完璧な多重共線性または悪条件の計画行列の場合、数値的に不安定な結果が生成される可能性があります。これが望ましい動作ではない場合、ユーザーは行列のランクまたは条件数を手動で確認する必要があります
注:statsmodelsは現在、データが再スケールされない場合、FilipのNISTベンチマークケースで失敗します。 このブログ を参照してください
最尤推定における不完全な収束¶
場合によっては、最尤推定量が存在しなかったり、パラメータが無限であったり、一意でなかったりすることがあります(たとえば、二項内生変数を持つモデルにおける(準)分離)。デフォルト設定では、最適化アルゴリズムが収束に到達せずに停止した場合、statsmodelsは警告を出力します。ただし、収束基準の誤りにより収束を示すことがあることを知っておくことが重要です(たとえば、目的関数の値は収束したが、パラメータは収束しなかった場合など)。一般に、ユーザーは収束を検証する必要があります。
バイナリ ロジット モデルおよびプロビット モデルの場合、完全な予測が検出された場合、statsmodels は例外を生成します。ただし、準完全な予測をチェックする機能はありません。
その他の問題¶
データの不十分な変動¶
小さなデータセットまたはカテゴリ変数内の小さなグループを含むデータの場合、データの変動が不十分である可能性があります。このような場合、結果が特定されなかったり、隠れた問題が発生したりする可能性があります。
現在知られている唯一のケースは、ロバスト線形モデル推定における完全適合です。 RLMでは、残差が 0 に等しい場合、例外は発生しませんが、この完全な適合により、一部の結果 (スケール = 0 および 0/0 除算) で NaN が生成される可能性があります (課題 #55)。
モデルのドメイン外の真のパラメータ¶
場合によっては、モデル内のパラメータに対するドメイン制限がデータと一致しないことがあります。このような場合、推定はパラメータ空間の境界に近いパラメータ値で停止する可能性がありますが、実行時エラーで失敗したり、最適化中にnanを生成したりする可能性もあります。
2 つの例 :
データがポアソンに対して過剰分散していない場合、つまり真のモデルがポアソンと同じ分散を持つか、分散が不足している場合に負の二項モデルを推定することは、負の二項分布の過剰分散の仮定と矛盾します。statsmodelsで実装されている対数尤度とその導関数は、ゼロ分散またはゼロ分散の正の近傍における分散パラメータに対して評価することはできません。
ゼロ膨張モデルは現在、膨張のモデルとして Logit または Probit を使用しています。これは、パラメータ空間の境界に膨張が存在せず、有効なパラメータ空間の外側にゼロの膨張が存在することを意味します。データにゼロ膨張がないか、またはゼロ収縮がある場合、ゼロ膨張モデルは最適化に失敗するか、膨張なしの境界に近づくことがよくあります。