R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

上次我们进行了基因去重复,此时我们的数据里面就剩下自噬相关基因的表达数据了。这一节,我们将进行临床数据匹配,这样我们才能进行后续的批量单因素cox回归:

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

这个临床模型预测会针对一个案例进行讲解,目录如下:​​​​​​​

1.下载数据

  1. 匹配基因

  2. 基因去重复

4.匹配临床数据

5.批量cox回归分析

6.差异表达基因筛选

7.取交集,选出预后相关的差异表达基因

8.森林图绘制

9.lasso回归进一步排除具有共线性的基因

10.验证集验证,数据合并验证

11.多因素cox回归建模

12.列线图

13.矫正曲线

14.ROC曲线分析

下面我们先看看文件:

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

这是上一期提取出来的自噬相关基因的表达数据,我们点击进去看一看:

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

但是这里有一个问题,就是我们的样本,并不是只有肿瘤数据,还有正常数据。

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

例如上面的01A,就是肿瘤数据,11A就是正常数据。

因此我们需要先把肿瘤数据提取出来。

提取的方法有很多,1:直接Excel筛选;2:正则表达式

先看第一种方法:Excel点击筛选——在样本这一列点击倒三角

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

然后输入01后点确认,就可以,但是这样的经常出错,因此我建议大家用正则表达式,不会的话,就套用下面代码就行:

setwd("D:\\自噬临床模型预测\\自噬相关基因临床模型预测\\2匹配自噬基因及临床数据")
dir()
data  data[1:5,1:5]
                 X   AMBRA1    APOL1     ARNT     ARSA
1 TCGA.BP.4342.01A 4.506872 5.383224 5.570176 4.523195
2 TCGA.A3.3387.01A 4.679614 6.493254 5.107071 4.220274
3 TCGA.BP.4167.01A 4.599814 9.546216 5.194878 4.245679
4 TCGA.B8.4620.01A 4.288099 5.652480 5.290483 3.966170
5 TCGA.BP.4769.01A 4.665946 6.959901 5.696982 5.056403

然后使用正则表达式,将肿瘤组织提取出来:

grep  grep
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30
 [31]  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60
 [61]  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
 [91]  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
[121] 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
[151] 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
[181] 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
[211] 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
[241] 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
[271] 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300
[301] 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330
[331] 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
[361] 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390
[391] 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
[421] 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450
[451] 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480
[481] 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510
[511] 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535
> length(grep)
[1] 535

可以看到总共有535个肿瘤样本,然后我们提取肿瘤data。

data

这时候的数据就只剩下肿瘤数据了,因为我们要做单因素cox 回归,所以正常数据是必须要删掉的。

但是还有一个问题。

我们首先普及一下TCGA的样本命名:

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

TCGA样本命名前12位才代表患者的编号。

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

有些患者的编号是重复的,这属于重复测序。其中01A是样本切下来很快送的测序,测序结果是最好的,01B是切下来保留了一段时间,再送的测序,测序结果的质量我认为比较差。

因为是同一个人,所以我们建议将01B的这种给删掉。

怎么删掉呢?

首先我们对样本进行排序:

data

注意这里的decreseasing选择的F,也就是升序排序,而不是降序排序,这样01B的样本就会放在01A的后面。

然后我们检查重复值:

which  which
[1] 366 459 480 490 521

我们首先使用substr提取前十二位,然后使用duplicated检查重复的样本所在的行数。因为是从前面向后面检查,因此后面的重复会被返回出来。所以这也是我们进行排序的原因。

然后我们将重复的删掉就行了。

data  dim(data)
## [1] 530 216

可以看到最终的肿瘤样本只有530个。

为什么要删除重复样本?

因为一名患者对应一个临床数据,只有一种临床结局,但是测序数据可以重复测,那我们要做单因素cox回归,选择那个测序数据来分析呢,当然选择质量最好的,那就是TCGA命名中最后一位是A的数据,是测序质量最好的。

下面我们就可以将表达数据和临床数据合并在一起了。

注意:这里我们只将患者的总体生存率数据(即OS,和OS.time)与自噬基因的表达数据合并。

如果大家想做别的数据,那么可以自行合并。下面我们先读取临床数据。

dir()
clinical  clinical[1:5,1:6]
 #        sampleID X_EVENT   X_INTEGRATION OS.time OS OS.unit
#1 TCGA-3Z-A93Z-01       0 TCGA-3Z-A93Z-01     385  0    days
#2 TCGA-6D-AA2E-01       0 TCGA-6D-AA2E-01     362  0    days
#3 TCGA-A3-3306-01       0 TCGA-A3-3306-01    1120  0    days
#4 TCGA-A3-3306-11       0 TCGA-A3-3306-11    1120  0    days
#5 TCGA-A3-3307-01       0 TCGA-A3-3307-01    1436  0    days

再看看表达数据:

data[1:5,1:5]

> data[1:5,1:5]
                X   AMBRA1    APOL1     ARNT     ARSA
#1 TCGA.BP.4342.01A 4.506872 5.383224 5.570176 4.523195
#2 TCGA.A3.3387.01A 4.679614 6.493254 5.107071 4.220274
#3 TCGA.BP.4167.01A 4.599814 9.546216 5.194878 4.245679
#4 TCGA.B8.4620.01A 4.288099 5.652480 5.290483 3.966170
#5 TCGA.BP.4769.01A 4.665946 6.959901 5.696982 5.056403

临床数据的样本命名是用”-“连接的,表达数据是”.”连接的。此外临床数据是前15位数,表达数据是16位,但是实际上有用的只有前十二位,只有前十二位代表患者的编号。

