MENU

R で ROC 曲線分析に必要なサンプル数を計算する方法

ROC曲線分析をしたいが、何人のデータを集めたらいいかわからない。

こんなときどうするか?

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

ROC 曲線分析に必要なサンプル数の計算を R で行う準備

まずpROCパッケージをインストールする。

インストールは一回でOK。

install.packages("pROC")

毎回呼び出しのためlibrary()を実施。

library(pROC)

ROC 曲線分析に必要なサンプル数を計算するのに必要な数値

ROC曲線分析のサンプルサイズ計算に必要な数値は、AUC (Area Under the Curve) の見積もり値と、検出力だ。

AUCが0.5の時に、凸なしで、対角線のようになる。

この場合は、検査として役に立たない。

AUCは、0.5よりも大きいことが大前提で、仮説検定は帰無仮説は0.5以下、対立仮説は0.5超とするのが妥当なため、片側検定が望ましい。

以下も参照。

たとえば、AUCが0.8、検出力0.90、有意水準5%、片側検定、疾患あり、なしが1:1とする。

  • AUC=0.80
  • power=0.90
  • Significant level=0.05
  • ratio of normal to abnormal = 1:1
  • one-sided test

このとき以下のようなスクリプトを書く。

power.roc.test(auc=0.80, power=0.90, alternative="one")

結果として、疾患ありもなしも、13.38553切り上げて14例ずつと計算される。

> power.roc.test(auc=0.80, power=0.90, alternative="one")
One ROC curve power calculation
ncases = 13.38553
ncontrols = 13.38553
auc = 0.8
sig.level = 0.05
power = 0.9

疾患なしが2、疾患ありが1とすると、21例と11例がそれぞれ必要と計算され、合計32例が必要となる。

疾患なし:ありの比はkappa=という変数で指定する。

> power.roc.test(auc=0.8, power=0.9, alternative="one", kappa=2)
One ROC curve power calculation
ncases = 10.34798
ncontrols = 20.69596
auc = 0.8
sig.level = 0.05
power = 0.9

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

ROC 曲線分析のサンプル数計算に必要な AUC と検出力はどう決めるか

特に決まりはない。

研究者が良かれと思う基準で決めるしかない。

先行研究がある場合は大いに参考になる。

AUCが1に近いと予想される場合、必要なサンプルサイズは小さくなる。

AUCを0.9にすると、14例ずつだったものが、7例ずつになる。

> power.roc.test(auc=0.90, power=0.90, alternative="one")
One ROC curve power calculation
ncases = 6.124355
ncontrols = 6.124355
auc = 0.9
sig.level = 0.05
power = 0.9

power.roc.test() の作成者は、患者でも対照でも、必要サンプルサイズが10例を下回ったら、最低でも10例サンプリングするのが望ましいと勧めている。

AUCが0.5に近いと予想すると、必要なサンプルサイズは大きくなる。

AUCを0.6にすると、14例ずつだったものが、135例ずつになる。

> power.roc.test(auc=0.60, power=0.90, alternative="one")
One ROC curve power calculation
ncases = 134.638
ncontrols = 134.638
auc = 0.6
sig.level = 0.05
power = 0.9

検出力を下げると必要なサンプルサイズは小さくなる。

検出力を 0.8 に下げると、14例ずつだったものが、10例ずつになる。

> power.roc.test(auc=0.80, power=0.80, alternative="one")
One ROC curve power calculation
ncases = 9.933712
ncontrols = 9.933712
auc = 0.8
sig.level = 0.05
power = 0.8

検出力を上げると必要なサンプルサイズは大きくなる。

検出力を0.95に上げると、14例ずつだったものが、17例ずつに変わる。

> power.roc.test(auc=0.80, power=0.95, alternative="one")
One ROC curve power calculation
ncases = 16.62344
ncontrols = 16.62344
auc = 0.8
sig.level = 0.05
power = 0.95

ROC 曲線分析に必要なサンプル数の計算をエクセルで行う

上記の計算をエクセルでも行えるようにした。

よければ。

ROC曲線のためのサンプルサイズ計算【エクセルでサンプルサイズ】 | TKER SHOP

以下は、使い方動画。

引用文献情報

pROC パッケージの引用文献情報は、以下のとおり

Xavier Robin, Natacha Turck, Alexandre Hainard, Natalia Tiberti,
  Frédérique Lisacek, Jean-Charles Sanchez and Markus Müller (2011).
  pROC: an open-source package for R and S+ to analyze and compare ROC
  curves. BMC Bioinformatics, 12, p. 77.  DOI: 10.1186/1471-2105-12-77
  <http://www.biomedcentral.com/1471-2105/12/77/>

上記エクセルファイルを使用した場合の引用文献情報も、 pROC パッケージの計算プログラムの一部を移植したものなので、pROC パッケージの引用文献情報と同一でよいと考える

まとめ

ROC曲線分析のサンプルサイズ計算を R で行う方法を紹介した。

pROCパッケージを使って計算できる。

エクセルでも計算できるようにした。

予想 AUC と検出力をどうするかを、先行研究を踏まえて決めておく必要がある。

参考文献

https://pubmed.ncbi.nlm.nih.gov/15142978

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメント一覧 (1件)

コメントする

目次