本文主要目的介紹做ROC曲線時(shí)遇到的問題和解決方法
#? SPSS可導(dǎo)入excel表格,真是省時(shí)間省力氣
#? 如何在SPSS中繪制ROC曲線弊攘,加深了一點(diǎn)新的體會(huì)就是在統(tǒng)計(jì)學(xué)中抢腐,應(yīng)用一個(gè)方法去解決問題,首先需要明確用到的變量類型襟交,定距(Scale)氓栈、定序(Ordinal)、定類(Nominal)婿着。
主要遇到的問題有兩個(gè)
?一是AUC值小于0.5授瘦,當(dāng)時(shí)特別發(fā)愁,因?yàn)槭孪炔榈降馁Y料是竟宋,我做出來診斷標(biāo)準(zhǔn)3 有一個(gè)的曲線下面積小于0.5提完。再次sou后發(fā)現(xiàn)可以通過轉(zhuǎn)換0和1陽(yáng)性事件來變通。個(gè)人理解是只要P值有意義丘侠,那么可以通過轉(zhuǎn)換來實(shí)現(xiàn)AUC值大于0.5徒欣。
? ? 二是今天最大的問題,分組標(biāo)準(zhǔn)從數(shù)據(jù)的中位數(shù)蜗字,平均數(shù)打肝,還有ROC值線上取CUTOFF,我決定選擇CUTOFF挪捕,圖啥的也畫好的了吧粗梭,這個(gè)值到底是多少?文獻(xiàn)里都是這么寫的级零。
此時(shí)断医,一個(gè)優(yōu)秀的科研工作者的內(nèi)心有點(diǎn)煩躁,于是她想到了發(fā)朋友圈和繼續(xù)谷歌的方法奏纪,甚至想去問老板鉴嗤。為了面子,她繼續(xù)搜尋序调,看到了這樣一句話:
通常情況下醉锅,SCI雜志會(huì)要求我們計(jì)算診斷實(shí)驗(yàn)中的最佳切割點(diǎn),cutoff值发绢,而SPSS恰好不能提供硬耍。
R軟件是一款統(tǒng)計(jì)功能十分強(qiáng)大的開源軟件,OptimalCutpoints包是一個(gè)專門做ROC曲線和cutoff值的包朴摊,利用R軟件可以輕松實(shí)現(xiàn)默垄。不想寫命令的可以使用基于OptimalCutpoints包的網(wǎng)頁(yè)工具即可。
所以甚纲,那些文章里的CUTOFF值口锭,只用SPSS,難道是目測(cè)出來的?
網(wǎng)頁(yè)工具鏈接:強(qiáng)大的ROC頁(yè)面工具easyROC: a web-tool for ROC curve analysis (ver. 1.3.1)
教程可見醫(yī)統(tǒng)界推送:ROC曲線截?cái)帱c(diǎn)(cutoff值)的計(jì)算
# spss的數(shù)據(jù)導(dǎo)出
? ?其實(shí)鹃操,如果她能養(yǎng)成一個(gè)好習(xí)慣韭寸,想好整個(gè)研究方案,就不用走#3之路了荆隘,數(shù)據(jù)導(dǎo)出后恩伺,NULL#值和時(shí)間的亂碼都是很煩人的事情。
# R語言的數(shù)據(jù)讀入
注定是意難忘了椰拒,深夜使用網(wǎng)頁(yè)工具反復(fù)運(yùn)算晶渠,查詢后得知-------GG,網(wǎng)頁(yè)極不穩(wěn)定燃观,不一定能順利做出來褒脯,而且部分雜志對(duì)網(wǎng)頁(yè)結(jié)果認(rèn)可度不高。本次介紹直接用R軟件OptimalCutpoints包來計(jì)算缆毁,結(jié)果具有可重復(fù)性番川。
然后發(fā)現(xiàn)R讀不進(jìn)exc
解決辦法
1.安裝readxl包-TMD的失敗
2.把excel表格轉(zhuǎn)換為TXT
將Excel轉(zhuǎn)TXT,而且在TXT中將表格以“脊框,逗號(hào)”隔開的方式來排序颁督,這樣有利于我們區(qū)分!操作方法:先將Excel表格“文件”-->另存為浇雹,然后選擇“CSV”格式沉御;然后將“CSV”格式文件用“記事本”來打開
此方法經(jīng)驗(yàn)證,有效
#用R進(jìn)行CUTOFF的計(jì)算
一篇文章在寫自己這個(gè)程序怎么好箫爷,那你倒是告訴我嚷节,這個(gè)程度在哪里呀聂儒,額虎锚,浪費(fèi)我一番心血為了下載這篇文章,口吐芬芳
#如何了解一個(gè)包的用法
第一種方法衩婚,查看說明書:函數(shù)——?OptimalCutpoints---但是您也只能了解它的說明
查看了說明窜护,于是照著寫代碼,發(fā)現(xiàn)不行非春,參照其示例數(shù)據(jù)elas的格式柱徙,真的委曲求全
目測(cè)是不可能目測(cè)的,然后發(fā)現(xiàn)CSV格式讀進(jìn)去的储耐,不行羊初。問了程師姐,師姐說,用str_split函數(shù)长赞,我又不敢繼續(xù)問晦攒,只能繼續(xù)探索。
此處省略我是如何重新命名了行贩据,然后進(jìn)行了數(shù)據(jù)轉(zhuǎn)換栋操,大神一句話,菜鳥跑半年
第二種方法饱亮,親測(cè)有效讼庇,查看其示例數(shù)據(jù),參照其示例數(shù)據(jù)elas的格式(真的委曲求全)近尚,做到數(shù)據(jù)格式和他一樣蠕啄,然后修改相應(yīng)的參數(shù)
elas是OptimalCutpoints包自帶的數(shù)據(jù):該數(shù)據(jù)來自于加利西亞綜合醫(yī)院的心臟病科。本研究旨在評(píng)估白細(xì)胞彈性蛋白酶測(cè)定在冠狀動(dòng)脈疾哺甓汀(CAD)診斷中的臨床應(yīng)用價(jià)值歼跟。這個(gè)數(shù)據(jù)框,包括了3個(gè)變量格遭,納入141例病例哈街。elas:白細(xì)胞彈性蛋白酶。為數(shù)值型向量拒迅;status疾病狀態(tài)(存在/不存在冠狀動(dòng)脈疾采亍)。賦值為0和1璧微;gender患者的性別分為兩個(gè)水平作箍,Male和Female。
install.packages("OptimalCutpoints") #安裝OptimalCutpoints包
library(OptimalCutpoints) #加載OptimalCutpoints包
data(elas) #加載數(shù)據(jù)
summary(elas) #總結(jié)數(shù)據(jù)
head(elas,5) #查看前5行數(shù)據(jù)
# Defaut method
optimal.cutpoint.Youden <- optimal.cutpoints(X = "elas", status = "status", tag.healthy = 0,?
methods = "Youden", data = elas, pop.prev = NULL, categorical.cov = "gender",?
control = control.cutpoints(), ci.fit = FALSE, conf.level = 0.95, trace = FALSE)
summary(optimal.cutpoint.Youden)
plot(optimal.cutpoint.Youden)
參考了公眾號(hào)這個(gè)文章:ROC曲線最佳截?cái)帱c(diǎn)(cutoff值)計(jì)算-OptimalCutpoints包簡(jiǎn)介