2017-12-05 19 views
0

次のデータセットで相関を実行します。私はすべての間で相関関係が必要です(V2、V3、V4、V5; V2とV1、V3、V4、V5など...)。私は相関係数とp値が必要です。私も実行している私は、このコードR - 欠損値の相関

correlations <- corr.test (mydataset, use = "pairwise"). 

を走った

mydataset

Group V1  V2   V3   V4  V5 
    OH  0.3  5   -3.09  2.5  NA 
    OH  0.5  1   NA  1.8  2.5 
    ON  2   2.5   NA  -3.11 -7.5 
    OH  1.5  -3.35  -0.82  NA  -2.5 
    ON  6.5  -2.85  2.5  NA  NA 
    OH  3   0.5   1.8  -2.85  NA 

correlations <- cor(mydataset, use = "complete.obs", method = "pearson") 

は私が欠損値に対処する方法がわかりません。そして私は何も出力を得ていません。このエラーが発生し続ける:

Error in cor(x, use = use, method = method) : 'x' must be numeric 

何がうまくいくのでしょうか?

ありがとうございます!

+1

それはあなたがそれを提供するものだから、だけでなく 'Group'列を使用しようとしています。 (私はあなたの残りの列が実際に数値であると仮定しています;あなたもそれをチェックするかもしれません) – joran

+0

データセットに数値列だけを残し、 'corr.test(mydataset、use =" pairwise ")'を実行します。このコマンドは、NAsを自動的に除外します。それが提供するサンプル表で確認できます。 – AntoniosK

答えて

0

問題はNAではなく、むしろ変数Groupは数値ではありません。だから試してみてください

cor(mydataset[sapply(mydataset, is.numeric)], use='pairwise') 

これは数値変数を選択し、NAを除外します。我々はV3V5間の相関のためのNAを得ることがわかりますが、V3V5が同時に一つだけの観察ではNAではない、とあなたは一つだけに相関関係を得ることができないので、つまり、相関行列で

 V1   V2   V3   V4   V5 
V1 1.0000000 -0.5917056 0.8907941 -0.9355822 -0.9819805 
V2 -0.5917056 1.0000000 -0.6376181 0.4894776 -0.2468321 
V3 0.8907941 -0.6376181 1.0000000 -1.0000000   NA 
V4 -0.9355822 0.4894776 -1.0000000 1.0000000 1.0000000 
V5 -0.9819805 -0.2468321   NA 1.0000000 1.0000000 

ポイントのペア。

+0

V1 _V2 V1 .0000000 0.5659588 V2 0.533333 0.65368ありがとう!私はすでにそれを試していたし、私は上記のようなものを得る。これはNAをまったく持たない変数の出力を与えますが、Rは他の列をまったく拾っていません!助言がありますか?? – Shades

+0

私は完全な相関行列を得る。私が得られる唯一のNA結果は、V3、V5ですが、それはあなたが提供したデータを考慮すると、V3とV5は同時に3回目の観測でのみNAではないからです。そして、あなたは1つだけのペアとの相関を持つことはできません。 –

0

corr.test(test[2:6], use = 'pairwise')です。文字ベクトルである最初の列を除外する必要があります。以下は出力付きのreprexです。係数とp値が得られます。


library('tidyverse') 
#> ── Attaching packages ─────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ── 
#> ✔ ggplot2 2.2.1  ✔ purrr 0.2.4 
#> ✔ tibble 1.3.4  ✔ dplyr 0.7.4 
#> ✔ tidyr 0.7.2  ✔ stringr 1.2.0 
#> ✔ readr 1.1.1  ✔ forcats 0.2.0 
#> ── Conflicts ────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ── 
#> ✖ dplyr::filter() masks stats::filter() 
#> ✖ dplyr::lag() masks stats::lag() 
library('psych') 
#> 
#> Attaching package: 'psych' 
#> The following objects are masked from 'package:ggplot2': 
#> 
#>  %+%, alpha 
test = tibble::tribble(
    ~Group, ~V1, ~V2, ~V3, ~V4, ~V5, 
    'OH',  0.3,  5,   -3.09,  2.5,  NA, 
    'OH',  0.5,  1,   NA,  1.8,  2.5, 
    'ON',  2 ,   2.5,   NA,  -3.11, -7.5, 
    'OH',  1.5,  -3.35,  -0.82,  NA,  -2.5, 
    'ON',  6.5,  -2.85,  2.5,  NA,  NA, 
    'OH',  3,   0.5,   1.8,  -2.85,  NA 
) 
corr.test(test[2:6], use = 'pairwise') 
#> Warning in sqrt(n - 2): NaNs produced 
#> Warning in corr.test(test[2:6], use = "pairwise"): Number of subjects must 
#> be greater than 3 to find confidence intervals. 
#> Warning in sqrt(n[lower.tri(n)] - 3): NaNs produced 
#> Call:corr.test(x = test[2:6], use = "pairwise") 
#> Correlation matrix 
#>  V1 V2 V3 V4 V5 
#> V1 1.00 -0.59 0.89 -0.94 -0.98 
#> V2 -0.59 1.00 -0.64 0.49 -0.25 
#> V3 0.89 -0.64 1.00 -1.00 NA 
#> V4 -0.94 0.49 -1.00 1.00 1.00 
#> V5 -0.98 -0.25 NA 1.00 1.00 
#> Sample Size 
#> V1 V2 V3 V4 V5 
#> V1 6 6 4 4 3 
#> V2 6 6 4 4 3 
#> V3 4 4 4 2 1 
#> V4 4 4 2 4 2 
#> V5 3 3 1 2 3 
#> Probability values (Entries above the diagonal are adjusted for multiple tests.) 
#>  V1 V2 V3 V4 V5 
#> V1 0.00 0.86 0.66 0.45 0.66 
#> V2 0.22 0.00 1.00 1.00 1.00 
#> V3 0.11 0.36 0.00 NaN NA 
#> V4 0.06 0.51 NaN 0.00 NaN 
#> V5 0.12 0.84 NA NaN 0.00 
#> 
#> To see confidence intervals of the correlations, print with the short=FALSE option 
関連する問題