SPSSなどの有料ソフトを使い続けているなら、年間数十万円を余計に払っているかもしれません。 mmbiostats(https://mmbiostats.com/statistics_software_2)
医療従事者が統計解析を行う場面は、学会発表・論文執筆・院内研究など多岐にわたります。しかし「統計ソフトは高い」「コードが難しそう」という思い込みから、有料ソフトに頼り続けているケースが少なくありません。この記事では、無料で使えるR言語の使い方を、医療従事者目線でゼロから解説します。 kinpodo-pub.co(https://www.kinpodo-pub.co.jp/book/2005-4/)
RはCRAN(https://cran.r-project.org/)から無料でダウンロードできます。 インストールの手順は以下の通りです。 htsuda(https://htsuda.net/stats/intro.html)
RとRStudioはセットで使うのが基本です。 RはいわばエンジンでRStudioは操作パネル。RStudioを介することで、コードの入力・実行・グラフの確認・ファイル管理を一画面で完結できます。Windowsをお使いの場合、ユーザー名に日本語が含まれているとパッケージのインストール時にエラーが起きやすいため、Cドライブ直下などに英語のパスでインストールすることをおすすめします。 note(https://note.com/toshi_matsuura/n/n127cf28362e5)
RStudioをインストールしたら、まず左下の「Console(コンソール)」に 2 + 2 と入力してEnterを押してみてください。
4 と返ってきたら正常に動作しています。これで準備完了です。 kinpodo-pub.co(https://www.kinpodo-pub.co.jp/book/2005-4/)
Rでの統計解析は、大きく4つのステップで進みます。 best-biostatistics(https://best-biostatistics.com/r/r_statistical_analysis.html)
read.csv("ファイル名.csv") で取り込むたとえば患者データをCSVで保存しておけば、以下のコードだけで読み込みが完了します。
data <- read.csv("patient_data.csv")
head(data) # 最初の6行を確認
summary(data) # 基本統計量を一括表示
summary() を実行すると、各変数の最小値・中央値・平均値・最大値が一度に表示されます。つまり基本統計量の確認は1行で終わります。 ExcelでSUM関数を何十セルにも入れていた作業が、Rでは瞬時に完了する感覚です。 best-biostatistics(https://best-biostatistics.com/r/r_statistical_analysis.html)
【参考:Rで統計解析の基本的な使い方ステップ解説 – Best Biostatistics】
医療従事者が最初につまずくのが「どの検定関数をどう書くか」です。これはシンプルです。 best-biostatistics(https://best-biostatistics.com/stat-test/paired-unpaired.html)
よく使う主な検定関数は以下の通りです。
| 検定の種類 | Rの関数 | 主な使用場面 |
|---|---|---|
| 対応なしt検定 | t.test(x, y) |
2群間の平均値比較(例:治療前後の比較以外) |
| 対応ありt検定 | t.test(x, y, paired=TRUE) |
同一患者の治療前後を比較する場合 |
| Wilcoxon検定 | wilcox.test(x, y) |
正規性が成立しない場合の2群比較 |
| カイ2乗検定 | chisq.test(table(A, B)) |
カテゴリカル変数の独立性検定 |
対応ありt検定の具体例を見てみましょう。治療前と治療後のデータが列として保存されている場合、以下のコードで結果が出ます。 best-biostatistics(https://best-biostatistics.com/stat-test/paired-unpaired.html)
result <- t.test(data$before, data$after, paired = TRUE)
print(result)
p値・95%信頼区間・平均差が一括で表示されます。厳しいところですね。初学者がExcelの分析ツールで格闘していた時間が、わずか2行のコードで完結します。正規性を確認したい場合は shapiro.test() を事前に実行するのが原則です。 best-biostatistics(https://best-biostatistics.com/stat-test/paired-unpaired.html)
【参考:対応のあるデータ・対応のないデータのt検定とWilcoxon検定の実装例 – Best Biostatistics】
臨床研究で頻繁に登場するのが多変量解析です。Rではこれも数行で実行できます。 nissinbo.github(https://nissinbo.github.io/medical_database_RBook/%E7%B5%B1%E8%A8%88%E8%A7%A3%E6%9E%90.html)
単純な線形回帰(重回帰)は lm()、ロジスティック回帰は glm() 関数を使います。 nissinbo.github(https://nissinbo.github.io/medical_database_RBook/%E7%B5%B1%E8%A8%88%E8%A7%A3%E6%9E%90.html)
# 重回帰分析(例:血圧を年齢・BMI・喫煙で予測)
model_lm <- lm(血圧 ~ 年齢 + BMI + 喫煙, data = data)
summary(model_lm)
# ロジスティック回帰(例:疾患の有無を複数の変数で予測)
model_logit <- glm(疾患 ~ 年齢 + 性別 + CRP, data = data, family = binomial)
summary(model_logit)
summary() の結果には各変数の係数・標準誤差・p値が表示されます。これは使えそうです。ロジスティック回帰ではオッズ比が必要なため、exp(coef(model_logit)) でオッズ比を算出するのが条件です。 nissinbo.github(https://nissinbo.github.io/medical_database_RBook/%E7%B5%B1%E8%A8%88%E8%A7%A3%E6%9E%90.html)
さらに broom パッケージの tidy() 関数を使えば、解析結果をそのままデータフレームに変換でき、論文用の表に整形する手間が大きく省けます。 nissinbo.github(https://nissinbo.github.io/medical_database_RBook/%E7%B5%B1%E8%A8%88%E8%A7%A3%E6%9E%90.html)
library(broom)
tidy(model_logit, conf.int = TRUE, exponentiate = TRUE)
# オッズ比と95%信頼区間を整形した表として出力
多変量解析を適切に行わないと、交絡因子を見落としたまま誤った結論を導くリスクがあります。 たとえば「新規治療群でCRP値が高い」という結果が出ていても、年齢や性別の偏りを調整していなければ意味がありません。回帰分析でしっかり調整するのが基本です。 note(https://note.com/paguinu/n/n34acd7b3865e)
【参考:医療情報DB解析のためのデータハンドリング大全(第7章 統計解析)】
「コードが難しい」と感じる場合は、EZR(Easy R)から始めるのが最速です。 best-biostatistics(https://best-biostatistics.com/spss/spss-same.html)
EZRは自治医科大付属さいたま医療センターが開発した無料ソフトで、Rの上にGUI(マウス操作インターフェース)を追加したものです。 生存解析・ROC曲線・メタアナリシス・サンプルサイズ計算など、臨床研究で必要な解析がメニューから選ぶだけで実行できます。意外ですね。SPSSと操作感がほぼ同じなのに、EZRは0円で使えます。 jichi.ac(https://www.jichi.ac.jp/usr/hema/EZR/statmed.html)
best-biostatistics(https://best-biostatistics.com/spss/spss-same.html)
ggplot2 で論文クオリティのグラフが作れる best-biostatistics(https://best-biostatistics.com/r/r_statistical_analysis.html)
note(https://note.com/bostonlungmd/m/m6261335000fe/hashtag/23072)
88clinic.jimdoweb(https://88clinic.jimdoweb.com/%E4%BA%A4%E9%80%9A%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9/%E5%B0%82%E9%96%80%E5%8C%BB-%E8%AA%8D%E5%AE%9A%E5%8C%BB%E5%8F%96%E5%BE%97%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/%E5%8C%BB%E5%B8%AB%E3%82%84%E7%A0%94%E7%A9%B6%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%B5%B1%E8%A8%88/)
パッケージのインストールは install.packages("パッケージ名") の1行で完了します。 読み込みは library(パッケージ名) で行います。一度インストールすれば次回からは library() だけで使えます。つまりインストールは1回だけ実行すれば大丈夫です。 note(https://note.com/toshi_matsuura/n/n127cf28362e5)
有料ソフト(SPSS・SASなど)は年間数万〜数十万円のライセンス費用が発生しますが、Rとそのパッケージはすべて無料です。 研究費が限られる若手医師や理学療法士にとって、この差は非常に大きいです。 mmbiostats(https://mmbiostats.com/statistics_software_2)
【参考:無料統計ソフトEZR(Easy R)公式ページ – 自治医科大学】