# 生存分析的Cox比例风险回归模型

如果只研究患者的中位生存时间或限制平均生存时间，或比较某一变量的限制平均生存时间，可以采用生存分析。如果自变量有多个，需要从中寻找主要的影响因素，则可以采用Cox回归模型进行分析。若某一变量的βj=0，则称其对风险函数无贡献。对风险函数无贡献的变量可以从模型中剔除，然后重现计算新的Cox模型，称为用Cox回归分析的逐步回归方法对变量进行筛选。（《卫生统计学》赵耐青，下同）

多个自变量之间有可能存在交互作用，比如催化剂的单独效应为零，与其他因素配合却能较大地提高效应。在回归分析中，若，X1、X2之间存在交互作用，最常用的方法是在回归模型中增加这两个变量的乘积项X1X2作为新的自变量，称为交互作用项。交互作用项的引入主要根据研究的背景知识。

Logisitic回归和Cox回归均基于大样本的假定，因此所需要的样本含量多于多重线性回归，需要达到模型自变量个数的15~20倍。如果样本含量较小，则难以得到稳定可靠的结论。

## Cox回归的假设

- HR不随时间变化，满足比例风险假定
- 无“过早死亡”的个体和“活得太久”的个体
- 连续自变量具有线性形式，自变量间无共线性

参考1：JeremyL

## 准备资料

    1
    2
    3
    4
    5
    6

    group <- t(readRDS('prad_tpm_Cu_death.rds'))
    clinical <- read.csv('TCGA-PRAD_clinical.csv', row.names = 'bcr_patient_barcode')
    mergeID <- intersect(rownames(clinical), rownames(group))
    df <- cbind(group[mergeID,], clinical[mergeID, c('dcf_time', 'dcf_status', 'os_time', 'os_status')])
    df[,'dcf_status'] = ifelse(df[,'dcf_status']==1,0,1)
    df

## Cox回归

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    library("survival")
    library("survminer")
    coxmf <- paste0("Surv(dcf_time/365, dcf_status==0)~", paste(colnames(df)[1:10], collapse = '+'))
    coxmf
    res.cox <- coxph(formula(coxmf), data =  df)
    res.cox
    tmp_res <- summary(res.cox)
    res <- as.data.frame(tmp_res$conf.int)
    res <- res[,c(1,3,4)]
    colnames(res) <- c('mean', 'lower', 'upper')
    res[['Pvalue']] <- tmp_res$coefficients[,'Pr(>z)']
    res[['VarName']] <- rownames(res)
    res
    saveRDS(res, 'Cox_res.rds')

## Cox模型进行预测

想要评估GLS对估计生存概率的影响。在本例中，构造了一个有两行的新数据，每一行代表一个GLS值;其他自变量设置为它们的平均值(如果是连续变量)或最低水平(如果是离散变量)。对于一个哑变量，平均值是数据集中编码为1的比例。（JeremyL）

    1
    2
    3
    4

    gls_df <- as.data.frame(rbind(colMeans(df[1:10]),colMeans(df[1:10])))
    gls_df[['GLS']] <- with(df,c(min(GLS),max(GLS)))
    gls_df
    ggsurvplot(survfit(res.cox, newdata = gls_df), conf.int = TRUE,,data = df)

## 检测是否满足假设

- 比例风险假设

- test.ph <- cox.zph(res.cox)

- ggcoxzph(test.ph)

- p无统计学意义表示满足假设

- 无离群值

- ggcoxdiagnostics(res.cox, type = “dfbeta”, linear.predictions = F)

- ggcoxdiagnostics(res.cox, type = “deviance”, linear.predictions = F)

- 线性假设

- ggcoxfunctional(Surv(dcf_time/365, dcf_status==0) ~ GLS + log(GLS) + sqrt(GLS), data = df)

- ggcoxfunctional(formula(coxmf), data = df)

- 拟合线应该是线性的表示满足Cox比例风险模型的假设

统计学
生存分析的Cox比例风险回归模型
https://occdn.limour.top/2108.html
Author
Limour
Posted on
July 17, 2022
Licensed under
诺莫图（Nomogram）展示回归分析的结果 Previous
Lsky图床使用阿里云OSS Next

#### Search

Keyword