欠損値を使用して r で相関を計算する方法
1 つ以上の変数に欠損値がある場合、次の方法を使用して R の相関係数を計算できます。
方法 1: 欠損値が存在する場合の相関係数を計算する
cor(x, y, use=' complete.obs ')
方法 2: 欠損値が存在する相関行列を計算する
cor(df, use=' pairwise.complete.obs ')
次の例は、各メソッドを実際に使用する方法を示しています。
例1: 欠損値が存在する場合の相関係数を計算する
欠損値が存在する場合に、 cor()関数を使用して 2 つの変数間のピアソン相関係数を計算しようとしているとします。
#create two variables
x <- c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85)
y <- c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75)
#attempt to calculate correlation coefficient between x and y
cor(x, y)
[1] NA
欠損値の処理方法が指定されていないため、 cor()関数はNAを返します。
この問題を回避するには、 use=’complete.obs’引数を使用して、両方の値が存在するペアごとの観測のみを使用することを R が認識できるようにします。
#create two variables
x <- c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85)
y <- c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75)
#calculate correlation coefficient between x and y
cor(x, y, use=' complete.obs ')
[1] -0.4888749
2 つの変数間の相関係数は-0.488749であることがわかります。
cor()関数は、相関係数を計算するときに、値が存在する両方のペアの組み合わせのみを使用することに注意してください。
例 2: 欠損値が存在する相関行列を計算する
欠損値が存在する場合に、 cor()関数を使用して 3 つの変数を含むデータ フレームの相関行列を作成しようとしているとします。
#create data frame with some missing values
df <- data. frame (x=c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85),
y=c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75),
z=c(57, 57, 58, 59, 60, 78, 81, 83, NA, 90))
#attempt to create correlation matrix for variables in data frame
cor(df)
X Y Z
x 1 NA NA
y NA 1 NA
z NA NA 1
欠損値の処理方法が指定されていないため、 cor()関数は複数の場所でNAを返します。
この問題を回避するには、 use=’pairwise.complete.obs’引数を使用して、R が両方の値が存在するペアワイズ観測のみを使用することを認識できるようにします。
#create data frame with some missing values
df <- data. frame (x=c(70, 78, 90, 87, 84, NA, 91, 74, 83, 85),
y=c(90, NA, 79, 86, 84, 83, 88, 92, 76, 75),
z=c(57, 57, 58, 59, 60, 78, 81, 83, NA, 90))
#create correlation matrix for variables using only pairwise complete observations
cor(df, use=' pairwise.complete.obs ')
X Y Z
x 1.0000000 -0.4888749 0.1311651
y -0.4888749 1.0000000 -0.1562371
z 0.1311651 -0.1562371 1.0000000
データベース内の変数の各ペアごとの組み合わせの相関係数が表示されます。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。