2

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

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その場合、データを無視するにはどうすればよいですか?

ありがとう、ダン

4

2 に答える 2

4

通常、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つしかない場合、それ以上の推定はできません。

于 2010-11-23T18:38:52.783 に答える
2

a と b がデータ フレームで、a の個々の値を b の値に回帰したい場合は、それらをベクトルに変換する必要があります。例えば:

> 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  

欠損データはデフォルトで削除されます - help(lm) と na.action パラメータを参照してください。lm オブジェクトの summary メソッドは、削除された観測について教えてくれます。

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

[編集: ああ、データ フレームはすべて数字でなければなりません。そうしないと、全体が文字に変換されてしまいます...まあ、誰にもわかりません...]

編集:

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

> 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  

私は前に data.matrix を見たことがありません、thx Gavin。

于 2010-11-23T22:15:20.453 に答える