研究日記

学習内容の記録です。わからないことばかりです。

【R】attempting model selection on an essentially perfect fit is nonsense

Rで線形回帰を行った時に出力された警告について

 

線形回帰時の条件

・関数 lm を用いてデータセットに線形重回帰分析を実施

・変数選択に stepwise を使用

・交差検証を実施 

 

出力内容

 *attempting model selection on an essentially perfect fit is nonsense*

 

モデルの変数選択において完全にパーフェクトなもの(モデル)における変数選択はナンセンスである,というようなニュアンスの警告文なのでしょうか.

 

この出力されたエラー文で検索してみると,

r.789695.n4.nabble.com

discuss.analyticsvidhya.com

 

Q&Aサイトでいくつか取り上げられているが,明確な回答はなし.

しかし,いくつか参考になったことは以下2点.

 

・Rの lm 関数では上記のような警告文は出力されない

・従属変数と独立変数の相関を調べてみるべし

 

このことからこの警告文は変数選択で使用している step 関数が出力していると推測.

さらにどうやらデータセットの独立変数の中に相関が強いものがある可能性があるため,相関を調べてみるとよいかもしれない.

 

まず,警告文の出力元を調べてみる.

線形重回帰モデルの構築時の変数選択を行わないようにプログラムを変更.

(stepwiseをおこなわない)

 

すると確かに先ほどの警告文は消えた.やはり出力元は step 関数だったよう.

 

次に従属変数と独立変数の相関を調査.

cor 関数を用いて独立変数を一つ一つ調べてみると,

ある独立変数で以下のような値をとるものを発見.

f:id:kento12021:20181019144030p:plain

従属変数 Effort と独立変数 RAWFP の相関が非常に強く,ほぼ1となっていることがわかる.p値の結果からも有意であることが読み取れます.

 

要するにこの結果から警告文についてまとめると,

データセットの中に従属変数と独立変数の相関が非常に大きいものがあり,線形回帰でモデルを構築する際に変数選択しても,モデル式がその相関の強い従属変数に強く依存してしまうため,変数選択しても意味ないよ

というような警告を step 関数が発している可能性が考えられる.

 

 

あくまで筆者自身の結果と考察なので間違っている部分が多く至らぬ部分も多いと思いますがご容赦ください.