12

次のようなデータの相関行列を確立しています

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 値を省略して、可能な限り多くのデータを予約するコマンドを確立することを楽しみにしています。

どうもありがとう、

4

1 に答える 1

24

のヘルプ ファイルを参照してcorください?cor。特に、

'use' が '"everything"' の場合、'NA's は概念的に伝播します。つまり、寄与する観測値の 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") 

そのため、 を使用する場合、 an が存在する場合は行全体complete.obsを破棄します。私の例では、これは行 1 と 2 を破棄することを意味します。NApairwise.complete.obsNAV1V2

于 2013-09-19T10:22:48.563 に答える