このように私のデータの相関行列を確立しています
df <- structure(list(V1 = c(56, 123, 546, 26, 62, 6, NA, NA, NA, 15
), V2 = c(21, 231, 5, 5, 32, NA, 1, 231, 5, 200), V3 = c(NA,
NA, 24, 51, 53, 231, NA, 153, 6, 700), V4 = c(2, 10, NA, 20,
56, 1, 1, 53, 40, 5000)), .Names = c("V1", "V2", "V3", "V4"), row.names = c(NA,
10L), class = "data.frame")
これにより、次のデータフレームが得られます。
V1 V2 V3 V4
1 56 21 NA 2
2 123 231 NA 10
3 546 5 24 NA
4 26 5 51 20
5 62 32 53 56
6 6 NA 231 1
7 NA 1 NA 1
8 NA 231 153 53
9 NA 5 6 40
10 15 200 700 5000
私は通常、complete.obsコマンドを使用して、このコマンドを使用して相関行列を確立します
crm <- cor(df, use="complete.obs", method="pearson")
ここでの私の質問は、complete.obsがデータをどのように処理するかです。 「NA」値を持つ行を省略し、「NA」フリーテーブルを作成して、このように一度に相関行列を作成しますか?
df2 <- structure(list(V1 = c(26, 62, 15), V2 = c(5, 32, 200), V3 = c(51,
53, 700), V4 = c(20, 56, 5000)), .Names = c("V1", "V2", "V3",
"V4"), row.names = c(NA, 3L), class = "data.frame")
または、ペアで "NA"値を省略しますか。たとえば、V1とV2の間の相関を計算するとき、V3のNA値を含む行(この例では行1と2など)も省略されますか?
その場合は、NA値をペアで省略して、可能な限り多くのデータを予約するコマンドを確立することを楽しみにしています。
どうもありがとう、
cor
、つまり?cor
のヘルプファイルを確認します。特に、
「使用」が「すべて」である場合、「NA」は概念的に伝播します。つまり、寄与する観測値の1つが「NA」である場合、結果の値は「NA」になります。
「use」が「all.obs」の場合、欠落している観測値が存在するとエラーが発生します。 「use」が「 "complete.obs"」の場合、欠損値はケースワイズ削除によって処理されます(完全なケースがない場合はエラーになります)。
何が起こっているかをよりよく理解するには、(さらに)単純な例を作成します。
df1 = df[1:5,1:3]
cor(df1, use="pairwise.complete.obs", method="pearson")
cor(df1, use="complete.obs", method="pearson")
cor(df1[3:5,], method="pearson")
したがって、complete.obs
を使用する場合、NA
が存在する場合はentire行を破棄します。私の例では、これは行1と2を破棄することを意味します。ただし、pairwise.complete.obs
は、V1
とV2
の間の相関を計算するときにNA
以外の値を使用します。