5

その列が実験のさまざまなサンプルであるというデータフレームがあります。これらのサンプル間の相関関係を見つけたかったのです。したがって、サンプルv2とv3の間、サンプルv2とv4の間の相関、....これはデータフレームです。

> head(t1)
      V2          V3          V4         V5         V6
1 0.12725011 0.051021886 0.106049328 0.09378767 0.17799444
2 0.86096784 1.263327211 3.073650624 0.75607466 0.92244361
3 0.45791031 0.520207274 1.526476608 0.67499102 0.49817761
4 0.00000000 0.001139721 0.003158557 0.00000000 0.00000000
5 0.13383965 0.098943019 0.099922146 0.13871867 0.09750611
6 0.01016334 0.010187671 0.025410170 0.00000000 0.02369374
> nrow(t1)
[1] 23367

このデータフレームに対してcor関数を実行してサンプル(列)間の相関を取得すると、すべてのサンプルのNAが取得されます。

> cor(t1, method= "spearman")
V2 V3 V4 V5 V6
V2  1 NA NA NA NA
V3 NA  1 NA NA NA
V4 NA NA  1 NA NA
V5 NA NA NA  1 NA
V6 NA NA NA NA  1

しかし、これを実行すると:

> cor.test(t1[,1],t1[,2], method="spearman")$estimate
rho 
0.92394 

違います。なんでそうなの?これらのサンプル間の相関を取得する正しい方法は何ですか?前もって感謝します。

4

1 に答える 1

6

データにはNA値が含まれています。

から?cor:

use が「everything」の場合、NA は概念的に伝播します。つまり、寄与する観測値の 1 つが NA である場合は常に、結果の値は NA になります。

から?cor.test

na.action データに NA が含まれている場合に何が起こるかを示す関数。デフォルトは getOption("na.action") です。

私のシステムでは:

getOption("na.action")
[1] "na.omit"

which(!is.finite(t1))問題のある値which(is.na(t1))を検索したり、値を検索したりするために使用しNAます。データに値がある場合にcor返します。NaNInf

于 2013-02-02T10:56:50.537 に答える