R中的power.roc.test问题

时间:2014-03-01 15:41:01

标签: roc

我在文章中对几种不同的ROC分析进行了分析。因此,我正在调查我的样本量是否合适。我创建了一个数据框,其中包含可能的样本大小的所有组合,用于ROC分析。

str(auc)
'data.frame':   93 obs. of  2 variables:
 $ cases   : int  10 11 12 13 14 15 16 17 18 19 ...
     $ controls: int  102 101 100 99 98 97 96 95 94 93 ...

我的目标是创建线图案例/控件(即kappa)与最佳AUC

因此,我想使用power.roc.test创建第三个变量来计算最佳AUC

我遇到上面的问题,问题在哪里?

auc$auc<-power.roc.test(sig.level=.05,power=.8,ncases=auc$cases,ncontrols=auc$controls)$auc
Error in value[[3L]](cond) : AUC could not be solved:
Error in uniroot(power.roc.test.optimize.auc.function, interval = c(0.5, : invalid function value in 'zeroin'
In addition: Warning messages:
1: In if (is.na(f.lower)) stop("f.lower = f(lower) is NA") :
  the condition has length > 1 and only the first element will be used
2: In if (is.na(f.upper)) stop("f.upper = f(upper) is NA") :
  the condition has length > 1 and only the first element will be used
3: In if (f.lower * f.upper > 0) stop("f() values at end points not of opposite sign") :
  the condition has length > 1 and only the first element will be used

1 个答案:

答案 0 :(得分:0)

我相信你正在使用pROC包。这里的错误消息不是特别有用,但您基本上需要传递标量值,包括ncasesncontrols

power.roc.test(sig.level=.05,power=.8,ncases=10, ncontrols=102)

你可以在一些应用循环中包装它:

auc$auc<- apply(auc, 1, function(line) {
   power.roc.test(sig.level=.05, power=.8, ncases=line[["cases"]], ncontrols=line[["controls"]])$auc
})

然后你可以随心所欲地绘制这个:

plot(auc$cases / auc$controls, auc$auc, type = "l")

请注意,此处的AUC不是“最佳AUC”,而是AUC,您可以在给定的显着性水平下使用给定的样本大小来测量给定的AUC的显着性(H0:AUC) = 0.5)。请注意,无论如何,您都无法使用pROC执行此测试。