那么我们需要将临床数据的横杠换成点。然后将临床数据和表达数据的样本名变成前12位,然后再进行匹配:

首先临床数据的”-“替换成”.”

clinical$sampleID  clinical[1:5,1:5]
        sampleID X_EVENT   X_INTEGRATION OS.time OS
#1 TCGA.3Z.A93Z.01       0 TCGA-3Z-A93Z-01     385  0
#2 TCGA.6D.AA2E.01       0 TCGA-6D-AA2E-01     362  0
#3 TCGA.A3.3306.01       0 TCGA-A3-3306-01    1120  0
#4 TCGA.A3.3306.11       0 TCGA-A3-3306-11    1120  0
#5 TCGA.A3.3307.01       0 TCGA-A3-3307-01    1436  0

然后都提取前12位数:

data$X  data[1:5,1:5]
            X   AMBRA1    APOL1     ARNT     ARSA
#1 TCGA.BP.4342 4.506872 5.383224 5.570176 4.523195
#2 TCGA.A3.3387 4.679614 6.493254 5.107071 4.220274
#3 TCGA.BP.4167 4.599814 9.546216 5.194878 4.245679
#4 TCGA.B8.4620 4.288099 5.652480 5.290483 3.966170
#5 TCGA.BP.4769 4.665946 6.959901 5.696982 5.056403
#> clinical[1:5,1:5]
     sampleID X_EVENT   X_INTEGRATION OS.time OS
#1 TCGA.3Z.A93Z       0 TCGA-3Z-A93Z-01     385  0
#2 TCGA.6D.AA2E       0 TCGA-6D-AA2E-01     362  0
#3 TCGA.A3.3306       0 TCGA-A3-3306-01    1120  0
#4 TCGA.A3.3306       0 TCGA-A3-3306-11    1120  0
#5 TCGA.A3.3307       0 TCGA-A3-3307-01    1436  0

可以看到样本名字都只有前十二位了,下面进行匹配,用表达数据的样本去和临床数据匹配,因为表达数据的样本是不重复的样本,临床数据里面是有重复的:

match  length(match)
## [1] 530

匹配完了以后对样本进行重排:

clinical  clinical[1:5,1:5]
       sampleID X_EVENT   X_INTEGRATION OS.time OS
#455 TCGA.BP.4342       1 TCGA-BP-4342-01    2256  1
#86  TCGA.A3.3387       0 TCGA-A3-3387-01     617  0
#415 TCGA.BP.4167       0 TCGA-BP-4167-01    2718  0
#367 TCGA.B8.4620       0 TCGA-B8-4620-01     777  0
#499 TCGA.BP.4769       0 TCGA-BP-4769-01    1876  0

然后我们只要临床数据的三列:

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

执行下面代码:

clinical  head(clinical)
       sampleID OS.time OS
#455 TCGA.BP.4342    2256  1
#86  TCGA.A3.3387     617  0
#415 TCGA.BP.4167    2718  0
#367 TCGA.B8.4620     777  0
#499 TCGA.BP.4769    1876  0
#767 TCGA.CJ.4907    1499  0

然后呢我们将表达数据和临床数据的样本名这一列变成行名:

rownames(data)  data[1:5,1:5]
              AMBRA1    APOL1     ARNT     ARSA     ARSB
#TCGA.BP.4342 4.506872 5.383224 5.570176 4.523195 4.110176
#TCGA.A3.3387 4.679614 6.493254 5.107071 4.220274 5.627957
#TCGA.BP.4167 4.599814 9.546216 5.194878 4.245679 5.654773
#TCGA.B8.4620 4.288099 5.652480 5.290483 3.966170 4.632897
#TCGA.BP.4769 4.665946 6.959901 5.696982 5.056403 3.868812
#> head(clinical)
            OS.time OS
#TCGA.BP.4342    2256  1
#TCGA.A3.3387     617  0
#TCGA.BP.4167    2718  0
#TCGA.B8.4620     777  0
#TCGA.BP.4769    1876  0
#TCGA.CJ.4907    1499  0

然后我们检查一下两个数据的行名是否一样:


identical(rownames(data),rownames(clinical))

> identical(rownames(data),rownames(clinical))
[1] TRUE

结果返回是一样的,因此我们就可以将它们合并在一起了:

data  data[1:5,1:6]
            OS.time OS   AMBRA1    APOL1     ARNT     ARSA
#TCGA.BP.4342    2256  1 4.506872 5.383224 5.570176 4.523195
#TCGA.A3.3387     617  0 4.679614 6.493254 5.107071 4.220274
#TCGA.BP.4167    2718  0 4.599814 9.546216 5.194878 4.245679
#TCGA.B8.4620     777  0 4.288099 5.652480 5.290483 3.966170
#TCGA.BP.4769    1876  0 4.665946 6.959901 5.696982 5.056403

此时的数据,带有临床生存数据和自噬基因表达数据,这样就可以进行批量cox回归分析了。

下面我们将它们读出来:

write.csv(data,"Cox_data.csv")

这就是一个cox回归的输入文件。

下期我们就讲一下如何批量做单因素cox回归分析。

其实这里讲的内容并不难,只不过是希望大家知道里面的原理,免得犯错误,如果大家没有选择A的样本做研究,而选择了B的,有的时候结果会出现差异,那么容易受到质疑。

R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

Original: https://blog.csdn.net/weixin_46500027/article/details/124334242
Author: 楷然教你学生信
Title: R语言与临床模型预测——LASSO回归,单因素多因素cox,差异表达分析,Venn图,森林图,列线图,矫正曲线,ROC全套代码及解析——第四部分 匹配临床数据 本专栏可免费答疑

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/696909/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球