【发布时间】:2021-05-04 14:49:49
【问题描述】:
我正在测试新方法的诊断价值,并想测试这种方法的敏感性和特异性。 假设我们有一个包含 200 名患者和对照组的数据集,测试结果从 1 到 8 不等。
set.seed(123)
Df<-
data.frame(id=1:200,
group = sample(c("Patient", "Control"), 200, TRUE),
test = sample(5, 200, TRUE))
我根据组变量和测试结果将“受访者”分组如下:
Df%>%
group_by(group, test) %>%
summarise(Num=n()) %>%
spread(group, Num)%>%
mutate(reference=test)
如何使用各自的测试结果作为阈值来总结各列中的真阳性、假阳性、假阴性和假阳性的数量? 我怀疑突变应该这样开始(如果使用 case_when):
mutate(TP=case_when(id.group=="Patient"&test>=reference~[..summarize conditional cells...], FP=case_when id.group=="Control"&test>=reference~[..summarize conditional cells...]), etc.
但不知道如何总结条件单元格。 请你帮助我好吗? 提前致谢
【问题讨论】:
-
那么你想要的究竟是什么? (使用随机数据时,请使用
set.seed(),以便我们得到与您相同的随机值进行测试) -
嗨。谢谢你。现已添加。
-
TP、FP、FN、TN的计算公式是什么?您能显示预期输出的前几行吗?
-
我想将值的数量总结为变量。比方说,我想知道对于 1 或更高的参考值有多少是真阳性。所以,条件是 group=="Patient"&test>=reference。参考行“1”的 TP 值应包含测试等于或高于 1 的“患者”的总和。
-
对于“2”的参考值,列应为:TP=80,FP=99,FN=12,TN=9。对于“3”的参考值——如下:TP=67、FP=77、FN=32、TN=24等