LM関数を実行したときにNAデータを無視するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4259161

質問

私の質問はかなり単純ですが、多くのことを試した後、それを解決することができませんでした。

2つのデータフレームがあります。

>a
   col1 col2 col3 col4
1    1    2    1    4
2    2   NA    2    3    
3    3    2    3    2    
4    4    3    4    1

> b
  col1 col2 col3 col4
1    5    2    1    4    
2    2   NA    2    3    
3    3   NA    3    2    
4    4    3    4    1

私はできますか lm(a ~ b) データを適合させる ab?

もしそうなら、どうすれば無視できますか NA データ?

ありがとう、ダン

役に立ちましたか?

解決

AとBがデータフレームであり、Bの値上のAの個々の値を回帰する場合、それらをベクターに変換する必要があります。例えば:

> lm(as.vector(as.matrix(a))~as.vector(as.matrix(b)))

Call:
lm(formula = as.vector(as.matrix(a)) ~ as.vector(as.matrix(b)))

Coefficients:
            (Intercept)  as.vector(as.matrix(b))  
               8.418239                -0.005241  

欠落データはデフォルトで削除されます - ヘルプ(LM)とNa.actionパラメーターを参照してください。 LMオブジェクトの要約方法では、ドロップされた観測について説明します。

もちろん、空間データに存在する可能性が高い空間相関を無視すると、パラメーターの推定値からの推論がかなり間違っていることを意味します。残差をマップします。空間統計に関する良い本を読んでください...

編集:ああ、データフレームはすべての数字でなければならないか、ロット全体が文字に変換され、それから...まあ、誰が知っている...

編集:

データフレームからベクトルを取得する別の方法は、「非公開」を使用することです。

> a=data.frame(matrix(runif(16),4,4))
> b=data.frame(matrix(runif(16),4,4))
> lm(a~b)
Error in model.frame.default(formula = a ~ b, drop.unused.levels = TRUE) : 
  invalid type (list) for variable 'a'
> lm(unlist(a)~unlist(b))

Call:
lm(formula = unlist(a) ~ unlist(b))

Coefficients:
(Intercept)    unlist(b)  
     0.6488      -0.3137  

Thx Gavin、data.matrixを見たことがありません。

他のヒント

一般に、Rの回帰関数は完全なケースの結果のみを報告するため、通常、ケースを差し出すために特別なことをする必要はありません。あなたの質問は少しあいまいであるように見えますが、なぜあなたが式の左側にマトリックス全体(またはそれがdata.frame?)を置いているのかは明確ではありません。 LM()関数を使用して多変量分析を行う能力がありますが、そうしたい人は一般に、より具体的な質問をします。

> lm(a$col1 ~ b$col1+b$col2 +b$col3+b$col4)

Call:
lm(formula = a$col1 ~ b$col1 + b$col2 + b$col3 + b$col4)

Coefficients:
(Intercept)       b$col1       b$col2       b$col3       b$col4  
         16           -3           NA           NA           NA  

少量のデータは、2つのケースを失い、残り2つしかない後、さらなる推定を防ぎます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top