ROC曲線のサンプルサイズ計算はSPSSやSASでできる?

にほんブログ村 科学ブログ 数学へ

ROC曲線の分析をしたいときに、 サンプルサイズ計算をしたい場合、 どうしたらいいのか?

SPSSSASで出来るのだろうか?

1つのROC曲線分析のサンプルサイズ計算

2つのROC曲線を比較する時のサンプルサイズ計算

2つのROC曲線を比較する時のもう一つの方法

ROC曲線のサンプルサイズ計算はSPSSでできる?

SPSSではできない。

ROC曲線分析はできるが、 サンプルサイズ計算のプログラムは 備わっていない。

ROC曲線のサンプルサイズ計算はSASでできる?

SASではできる。

SASの統計家とプログラマーが共著で 計算方法とマクロを公開している。

http://www.lexjansen.com/pharmasug/2007/sp/SP01.pdf

ROC曲線のサンプルサイズ計算はどうしたらいいの?

統計ソフトRなら計算できる。

1つのROC曲線分析のサンプルサイズ計算

2つのROC曲線を比較する時のサンプルサイズ計算

2つのROC曲線を比較する時のもう一つの方法

SASのマクロをR言語に翻訳してみた

PDFに載っているSASのマクロを、 R言語に翻訳した。

http://www.lexjansen.com/pharmasug/2007/sp/SP01.pdf

95%信頼区間の推定精度からの計算と 仮説検定からの計算の2種類がある。

推定精度から計算

Aは推定Area Under the Curve (AUC), Lは推定精度(95%信頼区間の半分幅), kappaは健常者と患者さんの比(3とは健常者:患者=3:1の意味)

roc.samplesize.estimate <- function(A, kappa, L, sig.level=0.05){
 Aa <- qnorm(A)*1.414
 Va <- 0.0099*exp((-1*Aa^2)/2)*((5*Aa^2+8) + (Aa^2+8)/kappa)
 m.est <- qnorm(1-sig.level/2)^2*Va/L^2
 tot.est <- m.est*(1+kappa)
 ceiling(c(Patients=m.est, Total=tot.est))
}

AUCを0.85と0.90の2つで計算してみる。 推定精度を±5%とする。 患者さんと健常者の比を1:3とする。

roc.samplesize.estimate (A=0.85, kappa=3, L=0.05)
roc.samplesize.estimate (A=0.90, kappa=3, L=0.05)

AUCが0.85の時は、患者さん115人、合計460人 AUCが0.90の時は、患者さん83人、合計332人と計算される。

> roc.samplesize.estimate (A=0.85, kappa=3, L=0.05)
Patients    Total 
     115      460 
> roc.samplesize.estimate (A=0.90, kappa=3, L=0.05)
Patients    Total 
      83      332 

仮説検定から計算

A0が母集団のAUC, A1が今回のサンプルのAUC, kappaは健常者と患者さんの比。

roc.samplesize.test <- function(A0, A1, kappa, sig.level=0.05, power=0.8){
 Aa0 <- qnorm(A0)*1.414
 V0 <- 0.0099*exp((-1*Aa0^2)/2)*((5*Aa0^2+8) + (Aa0^2+8)/kappa)
 Aa1 <- qnorm(A1)*1.414
 V1 <- 0.0099*exp((-1*Aa1^2)/2)*((5*Aa1^2+8) + (Aa1^2+8)/kappa)
 m.test <- (qnorm(1-sig.level/2)*sqrt(V0) + qnorm(power)*sqrt(V1))^2/(A0 - A1)^2
 tot.test <- m.test*(1+kappa)
 ceiling(c(Patients=m.test, Total=tot.test))
}

従来の検査がAUC0.85だとして、 それよりも性能が良いということを証明するには、 新しい検査のAUCが0.95であれば、 患者さんと健常者の比を3とした時に、 患者さん46人、合計181人必要と計算される。

新しい検査のAUCが0.90だとすると、 患者さん215人、合計857人必要。

roc.samplesize.test (A0=0.85, A1=0.90, kappa=3)
roc.samplesize.test (A0=0.85, A1=0.95, kappa=3)

計算結果はこちら。

> roc.samplesize.test (A0=0.85, A1=0.90, kappa=3)
Patients    Total 
     215      857 
> roc.samplesize.test (A0=0.85, A1=0.95, kappa=3)
Patients    Total 
      46      181 

まとめ

SPSSは、 ROC曲線のサンプルサイズ計算は 出来ない。

SASは、 ROC曲線のサンプルサイズ計算は マクロがわからなければならず、 簡単にはできない。

統計ソフトRなら いとも簡単にできる。