自動で相関係数を一気に計算するパッケージの一つ。サンプルデータはmtcars
を用いる。
data(mtcars) head(mtcars,5)
データ。
mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
vsとamは2値であるため、この2つを取り除く。出力をpearsonだけにするため。
dat <- subset(mtcars,select = (c(-vs, -am))) head(dat,5)
加工後データ。
mpg cyl disp hp drat wt qsec gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 3 1 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 3 2
correlation()
オプションが2つ指定されている。意味は後段を参照のこと。
library(correlation) res <-correlation::correlation(dat, include_factors = TRUE, method = "auto" ) res
表示
# Correlation Matrix (auto-method) Parameter1 | Parameter2 | r | 95% CI | t(30) | p -------------------------------------------------------------------- mpg | cyl | -0.85 | [-0.93, -0.72] | -8.92 | < .001*** mpg | disp | -0.85 | [-0.92, -0.71] | -8.75 | < .001*** mpg | hp | -0.78 | [-0.89, -0.59] | -6.74 | < .001*** mpg | drat | 0.68 | [ 0.44, 0.83] | 5.10 | < .001*** mpg | wt | -0.87 | [-0.93, -0.74] | -9.56 | < .001*** mpg | qsec | 0.42 | [ 0.08, 0.67] | 2.53 | 0.137 mpg | gear | 0.48 | [ 0.16, 0.71] | 3.00 | 0.065 mpg | carb | -0.55 | [-0.75, -0.25] | -3.62 | 0.016* cyl | disp | 0.90 | [ 0.81, 0.95] | 11.45 | < .001*** cyl | hp | 0.83 | [ 0.68, 0.92] | 8.23 | < .001*** cyl | drat | -0.70 | [-0.84, -0.46] | -5.37 | < .001*** cyl | wt | 0.78 | [ 0.60, 0.89] | 6.88 | < .001*** cyl | qsec | -0.59 | [-0.78, -0.31] | -4.02 | 0.007** cyl | gear | -0.49 | [-0.72, -0.17] | -3.10 | 0.054 cyl | carb | 0.53 | [ 0.22, 0.74] | 3.40 | 0.027* disp | hp | 0.79 | [ 0.61, 0.89] | 7.08 | < .001*** disp | drat | -0.71 | [-0.85, -0.48] | -5.53 | < .001*** disp | wt | 0.89 | [ 0.78, 0.94] | 10.58 | < .001*** disp | qsec | -0.43 | [-0.68, -0.10] | -2.64 | 0.131 disp | gear | -0.56 | [-0.76, -0.26] | -3.66 | 0.015* disp | carb | 0.39 | [ 0.05, 0.65] | 2.35 | 0.177 hp | drat | -0.45 | [-0.69, -0.12] | -2.75 | 0.110 hp | wt | 0.66 | [ 0.40, 0.82] | 4.80 | < .001*** hp | qsec | -0.71 | [-0.85, -0.48] | -5.49 | < .001*** hp | gear | -0.13 | [-0.45, 0.23] | -0.69 | > .999 hp | carb | 0.75 | [ 0.54, 0.87] | 6.21 | < .001*** drat | wt | -0.71 | [-0.85, -0.48] | -5.56 | < .001*** drat | qsec | 0.09 | [-0.27, 0.43] | 0.50 | > .999 drat | gear | 0.70 | [ 0.46, 0.84] | 5.36 | < .001*** drat | carb | -0.09 | [-0.43, 0.27] | -0.50 | > .999 wt | qsec | -0.17 | [-0.49, 0.19] | -0.97 | > .999 wt | gear | -0.58 | [-0.77, -0.29] | -3.93 | 0.008** wt | carb | 0.43 | [ 0.09, 0.68] | 2.59 | 0.132 qsec | gear | -0.21 | [-0.52, 0.15] | -1.19 | > .999 qsec | carb | -0.66 | [-0.82, -0.40] | -4.76 | < .001*** gear | carb | 0.27 | [-0.08, 0.57] | 1.56 | 0.774 p-value adjustment method: Holm (1979) Observations: 32
write.csv()でこのまま書き出せるかと思ったのだが、うまくいかなかった。
エディタで|
をタブかコンマに変換して、空白をつぶせばcsvとして使えるがあまり美しくない。
今回はres
に格納したが、res
の中身とprint()とも表示内容が異なる。
summary()
summary()で吐くとさらに表示形式が変わる。
summary(res)
表示
# Correlation Matrix (auto-method) Parameter | carb | gear | qsec | wt | drat | hp | disp | cyl ------------------------------------------------------------------------------------------------ mpg | -0.55* | 0.48 | 0.42 | -0.87*** | 0.68*** | -0.78*** | -0.85*** | -0.85*** cyl | 0.53* | -0.49 | -0.59** | 0.78*** | -0.70*** | 0.83*** | 0.90*** | disp | 0.39 | -0.56* | -0.43 | 0.89*** | -0.71*** | 0.79*** | | hp | 0.75*** | -0.13 | -0.71*** | 0.66*** | -0.45 | | | drat | -0.09 | 0.70*** | 0.09 | -0.71*** | | | | wt | 0.43 | -0.58** | -0.17 | | | | | qsec | -0.66*** | -0.21 | | | | | | gear | 0.27 | | | | | | | p-value adjustment method: Holm (1979)
オプション
使い方
correlation( data, data2 = NULL, select = NULL, select2 = NULL, rename = NULL, method = "pearson", p_adjust = "holm", ci = 0.95, bayesian = FALSE, bayesian_prior = "medium", bayesian_ci_method = "hdi", bayesian_test = c("pd", "rope", "bf"), redundant = FALSE, include_factors = FALSE, partial = FALSE, partial_bayesian = FALSE, multilevel = FALSE, ranktransform = FALSE, winsorize = FALSE, verbose = TRUE, standardize_names = getOption("easystats.standardize_names", FALSE), ...)
data
データフレーム。
data2
オプションのデータフレーム。指定された場合、data と data2 の変数間のすべてのペアワイズ相関が計算される。
select, select2
(data2 が指定されている場合は無視される。) 相関のために選択されるべき変数のオプションの名前。。 相関させるべきこれらの変数をデータフレームに与える代わりに、 data はデータフレーム、select と select2 は data の変数(列)の(引用)名とすることができる。correlation() は data[select] と data[select2] の間の相関を計算する。 select だけが指定された場合、select 変数間のすべてのペアワイズ相関が計算される。これは、correlation()の「パイプ・フレンドリー」な代替方法である('Examples'を参照)。
rename
出力される変数の名前を変更したい場合、これらの引数を使用して、別の名前を指定することができる。名前の数は、選択された列の数と同じでなければならないことに注意されたい。data2 が指定された場合は無視される。
method
検定に使用する相関係数を示す文字列。"pearson" (デフォルト), "kendall", "spearman" (ただし robust 引数を参照), "biserial", "polychoric", "tetrachoric", "biweight", "distance", "percentage" (パーセント曲げ相関), "blomqvist" のどれか1つが指定される。 (Blomqvist の係数のため)、"hoeffding" (Hoeffding の D )、"gamma"、"gaussian" (ガウス順位相関)、"shepherd" (シェパード円周率相関)のいずれかを選択する。auto "を設定すると、最も適切な方法(順序要因が含まれる場合はpolychoric、二項要因が含まれる場合はtetrachoric、二項と連続の場合はpoint-biserial、それ以外はpearson)を選択しようと試みる。これらの指標の説明については、以下の詳細セクションを参照。
p_adjust
頻度論的相関の補正法。"holm" (デフォルト), "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "somers", "none" のいずれかを指定することができる。詳細は stats::p.adjust() を参照.
ci
Confidence/Credible Interval level(信頼区間レベル).default "の場合、0.95 (95% CI)に設定される。
bayesian
TRUE の場合、ベイズの枠組みで相関を実行する。
bayesian_prior
引数の prior には、いくつかの名前がついている。"medium.narrow", "medium", "wide", "ultrawide "である。これらは、それぞれ 1/sqrt(27), 1/3, 1/sqrt(3), 1 のスケール値に対応する。BayesFactor::correlationBF 関数を参照。
bayesian_ci_method、bayesian_test
BayesFactor のテストについては model_parameters() の引数を参照。
redundant
データに冗長行(与えられた相関が2回繰り返される)が含まれているかどうか。
include_factors
TRUE の場合、因子は保持され、最終的に数値に変換されるか、ランダム効果として使用される(マルチレベルに依存)。FALSEの場合、因子は前もって取り除かれる。
partial
部分相関、半部分相関をそれぞれ TRUE または "semi" とすることができる。
partial_bayesian
ベイズの枠組みで部分相関を求める場合は、partial_bayesian を TRUEに設定し、完全なベイズ部分相関を得る必要がある。 そうでない場合は、擬似ベイズ偏相関(つまり、Frequentistの部分化に基づくベイズ偏相関)が得られる。
multilevel
TRUE の場合、因子はランダム因子として含まれる。一方、FALSE(デフォルト)の場合、それらは単回帰モデルにおける固定効果として含まれる。
ranktransform
TRUE にすると、相関を推定する前に変数を順位変換する。これは、極値(外れ値)に対してより強い分析を行う方法の1つである。例えば、ランク変換されたデータのピアソンの相関は、スピアマンの順位相関と同等であることに注意。 したがって、robust=TRUEとmethod="spearman"を使用することは冗長である。しかし、これは相関のロバスト性を高める簡単なオプションであり、ベイズ相関やマルチレベルSpearmanのような順位相関を得るための柔軟な方法でもある。
winsorize
相関をより「ロバスト」にする(つまり、極値の影響を抑える)もうひとつの方法。FALSE、または必要なしきい値に対応する0~1 (例:0.2)の数値を指定できる。 詳細は winsorize() 関数を参照してください。
verbose
警告をトグルする。
standardize_names
このオプションを TRUE に設定すると、出力に対して insight::standardize_names() を実行し、標準化されたカラム名を取得することができる。このオプションはoptions(easystats.standardize_names = TRUE)を実行することでグローバルに設定することも可能である。
他のメソッドに渡す追加の引数(例えば、代替)。詳細はstats::cor.testを参照