web-dev-qa-db-ja.com

corは相関に対してNAまたは1のみを表示します-なぜですか?

私はcor()をすべての数値を使用して_data.frame_で実行していますが、結果としてこれを取得しています:

_       price exprice...
price      1      NA
exprice   NA       1
...
_

そのため、結果のテーブルの各値の_1_またはNAになります。有効な相関関係の代わりにNAsが表示されるのはなぜですか?

31
Dave

1sは、すべてがそれ自体と完全に相関しているためです。また、NAsは、変数にNAsがあるためです。

デフォルトでは完全な情報を持つ係数のみを計算するため、欠損値がある場合にRが相関を計算する方法を指定する必要があります。

この動作は、use引数をcorに変更することで変更できます。詳細については、?corを参照してください。

30
Fojtasek

use引数を使用してNAを無視するように相関関係に指示します。例:

cor(data$price, data$exprice, use = "complete.obs")
39
dmt

NAは、分散がゼロ(すべての要素が等しい)の属性がある場合にも表示されます。インスタンスを参照してください:

cor(cbind(a=runif(10),b=rep(1,10)))

返されるもの:

   a  b
a  1 NA
b NA  1
Warning message:
In cor(cbind(a = runif(10), b = rep(1, 10))) :
  the standard deviation is zero
12
mbq

非常にシンプルで正しい答え

Use引数を使用してNAを無視するように相関に指示します。例:

cor(data$price, data$exprice, use = "complete.obs")
6
Patrick Koua

NAは実際には2つの理由によるものです。 1つは、データにNAがあることです。もう1つは、値のいずれかが一定であるためです。これにより、標準偏差はゼロになり、cor関数はNAを返します。

2
STG