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