选择遗忘|程序员不用的R语言,在这些行业却“香”到不行( 二 )


选择遗忘|程序员不用的R语言,在这些行业却“香”到不行可以说 , 掌握R语言 , 利用其强大的统计分析和可视化功能 , 对提高医疗质量、强化患者安全、降低风险、降低医疗成本等方面发挥无与伦比的巨大作用 。 现在市面上有很多流行的统计和作图软件 , 如 SAS、SPSS、Stata 等 。 为何要选择 R 呢?具体来讲 , R 有如下优势 。

  • 大多数统计软件需要付费 , 而 R 是基于 GNU 通用公共许可协议发布的 , 它可以免费使用和传播 。
  • R 可以在多种平台下使用 , 如 Windows、macOS、各种版本的 Linux 和 UNIX 等 。 有用户甚至在浏览器和手机操作系统上运行 R 。
  • R 编程简单 , 仅需要熟悉一些函数的参数和用法 , 不需要了解程序实现的细节 。
  • R 小巧但功能强大 , 被称为数据分析界的“瑞士军刀” 。 R 的安装文件大小不到100MB , 大部分函数存在于扩展包里 。 这些扩展包涵盖了各行各业中数据分析的前沿方法 。
  • R 实现了可重复性分析 , 用户可以从重复性分析工作中抽身出来 , 也能与同行分享分析过程并从中获益 。 借助 R 及其扩展包 , 用户能在一份文档中混合编写 R 代码和标记文本 , 并自动生成分析报告 。
R语言在“临床诊断”的应用
在临床医学中 , 医生的一项重要任务是判断就诊者是否患病 , 以便采取适当的进一步行动 。 临床检测结果常被用于指导临床决策 , 因此 , 对临床诊断试验的质量评价尤为重要 。
用于描述检测质量的统计学指标有:灵敏度、特异度、预测值、正确率和似然比等 。 通常最简单的诊断结果是根据检验指标的测定值将受试对象分成真阳性(a)、假阳性(b)和假阴性(c)、真阴性(d)两组 。
对于这类检验指标的评价 , 通常是对检验结果与目前公认的最准确的诊断方法 , 即金标准 (gold standard)作比较 , 以正确区分“有病”和“无病” 。 而灵敏度和特异度是反映真实性最重要和不可缺少的指标 。
灵敏度(sensitivity)是指患者检测结果为阳性的百分率 , 也称真阳性率:
灵敏度=a/(a+c)*100%
特异度(specificity)是指未患病的人检测结果为阴性的百分率 , 也称真阴性率:
特异度=d/(b+d)*100%
在实际应用中 , 我们往往只知道试验的结果 , 并据此作出临床判断 , 但并不知道受试者究竟是否是患者 。 因此 , 我们需要了解检验结果预测疾病的能力 , 如阳性结果中真正的患者的比例是多少 。
阳性预测值(positive predictive value)是指在检测结果呈阳性的情况下受试者患病的比例:
阳性预测值=a/(a+b)*100%
阴性预测值(negative predictive value)是指在检测结果为阴性的情况下受试者不患病的比例:
阴性预测值=d/(c+d)*100%
灵敏度和特异度反映了检测方法的判断能力不受患病率的影响 , 但受到疾病严重程度等患者特征的影响 。 而预测值受到患病率的影响 , 患病率越低 , 阳性预测值越低 , 而阴性预测值越高 。 这时 , 最好来图解灵敏度、特异度、阳性预测值和阴性预测值 。
假设在一项研究中有 100 名患者和 100 名非患者 。 某一检测试验的灵敏度为 80% , 特异度为 90% 。 数据可以描述如下:
> table1 <- as.table(cbind(c(80, 20), c(10, 90)))> dimnames(table1) <- list("检测结果" = c("阳性", "阴性"),+ "金标准" = c("有病", "无病"))> table1金标准检测结果 有病 无病阳性 80 10阴性 20 90> mosaicplot(t(table1), col = c("red", "white"), main = "")由此得到不同患病率下的灵敏度和特异度示意图:
选择遗忘|程序员不用的R语言,在这些行业却“香”到不行图a中 , 灵敏度是左侧红色部分的相对高度(80%) , 特异度是右侧白色部分的相对高度(90%) 。 阳性预测值是指左侧红色部分相对于所有红色部分所占的比例 , 在此例中为 80/(80 + 10) ≈ 88.9% 。 阴性预测值是指右侧白色部分相对于所有白色部分所占的比例 , 在此例中为 90/(20 + 90) ≈ 81.8% 。