我在文章中对几种不同的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
答案 0 :(得分:0)
我相信你正在使用pROC
包。这里的错误消息不是特别有用,但您基本上需要传递标量值,包括ncases
和ncontrols
。
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
执行此测试。