35539


Rで30の説明変数に対して重回帰分析を行ったところ、2つの説明変数でNA値が観測されました。  
（係数、標準誤差、T値、P値全てにおいて）  
なぜNA値が観測されたかを教えていただきたいのです。  
実データを使用している関係上、データを公開できないのですができるだけ詳しく特徴を記述します。（この情報が必要だということがあればご指摘ください）

この2つの説明変数はどちらともダミー変数で、同じグループ（そのグループの説明変数の数は11コ）に属します。  
（PC、スマホ、ガラケー、タブレットのデバイスのグループの中のPCとスマホのような位置にあたります）

全サンプル数は16000ほどで、その2つのダミー変数が1となるのは片方が391件、もう片方が16件です。（同じく16件ですがNA値が表示されていないものもあります）  
ダミー変数だけでなく量的変数も全30の説明変数の中に含まれています

<https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1217262307>  
では、説明変数が独立したものでないため起こると記載されていましたが、グループの中の2つでNA値が出ているのでこれには該当しないのかなと...

原因が思い当たる方がいらっしゃいましたらご教授のほどよろしくお願い致します。


CC BY-SA 3.0
2017-06-13T08:31:00.640
35536
2017-06-13T09:13:02.430
22488
question
r
Rで重回帰分析を行った際のNA値について


おそらくは，NAとなった説明変数と全く同じ，もしくは線形変換(定数倍して定数を加えたもの)されたような変数がそれぞれに存在しているのかも知れません。以下に説明用のコードを準備しました:

[code]

    # テストデータ作成
    # x2とx3の相関が1(つまり線型結合)となるよう設定
    df <- data.frame(
      y = rnorm(n = 10),
      x1 = rnorm(n = 10),
      x2 = rep(1:5, times = 2),
      x3 = rep(6:10, times = 2)
    )
    
    # x2とx3の相関を確認
    cor(df$x2, df$x3, use = "complete.obs")
    
    # x1とx2で重回帰分析を実施
    # この場合は問題なし
    res1 <- lm("y ~ x1 + x2", data = df)
    summary(res1)
    
    # x1とx2とx3で重回帰分析を実施
    # この場合，x2とx3は被ってしまうため，後者がNAとされてしまう
    res2 <- lm("y ~ x1 + x2 + x3", data = df)
    summary(res2)
    
[/code]

これで出力された内容のCoefficients: の行に着目してください。質問文中のリンク先にある内容は，このことを説明しています。

質問文のNAになった変数を，仮にx_Aとx_Bとします。上記の理由でNAとなっているならば，このx_Aと全く同じ，もしくは線形変換した変数x_A0というのが説明変数に組み込まれていると思います。またx_Bについても同様にx_B0という変数が組み込まれているはずです。

これを検証するには，単に説明変数として投入している変数間の相関行列を算出してチェックすればいいです。また全サンプルではなく一部のサンプルでも大丈夫です。


CC BY-SA 3.0
2017-06-13T09:13:02.430
35539
2017-06-13T09:13:02.430
19063
35536
answer