|
第28天 學(xué)習(xí)R語言的最大理由:利用R快速成文 30天R語言已經(jīng)接近尾聲,我們進(jìn)行了R語言的介紹、對(duì)數(shù)據(jù)的導(dǎo)入、整理、統(tǒng)計(jì)分析、繪制統(tǒng)計(jì)圖表,現(xiàn)在我們?cè)撔纬烧撐牧恕?/span> 學(xué)習(xí)R語言一個(gè)最大的理由是快速成文!我們都知道無論是SPSS,還是SAS數(shù)據(jù)分析結(jié)果,呈現(xiàn)出來的統(tǒng)計(jì)表實(shí)在是慘不忍睹。但是,論文寫作,必須繪制出合格的三線表!怎么辦,SPSS和SAS分析出結(jié)果后,我們只能一個(gè)一個(gè)抄錄,將分析數(shù)據(jù)逐個(gè)復(fù)制黏貼到已經(jīng)繪制好的表格中,實(shí)在是頭大。 但是R語言不同,現(xiàn)在它有很多靈活的工具,這里介紹的是一個(gè)包,叫做tableone,它可以幫助我們快速形成統(tǒng)計(jì)分析的三線表,而且極其規(guī)范。 今天我們率先介紹的是,利用R語言快速形成第27天所介紹的生存分析。 1. 案例 我們一個(gè)真實(shí)世界臨床研究,通過隊(duì)列隨訪獲得胰腺癌患者的生存結(jié)局,探討術(shù)中放化療等因素對(duì)胰腺癌生存的影響。結(jié)局變量包括時(shí)間(time)和結(jié)局(censor),結(jié)局中刪失意味著生存。影響因素包括年齡、trt(術(shù)中放化療)、sex(性別)、bui(占位處)、ch(胰膽管浸潤程度)、P(有無腹膜轉(zhuǎn)移)、stage(TNM分類)。 2. 一般論文的統(tǒng)計(jì)分析策略 對(duì)于這樣的案例,我們應(yīng)該如何去分析? 這一案例,一般如果寫一篇論文,可以從2個(gè)角度來分析。第一個(gè)角度,就側(cè)重于感興趣的因素,比如術(shù)中放化療,其他因素作為混雜因素處理;第二角度,所有的因素地位相同,可以探討各個(gè)因素的影響。我們本論文按照第一角度為例,看看R語言如何一氣呵成。 以下是論文的統(tǒng)計(jì)分析策略與預(yù)計(jì)結(jié)果 題目:術(shù)中放化療對(duì)胰腺癌患者生存結(jié)局的影響研究 統(tǒng)計(jì)分析策略:一般論文分析套路是,統(tǒng)計(jì)描述、差異比較、回歸分析。 1)首先,要開展基本情況的描述,描述患者的基本特征和相應(yīng)的結(jié)局。 2)我們可能需要比較下采取術(shù)中放化療和不采取術(shù)中放化療人群的特征差異性,看分組是否均衡。 3)了解了分組均衡后,我們把分組不均衡的因素和術(shù)中放療因素(trt)一起構(gòu)建COX回歸方程,這就是常見的分析三個(gè)過程。 最終結(jié)果:最基本的就包括以下幾個(gè)結(jié)果:對(duì)于本題的的內(nèi)容和目標(biāo),統(tǒng)計(jì)分析最終得到以下三張非常重要,但需要花大量精力、大量時(shí)間去整理規(guī)范的統(tǒng)計(jì)表。 1)統(tǒng)計(jì)描述的結(jié)果 2)差異性比較結(jié)果 3)COX回歸分析結(jié)果 3. 如何利用R語言出口成章? 要完成上述3張表格的規(guī)范性問題,我們可以結(jié)合tableone和broom包共同完成。 1)準(zhǔn)備工作 安裝和導(dǎo)入R語言兩個(gè)重要的包survival、tableone、此外還有一個(gè)非常重要的包broom,等下也非常有用,導(dǎo)入數(shù)據(jù) install.packages("survival") install.packages("tableone") library(tableone) library(survival) library(broom) pancer<-read.csv("pancer.csv") 2)進(jìn)行數(shù)據(jù)的整理 pancer數(shù)據(jù)庫總的來說結(jié)構(gòu)相對(duì)簡(jiǎn)單,無序進(jìn)行復(fù)雜的操作。這里主要要進(jìn)行的是,對(duì)部分變量進(jìn)行因子化的操作。 fvars<-c(“sex”,”trt”,”bui”,”ch”,”p”,”stage”) pancer[fvars] <- lapply(pancer[fvars], factor) 3)首先進(jìn)行統(tǒng)計(jì)描述 tableone包的CreateTableOne()就是核心的函數(shù)了,他可以幫助我們創(chuàng)建規(guī)范的三線表,如果其中的變量是 因子,它就計(jì)算比例,如果是數(shù)值變量,它就計(jì)算均數(shù)和標(biāo)準(zhǔn)差;如果是偏態(tài)分布,則可以通過“nonnormal = ”注明,可以計(jì)算M(P25,P75)了。 vars <- c("age","sex","trt","bui","ch","p","stage","censor","time") tableOne <- CreateTableOne(vars = vars, data = pancer) table1<-print(tableOne,nonnormal = c("time"),showAllLevels = TRUE) write.csv(table1,file="table1.csv") #形成統(tǒng)計(jì)分析的excel表
上圖左側(cè)是excel表格,然后可以將Excel結(jié)果復(fù)制到word并形成三線表。我們發(fā)現(xiàn),無論是正態(tài)分布的數(shù)據(jù)(age),偏態(tài)分布數(shù)據(jù)(time),分類數(shù)據(jù),都是按照數(shù)據(jù)的特征形成不同的結(jié)果,均數(shù)、中位數(shù)或者構(gòu)成比。迅不迅速?神不神奇? 4)接著進(jìn)行分組比較 通過以下R語言即可完成執(zhí)行,同樣是CreateTableOne()函數(shù)看,在參數(shù)設(shè)置中增加了”strata = ”,就可以分組進(jìn)行分析了。 vars1 <- c("age","sex","bui","ch","p","stage") tabletwo <- CreateTableOne(vars = vars1, strata = c("trt"), data = pancer) table2<-print(tabletwo,nonnormal = c( ),showAllLevels = TRUE) write.csv(table2,file="table2.csv") #形成統(tǒng)計(jì)分析的excel表 可以看出,三行R語言就完成了我們所有變量的比較,有定量的age,也有其它的分類數(shù)據(jù),如果你是偏態(tài)數(shù)據(jù),它還可以進(jìn)行秩和檢驗(yàn)幫你算出。真是出口成章。 5)接著進(jìn)行COX回歸分析 resCox<-coxph(Surv(time,censor)~age+sex+bui+ch+p+stage+trt,data=p1) #進(jìn)行COX回歸 table31<-ShowRegTable(resCox, exp = TRUE, digits = 2, pDigits = 3, printToggle = TRUE, quote = FALSE, ciFun = confint) table32<-tidy(resCox) table3<-cbind(table31,table32) #table31 table32是兩個(gè)結(jié)果,現(xiàn)在合并成一個(gè)總表 write.csv(table7,file="table3.csv") # 數(shù)據(jù)導(dǎo)出 我們可以看出,常見需要的回歸系數(shù)、標(biāo)準(zhǔn)誤、p值都在,最令人驚奇的是HR及95CI%置信區(qū)間完美合并到一起。若按傳統(tǒng)的spss方法,這些數(shù)據(jù)合并整理成一張表格是非常損耗時(shí)間和精力的事情。真是太棒了! 4.總結(jié) 一般的臨床研究,統(tǒng)計(jì)分析就三把斧:統(tǒng)計(jì)描述、差異性比較和回歸建模,顯然R語言完美解決了統(tǒng)計(jì)分析結(jié)果整理形成規(guī)范三線表的麻煩。在統(tǒng)計(jì)描述上,可以根據(jù)不同數(shù)據(jù)的特征給出不同的統(tǒng)計(jì)描述方法,在差異性比較方面,可以給出不同數(shù)據(jù)比較的不同差異性比較方法,包括t、F、卡方、fisher法和秩和檢驗(yàn);在回歸分析上,不僅是Cox回歸。線性回歸、logistic回歸都同樣可以形成規(guī)范的表格。這些表格,如果人工來整理,不僅慢,而且不規(guī)范! 開玩笑說,R語言可以批量制造論文了!現(xiàn)在R語言對(duì)你吸引力是不是很大了?你覺得是不是值得你學(xué)習(xí)了呢? 如果你這樣的方法值得我們大家學(xué)習(xí),請(qǐng)幫助朋友圈轉(zhuǎn)發(fā)吧。非常感謝 DAY28的內(nèi)容就介紹到這里! |
|
|