[生物医学统计]R语言-ROC曲线的手动实现

2021-04-02  本文已影响0人  戴钢盔的熊

最少精神病 (CMMS) 试验

本文以Bernard Rosner的《Fundamentals of Biostatistics》的一道习题为例,对ROC曲线进行了手动构造,同时计算灵敏度、特异度等相关指标。

背景:

中国人的最少精神病测验(CMMS)由114个项目组成,用于去识别老年性痴呆。这个指标也被延伸且用到临床。每个老人与精神病医生及护士谈话并被诊断是否有老年性痴呆。表1仅列出一部分正是受过教育的部分老人资料。

假设CMMS合计值≤20分者被识别为有老年性痴呆

1. 计算这个测验的灵敏度;

2. 计算这个测验的特异度;

3. 把CMMS值定在20分作分界点是任意的。假设我们改变分界点值。今分别取分界点值为5,10,15,20,25,30,请分别计算灵敏度及特异度且把他们做成表格;

4. 请用上题的表格构建一个ROC曲线;

5. 假设我们要求灵敏度及特异度都不低于70%。请找出最佳的分界点以用于识别老年性痴呆;

6. 计算ROC曲线下的面积。结合本题的前后关系解释这个面积的意义。

解答:

1. 根据CMMS合计值≤20的条件将表格进行合并,得到如表2所示的结果:

∴Sensitivity=\frac{12}{16}=0.75, Specificity=\frac{34}{46}=0.7391

3. 

Sensitivity^{(5)}=\frac{2}{16}=0.125,  Specificity^{(5)}=\frac{46}{46}=1

之后的表格类似处理,这里不再依次展示各个表格,仅呈现计算结果:

4. 

图1. ROC曲线

5.

图2. Cutoff识别

6. 如图1所示,详细计算请见程序。

程序地址:https://github.com/KeWXiong/Biostatistics-learning/blob/main/ROC_curve_manual.R

 (统计小白,如有错误,还望大神们指正)

上一篇下一篇

猜你喜欢

热点阅读