こんにちは。
・Rでの相関解析の方法がわからない
・Rでの相関行列の作り方を知りたい
・求めた相関行列をCSVファイルに出力する方法
本日はRを用いた相関解析の方法についてまとめていきたいと思います。
本日紹介する方法にたどりつくまでいろんなネット情報を仕入れる必要がありました。情報を集約してくれる記事がなかったんです。この記事を読めばRの相関解析は一通りできるように書いていこうと思います。
僕は今医療職で働きながら大学院に通っており、現在4年目です。
Rを使って学会発表や論文作成を行っています。Rは無料で使えることがおススメです。
■1 2つの変数間の相関を求める方法
本日もデモデータを使用します。デモデータはこちら。
4列目「テスト」と5列目「背中角度」の相関を求めてみます。
①基本的な相関解析
Rで相関解析を行う関数は
cor.test (データ①[行数, 列数], データ②[行数, 列数])
です。データ①と②はデモデータでは4行目「テスト」と5行目「背中角度」を指します。
デフォルトではPearsonの積率相関係数です。何も書かなければPearsonの相関になります。Spearmanの順位相関係数にしたいときは、
cor.test (データ①[行数, 列数], データ②[行数, 列数], method=”spearman”)
にします。実際にやってみますね。
1行目ではまず「data」という名前の変数にread.csv関数でデモデータを読み込んでいます。header=Tは先頭行を項目を示す行として行数に含まない意味です。
詳しくはこちらの記事をご覧ください。
Rにexcelで作ったファイルを読み込む方法【CSV形式で読み込みましょう】
2行目は4列目と5列目の相関解析です。
cor.test (data[,4], data[,5], method=”s”)
で4行目と5行目をspearmanの相関係数で解析できます。行数を空欄にすることで「全て選択」の意味でした。
写真下部のp-valueとrhoがそれぞれp値と相関係数を示しています。
■2 相関行列を作る方法
次はデモデータを用いて全ての変数間の相関行列を求めてみます。
①簡単だがp値が出ない方法 「cor」【論文の解析には微妙です】
この方法は簡単です。
cor(解析したいデータ名)
と入れるだけで終了です。先ほど紹介したcor.testと同様、spearmanの相関を使用したい場合、method=”spearman”を追加します。
ただ、しつこいですがp値が出ないので実用性は乏しいと思います。
②【めっちゃ使えます】psychパッケージの”corr.test”です
先ほど紹介した「cor」だと2つの問題点があります。
①p値が出ないため、1つ1つ「cor.test」しなくてはダメな点と
②出されたp値が多重比較されていないことです。
この2点は論文投稿の際には必須の項目になりますので、「cor」しか知らないと追加でp値を算出する必要があり手間が増えてしまいます。
この①、②の問題点を解決してくれるのが「psychパッケージのcorr.test」です。
Rではデフォルトにない機能をパッケージという形で追加することができます。
ではPsychパッケージのインストールをまず行いましょう。
install.packages(“psych”)
と入力するとインストールが始まります。
国名を選択する画面が出るので、「Japan」を選択してください。
一度インストールすれば次からはこの作業は不要です。
インストールが済んだら実際にcorr.testで相関行列を作ってみます。基本的なコードは
corr.test (解析したいデータ名, method=”pearson” もしくは”spearman”, adjust=”多重比較の方法”)
です。実際にやってみます。
こんな感じです。
1行目はread.csv関数で「デモデータ」を読み込んでいます。
2行目のlibrary関数はインストールしたパッケージを呼び出します。
3行目は「p」という名前で相関解析を格納しています。
method=”s”なのでspearmanの順位相関を使い、adjustで”bonferroni”の多重比較を選択してます。
この関数ですごいのはadjustの部分で、“holm”, “hochberg”, “hommel”, “bonferroni”, “BH”, “BY”, “fdr”, “none”の中から好きなものを選択できます。この点はSPSSより断然良いです。多重比較についても近々まとめます。
結果はこんな感じです。
Correlation matrixは相関係数ですね。
Probability valueはp値ですね。
ちゃんとbonferroni法で補正されたデータが出てきます。
論文を書くときでもここまでが一発で出てくれたら助かりますよね。
(個人的にはbonferroniではなく、fdrが使えることがすごい助かります。SPSSでは使えないので。)
※欠損値がある場合の相関係数の求め方
こんな感じでデータに欠損がある時もありますよね。その場合もcor.testでは問題なく相関係数は出てきます。
(ただ欠損値を削除した解析なので、その方法で不十分な場合は多重代入などを事前に行う必要があります)
■3 相関係数の結果をCSVファイルに出力する方法【「cor」だけ出力できました】
相関行列をまとめてCSVファイルへ出力する方法です。
CSVファイルへの出力は以下のコードです。
write.csv (CSVにしたいデータ名, file=”適当なファイル名.csv”)
です。最初に指定しているディレクトリに保存されます。
実際にやってみます。
1行目はデータの読み込みです。
2行目はcor(data)でdataの相関行列を出しています。ファイル名は「x」です。
「use=”complete.obs”」は欠損値を無視するためのコードです。
デモデータには欠損値があり、「cor」は欠損値があると「NA」とエラーを返してきます。
3行目で先ほど紹介したwrite.csv関数を使用しています。
CSV出力したいファイルが「x」です。File名は適当ですがxdat.csvにしました。.「csv」
を忘れないようにしましょう。
そうするとディレクトリ(今回はドキュメント)に「xdat」というCSVファイルが出力されました。
こんな感じです。
※現在psychパッケージの 「corr.test」結果が上記の方法ではCSVに上手く出力されない状況です。鋭意調べ中です。
【追記】解決しました↓
【R】相関解析の結果をCSVに出力する【特にcorr.test】
本日は以上です。今後とも有益な記事を書いていきます。
よろしくお願いします。