一篇数据挖掘文章的复现-2

书接上回:https://www.jianshu.com/p/c7597357a915

ER相关的基因

endoplasmic reticulum stress

gs = rio::import("GeneCards-SearchResults.csv")
k = gs$`Relevance score`>=7;table(k)
## k
## FALSE  TRUE 
##  6267   802
gs = gs[k,]

两种算法计算每个基因的p值,并取交集

4个数据需要循环,先拿其中一个数据跑通,再把代码写入循环

library(tinyarray)
load("../1_data_pre/exp_surv1.Rdata")
exp1 = exp1[rownames(exp1) %in% gs$`Gene Symbol`,]
c1 = surv_cox(exp1,surv1,continuous = T)
head(c1)
##             coef         se         z            p       HR      HRse      HRz
## UBE2J2 1.4404365 0.13446765 10.712141 0.000000e+00 4.222539 0.5677949 5.675533
## RER1   1.8780151 0.11813991 15.896534 0.000000e+00 6.540509 0.7726952 7.170369
## ICMT   1.0621919 0.11658641  9.110770 0.000000e+00 2.892705 0.3372500 5.612170
## PARK7  0.6545554 0.13911446  4.705157 2.536705e-06 1.924287 0.2676961 3.452746
## H6PD   0.8217466 0.10642461  7.721396 1.154632e-14 2.274469 0.2420595 5.265107
## FBXO6  0.9195681 0.08969749 10.251882 0.000000e+00 2.508207 0.2249799 6.703741
##                 HRp   HRCILL   HRCIUL
## UBE2J2 1.382573e-08 3.244252 5.495823
## RER1   7.479573e-13 5.188606 8.244654
## ICMT   1.998047e-08 2.301789 3.635320
## PARK7  5.549107e-04 1.465060 2.527460
## H6PD   1.401079e-07 1.846253 2.802004
## FBXO6  2.031497e-11 2.103840 2.990295
nrow(c1)
## [1] 653
k1 = surv_KM(exp1,surv1)
head(k1) #p值实在太小,逼近0
##  UBE2J2    RER1   FBXO6   DDOST   CDC42 SELENON 
##       0       0       0       0       0       0
length(k1)
## [1] 642
g1 = intersect(rownames(c1),names(k1))
head(g1)
## [1] "UBE2J2" "RER1"   "ICMT"   "PARK7"  "H6PD"   "FBXO6"
length(g1)
## [1] 615

循环

load("../1_data_pre/exp_surv2.Rdata")
load("../1_data_pre/exp_surv3.Rdata")
load("../1_data_pre/exp_surv4.Rdata")
exp = list(exp1,exp2,exp3,exp4)
surv = list(surv1,surv2,surv3,surv4)
g = list()
for(i in 1:4){
  exp[[i]] = exp[[i]][rownames(exp[[i]]) %in% gs$`Gene Symbol`,]
  c1 = surv_cox(exp[[i]],surv[[i]],continuous = T)
  k = surv_KM(exp[[i]],surv[[i]])
  g[[i]] = intersect(rownames(c1),names(k))
}
names(g) = c("TCGA","CGGA_array","CGGA","GSE16011")
sapply(g, length)
##       TCGA CGGA_array       CGGA   GSE16011 
##        615        413        551        335
v_plot = draw_venn(g,"")
ggplot2::ggsave(v_plot,filename = "venn.png")

4个数据,两种算法p<0.05的基因取交集,得到195个基因,用于lasso回归

g = intersect_all(g)
length(g)
## [1] 195

lasso回归

使用TCGA的数据构建模型

library(survival)
x = t(exp1[g,])
y = data.matrix(Surv(surv1$time,surv1$event)) 
library(glmnet)
set.seed(10210)
cvfit = cv.glmnet(x, y, family="cox") 
fit=glmnet(x, y, family = "cox") 

coef = coef(fit, s = cvfit$lambda.min) 
index = which(coef != 0) 
actCoef = coef[index] 
lassoGene = row.names(coef)[index] 
lassoGene
##  [1] "GPX7"     "MR1"      "SHISA5"   "CP"       "PPM1L"    "DNAJB11" 
##  [7] "SNCA"     "ANXA5"    "HFE"      "EPM2A"    "FKBP14"   "BET1"    
## [13] "SERPINE1" "CASP2"    "BAG1"     "SIRT1"    "DNAJB12"  "ERLIN1"  
## [19] "CYP2E1"   "CASP4"    "SLN"      "ERP27"    "DDIT3"    "ATP2A2"  
## [25] "ERP29"    "MYH7"     "CDKN3"    "MAPK3"    "MMP2"     "NOL3"    
## [31] "BRCA1"    "PRNP"     "MX1"      "RNF185"   "SREBF2"   "GLA"
par(mfrow = c(1,2))
plot(cvfit) 
plot(fit,xvar="lambda",label = F)

逐步回归法

library(My.stepwise)
vl <- lassoGene
dat = cbind(surv1,t(exp1[lassoGene,]))
# My.stepwise.coxph(Time = "time",
#                   Status = "event",
#                   variable.list = vl,
#                   data = dat)

model = coxph(formula = Surv(time, event) ~ HFE + SHISA5 + BRCA1 + EPM2A + 
    ERLIN1 + GPX7 + SLN + DNAJB11 + MMP2 + NOL3 + CP + ATP2A2 + 
    GLA + MAPK3 + SREBF2 + CASP2 + SNCA + DDIT3 + BAG1 + ANXA5, 
    data = dat)

summary(model)$concordance
##           C       se(C) 
## 0.865988496 0.009754695
genes = names(model$coefficients);length(genes)
## [1] 20
library(survminer)
ggforest(model,data = dat)
ggsave("forest.png",width = 10,height = 8)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容