永久更新列表:国产高潮流白浆喷水免费a片
使用R谈话的cgdsr包获得TCGA数据(cBioPortal)TCGA的28篇教程- 使用R谈话的RTCGA包获得TCGA数据 (离线打包版块)TCGA的28篇教程- 使用R谈话的RTCGAToolbox包获得TCGA数据 (FireBrowse portal)TCGA的28篇教程- 批量下载TCGA所特地据 ( UCSC的 XENA)TCGA的28篇教程- 数据下载就到此为止吧TCGA的28篇教程- 指定癌症稽查感好奇基因的抒发量
本教程目次:最初使用cgdsr获得抒发数据集临床信息
临床贵寓解读
轻视的KM活命分析
有分类的KM活命分析
根据基因抒发量对样本进行分组做活命分析
cox活命分析国产高潮流白浆喷水免费a片
某基因突变与否也不错用来分组
基因的拷贝数也不错进行分组
批量进行分组而况做活命分析
活命分析一般来说是针对RNA抒发数据,不错说mRNA-seq的转录组数据,也不错说miRNA-seq数据,八成基因抒发芯片的抒发量值。
活命分析,大多即是说的KM门径推测活命函数,而况画出身存弧线,然后还不错根据分组检会一下它们的活命弧线是否有权贵的各别。
在R中,有个包survival做活命分析就很轻视!只需要记着和熟习使用三个函数:
Surv:用于创建活命数据对象国产高潮流白浆喷水免费a片
survfit:创建KM活命弧线或是Cox转机活命弧线
survdiff:用于不同组的统计检会
最初使用cgdsr获得抒发数据集临床信息既然是要证明奈何对纵情癌症的纵情基因做活命分析,那么咱们最初需格式略cgdsr下载TCGA纵情数据的用法(见之前的教程),底下的例子是获得TCGA数据库的乳腺癌的BRCA1和BRCA2基因的抒发,以及波及到的病人的临床贵寓。
rm(list = ls())library(cgdsr)library(DT) mycgds <- CGDS("http://www.cbioportal.org/public-portal/")mycancerstudy = 'brca_tcga' ## 底下的代码不错不需要运行,因为照旧保存好了用来做活命分析的数据。### 然而需要看懂代码,这么才能做纵情癌症的纵情基因的纵情数据的活命分析;if(F){ getCaseLists(mycgds,mycancerstudy)[,1] getGeneticProfiles(mycgds,mycancerstudy)[,1] mycaselist ='brca_tcga_rna_seq_v2_mrna' mygeneticprofile = 'brca_tcga_rna_seq_v2_mrna' choose_genes=c('BRCA1','BRCA2') ## get expression data expr=getProfileData(mycgds,choose_genes, mygeneticprofile,mycaselist) ## get mutation data mut_df <- getProfileData(mycgds, caseList ="brca_tcga_sequenced", geneticProfile = "brca_tcga_mutations", genes = choose_genes ) mut_df <- apply(mut_df,2,as.factor) mut_df[mut_df == "NaN"] = "" mut_df[is.na(mut_df)] = "" mut_df[mut_df != ''] = "MUT" ## get copy number data cna <- getProfileData(mycgds, caseList ="brca_tcga_sequenced", geneticProfile = "brca_tcga_gistic", genes = choose_genes) rn=rownames(cna) cna <- apply(cna,2,function(x) as.character(factor(x, levels = c(-2:2), labels = c("HOMDEL", "HETLOSS", "DIPLOID", "GAIN", "AMP")))) cna[is.na(cna)] = "" cna[cna == 'DIPLOID'] = "" rownames(cna)=rn # Get clinical data for the case list myclinicaldata = getClinicalData(mycgds,mycaselist) save(expr,myclinicaldata,cna,mut_df,file='survival_input.Rdata')}load(file='survival_input.Rdata')DT::datatable(expr)图片国产高潮流白浆喷水免费a片国产高潮流白浆喷水免费a片国产高潮流白浆喷水免费a片国产高潮流白浆喷水免费a片
上述代码取决于网速,我照旧下载整理好了:survival_input.Rdata 数据,幸免每次访佛这个教程从头下载的莫名DT::datatable(myclinicaldata, extensions = 'FixedColumns', options = list( #dom = 't', scrollX = TRUE, fixedColumns = TRUE ))## Warning in instance$preRenderHook(instance): It seems your data is too## big for client-side DataTables. You may consider server-side processing:## http://rstudio.github.io/DT/server.html图片
不错看到所谓的抒发矩阵即是每个基因在各个样本的抒发量,只不外是要提神单元,不错是RPKM,TPM等。
活命分析所需的临床信息一般是活命时辰和是否升天的情状信息。
这两个数据,也不错我方从其它路线(比如好多人可爱excel表格)整理,然后读入到R谈话内部再来做活命分析。
临床贵寓解读临床信息辱骂常复杂的,然而咱们并不需格式略那么多,底下是我挑出的一些比较紧要的,需要透顶贯通:
choose_columns=c('AJCC_METASTASIS_PATHOLOGIC_PM','AJCC_NODES_PATHOLOGIC_PN','AJCC_PATHOLOGIC_TUMOR_STAGE','AJCC_TUMOR_PATHOLOGIC_PT', "AGE",'SEX','VITAL_STATUS','OS_STATUS','OS_MONTHS', "DFS_MONTHS","DFS_STATUS")choose_clinicaldata=myclinicaldata[,choose_columns]colnames(choose_clinicaldata)[1:4]=c('M','N','STAGE','T')str(choose_clinicaldata, no.list = T, vec.len = 2)## 'data.frame': 1100 obs. of 11 variables:## $ M : chr "M0" "MX" ...## $ N : chr "N0" "N3" ...## $ STAGE : chr "Stage IIA" "Stage IIIC" ...## $ T : chr "T2" "T3" ...## $ AGE : int 62 59 70 42 69 ...## $ SEX : chr "Female" "Female" ...## $ VITAL_STATUS: chr "Alive" "Alive" ...## $ OS_STATUS : chr "LIVING" "LIVING" ...## $ OS_MONTHS : num 10.3 26 ...## $ DFS_MONTHS : num 10.3 26 ...## $ DFS_STATUS : chr "DiseaseFree" "DiseaseFree" ...天然上头我挑出的临床信息还有好多,然而咱们只需要用到OS_MONTHS和OS_STATUS就不错来推测KM活命函数,画出最轻视的活命弧线!
无病活命期(Disease-free survival,DFS)的界说是指从就地化开动至疾病复发或由于疾病发扬导致患者升天的时辰。该盘算也常作 为抗肿瘤药物III期临床试验的主要尽头。某些情况下,DFS与OS比拟,看成尽头比较难以纪录,因为它条件负责随访,实时发现疾病复发,而且肿瘤患者的 升天原因也很难细则。肿瘤患者常有团结症(如,心血管病),这些团结症可能会插手对DFS的判断。而况,肿瘤患者常死于病院外,不成惯例进行尸检。
总活命期(Overall survival,OS) 的界说是指从就地化开动至因任何原因引起升天的时辰。该盘算时时被合计是肿瘤临床试验中最好的疗效尽头。如若在活命期上有小幅度的提升,不错合计是挑升思的临床受益把柄。看成一个尽头国产高潮流白浆喷水免费a片,活命期应每天进行评价,可通过在入院就诊时,通过与患者径直战役八成通过电话与患者交谈,这些相对比较容易 纪录。阐发升天的日历频繁险些莫得穷苦,而况升天的时辰有其独处的因果关系。当纪录至升天之前的失访患者,频繁截止到终末一次有纪录的、与患者战役的时辰。
事件时辰散播如下:升天(DECEASED)和存活(LIVING)
dat=choose_clinicaldata[choose_clinicaldata$OS_MONTHS > 0,]table(dat$OS_STATUS)## ## DECEASED LIVING ## 154 930attach(dat)## The following object is masked from package:base:## ## Tlibrary(ggplot2)ggplot(dat, aes(x = OS_MONTHS, group = OS_STATUS,colour = OS_STATUS, fill = OS_STATUS)) + geom_density(alpha = 0.5)图片
imgdetach(dat)轻视的KM活命分析library(survival)dat=choose_clinicaldata[choose_clinicaldata$OS_MONTHS > 0,]table(dat$OS_STATUS)## ## DECEASED LIVING ## 154 930attach(dat)## The following object is masked from package:base:## ## T## 推测KM活命弧线my.surv <- Surv(OS_MONTHS,OS_STATUS=='DECEASED')## The status indicator, normally 0=alive, 1=dead. ## Other choices are TRUE/FALSE (TRUE = death) or 1/2 (2=death). kmfit1 <- survfit(my.surv~1)# summary(kmfit1)plot(kmfit1)图片
imgdetach(dat)上头的活命分析并莫得指定样本奈何进行分组,是最轻视版块的活命分析了。
咱们很容易看到,跟着感癌症的时辰延迟,病人的升天率到了一定进度就不增多了,有些病人熬过了这个癌症,八成说,到咱们拿到数据为止,他们还莫得升天!
有分类的KM活命分析最初根据性别分组,望望不同性别的乳腺癌患者的活命弧线
library(survival)dat=choose_clinicaldata[choose_clinicaldata$OS_MONTHS > 0,]attach(dat)## The following object is masked from package:base:## ## Ttable(SEX,OS_STATUS)## OS_STATUS## SEX DECEASED LIVING## Female 153 919## Male 1 11my.surv <- Surv(OS_MONTHS,OS_STATUS=='DECEASED')kmfit2 <- survfit(my.surv~SEX)plot(kmfit2,col = rainbow(length(unique(SEX))))图片
这个其实没啥必要,因为乳腺癌自己在女性发病率远高于男性,尤其是TCGA内部,就12个男性样本!img# 看这个因子的不同水平是否有权贵各别,其中默许用是的logrank test 门径。survdiff(my.surv~(SEX))## Call:## survdiff(formula = my.surv ~ (SEX))## ## n=1084, 3 observations deleted due to missingness.## ## N Observed Expected (O-E)^2/E (O-E)^2/V## SEX=Female 1072 153 152.8 0.000262 0.0337## SEX=Male 12 1 1.2 0.033305 0.0337## ## Chisq= 0 on 1 degrees of freedom, p= 0.854# 来检测我方感好奇的因子是否受其它因子(age,gender等等)的影响。# 用strata来结果协变量的影响, 比如年纪等身分survdiff(my.surv~SEX+strata(AGE))## Call:## survdiff(formula = my.surv ~ SEX + strata(AGE))## ## n=1084, 3 observations deleted due to missingness.## ## N Observed Expected (O-E)^2/E (O-E)^2/V## SEX=Female 1072 153 153.181 0.000214 0.0437## SEX=Male 12 1 0.819 0.040052 0.0437## ## Chisq= 0 on 1 degrees of freedom, p= 0.834detach(dat)这个分析真义真不大,因为乳腺癌女性患者数目要远进步男性患者,然而有相配多挑升思的分类呀!
然后根据癌症的stage来进行分类
记得不久前看多董桥先生写的一篇文章《文绉绉的广东话》,里面提到“白话文说'什么时候’,广东话说'几时’。这'几时’,当然也风花雪月古雅得很:'明月几时有﹖把酒问青天’,苏轼也是那么说的。”,其实,关中的老百姓也很少说“什么时候”这样正式的普通话,一般问时间时都说的是“几时”:你几时来?、你几时走?平常的很,非常大众化。当然,有问就有答,关中老百姓一般不说“去年”,而说“年时”,你以为“年时”就比普通话的“去年”俗气吗?宋人谢逸的词《江神子》里有“夕阳楼外晚烟笼,粉香融,淡眉峰。记得年时相见画屏中。”,元代卢挚《清平乐》一词中也写到“年时寒食,直到清明节。草草杯盘聊自适,不管家徒四壁。今年寒食无家,东风恨满天涯。早是海棠睡去,莫教醉了梨花”。这样的例子太多了:关中人表示一件事情了结时很少说“完了”,一般说的是“毕了 bì le”,(“了”读 le 时,指的是子字无臂,表示断、绝断,结束),毕和了是一个意思,表示完结,结束。“六王毕,四海一”,1200多年前的杜牧在《阿房宫赋》中就这么说。普通话中说的“趁早”关中人一般不这么说,而是说“闻早”,宋代的著名词人柳永在一首词中写道:“不如闻早还却愿,免使牵人虚魂乱”(《《木兰花令·仙吕调》》), “须知浮世俄尔是,闻早回心莫等闲。”(《敦煌变文集·欢喜国王缘》), 金人段成己 《行香子》词:“到而今,一事无成,不如闻早,觅个归程。” 元 白朴 《庆东原》曲:“忘忧草,含笑花。劝君闻早冠宜挂。”,看看,都是“闻早”。还有,关中老百姓说到一个人身体不好、瘦弱疲惫时常常使用“尫羸”一词:“那人看着尫羸得很”,这个“尫羸”其实非常文雅,晋 葛洪 《抱朴子·遐览》里说“他弟子皆亲仆使之役,采薪耕田。唯余尫羸,不堪他劳”, 唐 杜甫在 《雨》诗中写到“穷荒益自卑,飘泊欲谁诉;尫羸愁应接,俄顷恐违迕”, 宋 苏轼 《上神宗皇帝书》中有“世有尩羸而寿考,亦有盛壮而暴亡”(“尩羸”通“尫羸”)。看看,这些关中老百姓日常使用的被一些人认为很“俗”的口头语,其实“古雅得很”。那么,为什么这些本来很高雅的词语会让一些人觉得“俗气”了呢?这得从“俗”字说起。“俗”字从人从谷,先民多穴居山谷,形成习俗,因此俗的本义是.社会上长期形成的风尚、礼节、习惯等。后引申出大众化的、最通行的、习见的、趣味不高等意思。这样,一些人为了显示自己与常人不同,不是下里巴人,而是阳春白雪,所以就把普通人常用的、习见的语言、行为等称之为“俗”了。
仙客解读《昔时贤文》之一 顺口溜集
斗转星移,新中国成立了,我高小毕业了,父亲把接到天津上了中学,然后我又到了北京上大学,被十几个男人扒开腿猛戳最后在北京工作直到退休。我一生的大部分时间都是在天津、北京这两个大城市渡过的。拿天津、北京和潍县(后为潍坊市)比,潍坊就真是个小地方了。但我写了《探寻寿光古》一书后,才觉得天津、北京不能和潍县(坊)比,当“潍”在中国历史上赫赫有名时,天津、北京还是块荒无人烟之地。
library(survival)dat=choose_clinicaldata[choose_clinicaldata$OS_MONTHS > 0,]attach(dat)## The following object is masked from package:base:## ## Ttable(STAGE,OS_STATUS)## OS_STATUS## STAGE DECEASED LIVING## 4 7## Stage I 13 77## Stage IA 3 82## Stage IB 0 5## Stage II 0 6## Stage IIA 34 319## Stage IIB 34 221## Stage III 2 0## Stage IIIA 25 129## Stage IIIB 8 17## Stage IIIC 9 57## Stage IV 15 5## Stage X 7 5my.surv <- Surv(OS_MONTHS,OS_STATUS=='DECEASED')kmfit2 <- survfit(my.surv~STAGE)plot(kmfit2,col = rainbow(length(unique(STAGE))))图片
img# 检会权贵性survdiff(my.surv~(STAGE))## Call:## survdiff(formula = my.surv ~ (STAGE))## ## n=1084, 3 observations deleted due to missingness.## ## N Observed Expected (O-E)^2/E (O-E)^2/V## STAGE= 11 4 2.890 0.426 0.443## STAGE=Stage I 90 13 20.141 2.532 2.949## STAGE=Stage IA 85 3 11.594 6.370 7.015## STAGE=Stage IB 5 0 0.825 0.825 0.831## STAGE=Stage II 6 0 1.246 1.246 1.266## STAGE=Stage IIA 353 34 45.149 2.753 3.921## STAGE=Stage IIB 255 34 37.445 0.317 0.420## STAGE=Stage III 2 2 0.209 15.375 15.415## STAGE=Stage IIIA 154 25 20.460 1.007 1.169## STAGE=Stage IIIB 25 8 3.874 4.393 4.598## STAGE=Stage IIIC 66 9 4.997 3.208 3.360## STAGE=Stage IV 20 15 2.389 66.572 67.799## STAGE=Stage X 12 7 2.781 6.403 6.632## ## Chisq= 112 on 12 degrees of freedom, p= 0# 用strata来结果协变量的影响, 比如年纪等身分survdiff(my.surv~STAGE+strata(AGE))## Call:## survdiff(formula = my.surv ~ STAGE + strata(AGE))## ## n=1084, 3 observations deleted due to missingness.## ## N Observed Expected (O-E)^2/E (O-E)^2/V## STAGE= 11 4 3.943 8.19e-04 0.00214## STAGE=Stage I 90 13 21.507 3.36e+00 6.59955## STAGE=Stage IA 85 3 10.870 5.70e+00 7.79916## STAGE=Stage IB 5 0 0.395 3.95e-01 0.48088## STAGE=Stage II 6 0 1.146 1.15e+00 1.56141## STAGE=Stage IIA 353 34 42.376 1.66e+00 2.93671## STAGE=Stage IIB 255 34 36.959 2.37e-01 0.50934## STAGE=Stage III 2 2 0.545 3.88e+00 4.13017## STAGE=Stage IIIA 154 25 20.534 9.71e-01 1.53489## STAGE=Stage IIIB 25 8 2.585 1.13e+01 14.06707## STAGE=Stage IIIC 66 9 5.054 3.08e+00 3.62911## STAGE=Stage IV 20 15 4.698 2.26e+01 69.87385## STAGE=Stage X 12 7 3.389 3.85e+00 6.94665## ## Chisq= 117 on 12 degrees of freedom, p= 0detach(dat)不错看到癌症会诊内部的stage种类太多国产高潮流白浆喷水免费a片,活命分析弧线可视化遵循不好。后头咱们会先容一个比较好的活命分析结果可视化包。
根据基因抒发量对样本进行分组做活命分析最初探索一下基因的抒发量情况,这里收用的是BRCA1,BRCA2这两个基因。
library(survival)dat=cbind(choose_clinicaldata[,c('OS_STATUS','OS_MONTHS')],expr[rownames(choose_clinicaldata),])dat=dat[dat$OS_MONTHS > 0,]dat=dat[!is.na(dat$OS_STATUS),]dat$OS_STATUS=as.character(dat$OS_STATUS)# ggplot(dat,aes(x=OS_STATUS,y=BRCA1))+geom_boxplot()library(ggpubr)## Loading required package: magrittrp <- ggboxplot(dat, x="OS_STATUS", y="BRCA1", color = "OS_STATUS", palette = "jco", add = "jitter")p+stat_compare_means(method = "t.test")图片
imgp <- ggboxplot(dat, x="OS_STATUS", y="BRCA2", color = "OS_STATUS", palette = "jco", add = "jitter")p+stat_compare_means(method = "t.test")图片
img有抒发各别不一定代表有活命分析的权贵性,底下别离进行活命分析检会。
dat$brca1_group=ifelse(dat$BRCA1 > median(dat$BRCA1),'high','low')dat$brca2_group=ifelse(dat$BRCA2 > median(dat$BRCA2),'high','low')attach(dat)table(brca1_group,brca2_group)## brca2_group## brca1_group high low## high 375 167## low 167 375library(survival)my.surv <- Surv(OS_MONTHS,OS_STATUS=='DECEASED')kmfit1 <- survfit(my.surv~brca1_group,data = dat) plot(kmfit1,col = rainbow( 2 ))图片
imgkmfit2 <- survfit(my.surv~brca2_group,data = dat) plot(kmfit2,col = rainbow( 2 ))图片
imglibrary("survminer")ggsurvplot(kmfit1,conf.int =F, pval = T,risk.table =T, ncensor.plot = TRUE)图片
imgggsurvplot(kmfit2,conf.int =F, pval = T,risk.table =T, ncensor.plot = TRUE)图片
img不错看到这个survminer包对活命分析可视化的遵循很赞,之是以不错披露P值,是因为咱们的survfit函数照旧做了检会,复返的kmfit这么的对象内部自己就含有相配丰富的信息,大家不错自行摸索。
天然,即使某个基因在KM活命分析披露有权贵性的各别,也还需要扼杀其它身分的影响,而不单是是该基因抒发的上下决定了活命的狠恶。是以还需要进行底下的 cox活命分析
cox活命分析Cox比例风险转头模子(Cox’s proportional hazards regression model),简称Cox转头模子。该模子由英国统计学家D.R.Cox于1972年提议,主要用于肿瘤和其它慢性病的预后分析,也可用于部队相关的病因探索。
参考:
http://www.sthda.com/english/wiki/cox-proportional-hazards-model
https://www.r-bloggers.com/cox-proportional-hazards-model/
library(survival)library("survminer")dat=choose_clinicaldata[choose_clinicaldata$OS_MONTHS > 0,]dat=dat[!is.na(dat$OS_STATUS),]dat$OS_STATUS=as.character(dat$OS_STATUS)str(dat, no.list = T, vec.len = 2)## 'data.frame': 1084 obs. of 11 variables:## $ M : chr "M0" "MX" ...## $ N : chr "N0" "N3" ...## $ STAGE : chr "Stage IIA" "Stage IIIC" ...## $ T : chr "T2" "T3" ...## $ AGE : int 62 59 70 42 69 ...## $ SEX : chr "Female" "Female" ...## $ VITAL_STATUS: chr "Alive" "Alive" ...## $ OS_STATUS : chr "LIVING" "LIVING" ...## $ OS_MONTHS : num 10.3 26 ...## $ DFS_MONTHS : num 10.3 26 ...## $ DFS_STATUS : chr "DiseaseFree" "DiseaseFree" ...attach(dat)## The following objects are masked from dat (pos = 4):## ## OS_MONTHS, OS_STATUS## The following object is masked from package:base:## ## Tmy.surv <- Surv( dat$OS_MONTHS,dat$OS_STATUS=='DECEASED')## 不错针对多个变量别离批量进行cox分析,八成径直把多个变量一道放在cox函数内部。m=coxph(my.surv ~ AGE + SEX + N + T + M + STAGE, data = dat)## Warning in fitter(X, Y, strats, offset, init, control, weights = weights, :## Loglik converged before variable 5,9,18,22,25,32,35,36 ; beta may be## infinite.ggsurvplot(survfit(m, data = dat), color = "#2E9FDF", ggtheme = theme_minimal())## Warning: Now, to change color palette, use the argument palette= '#2E9FDF'## instead of color = '#2E9FDF'图片
imgbeta <- coef(m)se <- sqrt(diag(vcov(m)))HR <- exp(beta)HRse <- HR * sedetach(dat)某基因突变与否也不错用来分组library(survival)length(intersect(rownames(choose_clinicaldata),rownames(mut_df)))## [1] 979dat=cbind(choose_clinicaldata[rownames(mut_df),c('OS_STATUS','OS_MONTHS')],mut_df)dat=dat[dat$OS_MONTHS > 0,]dat=dat[!is.na(dat$OS_STATUS),]dat$OS_STATUS=as.character(dat$OS_STATUS) attach(dat)## The following objects are masked from dat (pos = 4):## ## BRCA1, BRCA2, OS_MONTHS, OS_STATUStable(BRCA1,BRCA2)## BRCA2## BRCA1 MUT## 939 14## MUT 12 0library(survival)my.surv <- Surv(OS_MONTHS,OS_STATUS=='DECEASED')kmfit1 <- survfit(my.surv~BRCA1,data = dat) kmfit2 <- survfit(my.surv~BRCA2,data = dat) library("survminer") ggsurvplot(kmfit1,conf.int =F, pval = T,risk.table =T, ncensor.plot = TRUE)图片
imgggsurvplot(kmfit2,conf.int =F, pval = T,risk.table =T, ncensor.plot = TRUE)图片
img基因的拷贝数也不错进行分组library(survival)length(intersect(rownames(choose_clinicaldata),rownames(cna)))## [1] 979dat=cbind(choose_clinicaldata[rownames(cna),c('OS_STATUS','OS_MONTHS')],cna)dat=dat[dat$OS_MONTHS > 0,]dat=dat[!is.na(dat$OS_STATUS),]dat$OS_STATUS=as.character(dat$OS_STATUS) attach(dat)## The following objects are masked from dat (pos = 3):## ## BRCA1, BRCA2, OS_MONTHS, OS_STATUS## The following objects are masked from dat (pos = 5):## ## BRCA1, BRCA2, OS_MONTHS, OS_STATUStable(BRCA1,BRCA2)## BRCA2## BRCA1 AMP GAIN HETLOSS HOMDEL## 288 2 21 118 8## AMP 5 0 0 7 2## GAIN 59 4 30 84 3## HETLOSS 110 6 43 163 4## HOMDEL 2 0 1 4 1library(survival)my.surv <- Surv(OS_MONTHS,OS_STATUS=='DECEASED')kmfit1 <- survfit(my.surv~BRCA1,data = dat) kmfit2 <- survfit(my.surv~BRCA2,data = dat) library("survminer") ggsurvplot(kmfit1,conf.int =F, pval = T,risk.table =T, ncensor.plot = TRUE)图片
imgggsurvplot(kmfit2,conf.int =F, pval = T,risk.table =T, ncensor.plot = TRUE)图片
img批量进行分组而况做活命分析这个代码相配经典,是以我不错放在了 生信手段树»生信手段树›互动功课›剧本才略执行›生信人必练的200个数据处理任务 上头,但愿所有学习生物信息学的相知都独揽:http://www.biotrainee.com/thread-929-1-1.html
(阅读原文不错直达)
## 最初模拟 50个病人的 200个基因的抒发数据。## 50 patients and 200 genes dat=matrix(rnorm(10000,mean=8,sd=4),nrow = 200)rownames(dat)=paste0('gene_',1:nrow(dat))colnames(dat)=paste0('sample_',1:ncol(dat))os_years=abs(floor(rnorm(ncol(dat),mean = 50,sd=20)))os_status=sample(rep(c('LIVING','DECEASED'),25))library(survival)my.surv <- Surv( os_years,os_status=='DECEASED')## The status indicator, normally 0=alive, 1=dead. Other choices are TRUE/FALSE (TRUE = death) or 1/2 (2=death). ## And most of the time we just care about the time od DECEASED . fit.KM=survfit(my.surv~1)fit.KM## Call: survfit(formula = my.surv ~ 1)## ## n events median 0.95LCL 0.95UCL ## 50 25 64 56 NAplot(fit.KM)图片
imglog_rank_p <- apply(dat, 1, function(values1){ group=ifelse(values1>median(values1),'high','low') kmfit2 <- survfit(my.surv~group) #plot(kmfit2) data.survdiff=survdiff(my.surv~group) p.val = 1 - pchisq(data.survdiff$chisq, length(data.survdiff$n) - 1)})names(log_rank_p[log_rank_p<0.05])## [1] "gene_63" "gene_100" "gene_102" "gene_125" "gene_146" "gene_149"## [7] "gene_150" "gene_193"gender= ifelse(rnorm(ncol(dat))>1,'male','female')age=abs(floor(rnorm(ncol(dat),mean = 50,sd=20)))## gender and age are similar with group(by gene expression)cox_results <- apply(dat , 1, function(values1){ group=ifelse(values1>median(values1),'high','low') survival_dat <- data.frame(group=group,gender=gender,age=age,stringsAsFactors = F) m=coxph(my.surv ~ age + gender + group, data = survival_dat) beta <- coef(m) se <- sqrt(diag(vcov(m))) HR <- exp(beta) HRse <- HR * se #summary(m) tmp <- round(cbind(coef = beta, se = se, z = beta/se, p = 1 - pchisq((beta/se)^2, 1), HR = HR, HRse = HRse, HRz = (HR - 1) / HRse, HRp = 1 - pchisq(((HR - 1)/HRse)^2, 1), HRCILL = exp(beta - qnorm(.975, 0, 1) * se), HRCIUL = exp(beta + qnorm(.975, 0, 1) * se)), 3) return(tmp['grouplow',])})DT::datatable(cox_results , extensions = 'FixedColumns', options = list( #dom = 't', scrollX = TRUE, fixedColumns = TRUE ))图片
## 有统计学权贵性的如下:cox_results[,cox_results[4,]<0.05]## gene_26 gene_63 gene_94 gene_100 gene_102 gene_103 gene_146## coef 0.853 1.109 -0.903 0.935 -0.995 0.890 -1.372## se 0.421 0.437 0.431 0.426 0.464 0.429 0.478## z 2.025 2.534 -2.096 2.196 -2.146 2.073 -2.869## p 0.043 0.011 0.036 0.028 0.032 0.038 0.004## HR 2.346 3.030 0.405 2.548 0.370 2.435 0.254## HRse 0.988 1.326 0.175 1.086 0.171 1.046 0.121## HRz 1.363 1.531 -3.406 1.426 -3.676 1.373 -6.154## HRp 0.173 0.126 0.001 0.154 0.000 0.170 0.000## HRCILL 1.028 1.285 0.174 1.106 0.149 1.050 0.099## HRCIUL 5.354 7.142 0.943 5.874 0.918 5.649 0.647## gene_149 gene_150 gene_155 gene_193## coef 1.011 1.004 -0.924 -1.072## se 0.442 0.479 0.440 0.440## z 2.290 2.096 -2.101 -2.437## p 0.022 0.036 0.036 0.015## HR 2.749 2.728 0.397 0.342## HRse 1.214 1.306 0.175 0.151## HRz 1.441 1.323 -3.456 -4.368## HRp 0.150 0.186 0.001 0.000## HRCILL 1.157 1.068 0.168 0.145## HRCIUL 6.531 6.973 0.940 0.811 本站是提供个人学问处理的网罗存储空间,所有本体均由用户发布,不代表本站办法。请提神甄别本体中的关联神气、率领购买等信息,防范愚弄。如发现存害或侵权本体,请点击一键举报。