統計ER

R, EZR, SPSS, KH Coder を使ったデータ分析方法を紹介するブログ。ニッチな内容が多め

ROC 曲線に必要なサンプル数 サンプルサイズ

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

こんなときどうするか?

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


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

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超とするのが妥当なため、片側検定が望ましい。

以下も参照。

toukeier.hatenablog.com

たとえば、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

以下は、使い方動画。

youtu.be

まとめ

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

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

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

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

参考文献

www.ncbi.nlm.nih.gov

clinchem.aaccjnls.org