✅疑問
・Rの相関解析の結果をCSVに落とす方法が知りたい
・特に「psych」パッケージの「corr.test」の結果をどのようにCSV形式にするのか知りたい
このような疑問に答えます。
僕は医療職として働きながら大学院に通い4年目です。
解析ツールにSPSSやRを用いて学会発表や論文投稿を行ってきました。
そんな僕が答えます。
以前も記事に書きましたがRでの論文投稿を考えると相関解析にはcorr.test一択だと思っています。相関係数を出せるのはもちろんのこと、同時にp値の検定ができ、検定の多重性の調整まで行ってくれるからです。
本日はRでの相関解析の結果をCSVに出力する方法について、特にcorr.tastに注目して行います。
corr.testの使用方法についておさらい
以前の記事にも詳しく書いていますが再度corr.testの使用法についておさらいします。
Rを使った相関解析の方法【これを見れば大体できる】
まずは本日もデモデータを用いて解析していきます。
デモデータはこちらです。
欠損値も作ってあります、黄色の部分です。
このデモデータで、1列目の「no」を除いた2列目~9列目の相関をcorr.testで求めます。
1行目:デモデータの読み込み。「data」という名前で読み込みます。「read.csv」関数を使います。関連記事Rにexcelで作ったファイルを読み込む方法【CSV形式で読み込みましょう】
2行目:psychパッケージの読み込み。「library」関数を使います。
※一番最初はインストールが必要です。先ほどリンクした記事を参考にしてください。
3行目:解析したい「data」の2列目~9列目だけを「df」という名前で保存。行は指定せず全て選択しています。
4行目:「corr.test」を実施。「p」という名前で保存しています。
MethodはデフォルトはPearsonの相関係数(パラメトリック)ですので何も記載しなければPearsonになります。
useは欠損値があった場合にデフォルトでペアワイズ(欠損部分を除去した解析)法となります。
adjustは検定の多重性を調節する方法でbonferroniだけでなくfdr (false discovery rate), holm法など様々な方法が使用できます。
結果です。
↑相関係数です。
↑調整済のp値です。
corr.testの結果をCSVファイルに出力する方法【names関数を使う】
ではこの結果をCSVファイルに投入していきます。
corr.testの結果は「p」とい名前で保存していますが、
write.csv関数では読み込めません(pがシート形式?というそのままでは読み込めない形式になっているからです)
names関数を使って行列の形にする
そこで「names」関数を使います。
複数の要素で構成されていた「corr.test」の結果を上の様に要素に分解します。
とすると写真のようにいろいろな要素に分解できます。corr.testで求めた「p」は多くの要素で成っていたのですね。
主な略語は以下です。
“r” | 相関係数 |
“n” | 解析した数 |
“t” | t testのt値 |
“p” | t testのp値 |
“se” | standard error 相関の標準偏差 |
“adjust” | 多重性の調整方法 |
“ci” | 信頼区間 |
それでは今回はr値(相関係数)とp値をCSVにしてみます。
names関数を用いてcorr.testのr値一覧をCSVに出力する
ではcorr.testの結果から「r値」だけを抜き出すにはどうすればよいでしょうか。
(僕が何回もコピーしてエクセルに貼り付けようとしましたがダメでした。)
ここで「$」を使います。
「$」を使うことで特定の要素を呼び出すことができます。
「x」という名前でcorr.testのr値の部分を保存します。
一番右端に「$r」とありますよね。これでr値だけを呼び出すことができます。「$p」でp値だけを抜き出すことができます。
この状態になったら初めて「write.csv」関数でCSV形式に抜き出すことができます。
「write.csv関数」は write.csv (読み込みたい結果, file=〇〇 )でした。
〇〇はCSVファイルにつけたい名前です。
今回はそのまま「x」という名前でCSV形式に落としたいと思います。ファイル名に「.csv」をつけ忘れないようにしましょう。
僕も何度も忘れ、後で開けなくて途方に暮れてます。
CSVファイルは作業中のディレクトリに保存されています。
こんな感じで、相関係数の一覧が出力できました。
names関数を用いてcorr.testのp値一覧をCSVに出力する
同様の手順でp値をCSVに出力します。
p値はCSVにした後の読み方に若干の決まりごとがあります。
先ほどと同様の手順で、corr.testのp値だけを抜き出します。一番右の$pがp値だけを抜き出す意味です。
先ほどと同様、「write.csv関数」でCSVファイルへ保存します。
こんな感じです。
p値は下半分の三角と上半分の値が違いますよね。
下半分が未調整の値
上半分が調整済みの値です。
p値が「1」ということは帰無仮説「2つの変数に差はない」が100%という意味です。
これでRを用いた相関解析結果をCSVファイルに出力できました。
論文化する場合は「FDR」False Discovery Rateで調整できるので助かります。
SPSSだとBonferroniかHolmしかなく、調整が厳格すぎるかもしれません。
本日の記事は以上となります。
これからも有益な記事を書いていきます。
よろしくお願いします。