🎯要点
- 行为数据分析:🎯线性统计研究生学业表现:🖊绘制测试分数配对图 | 🖊构建简单线性回归模型,拟合数据 | 🖊构建多线性回归,三维可视化数据拟合模型 | 🖊测试多重共线性 | 🖊二次模型改善拟合度。🎯二项式逻辑回归分析销售人员升职与否:🖊绘制业绩配对图 | 🖊业绩对数赔率建模。🎯名义类别多项逻辑回归选择商业保险:🖊绘制保险类别配对图 | 🖊分层二项式建模产品选择性。🎯有序类别结比例赔率逻辑回归分析运动员纪律和表现:🖊 依据表现结果生成比例优势模型 | 🖊计算运动员表现观察值与相关类别可能性 | 🖊检验比例优势假设.。🎯单一事件生存模型分析职工情绪推理在职与否:🖊考克斯比例风险回归模型 | 🖊舍恩菲尔德检验比例风险假设。
- 市场数据分析:🎯图形和表格数据:🖊简单回归模型分析销售力度数据,多线性回归模型分析销售薪资经验及技术水平 | 🖊决策树分类模型分析人员流失,K最近邻模型分析贷款审批和朴素贝叶斯模型分析信用评级 | 🖊神经网络和逻辑回归模型预测人员流失 | 🖊市场篮分析模型物品采购关系模式。🎯算法实例:🖊 先验算法、频繁模式增长算法、怡亨算法、分类和回归树算法。
- 商业利润分析:🎯商品选择:🖊 不同口味食物预测选择因果行为分析 | 🖊兴趣效应建模分析押金类型影响酒店预订率,从行为科学和商业角度寻找其他影响因素 | 🖊商业销售使用鲁宾分类法建模处理客户缺失数据 | 🖊统计模型模拟异常影响因子分析食品制作和上市不确定因素 | 🖊商业利润行为逻辑测试方式一:简单样本量分配和功效分析 | 🖊商业利润行为逻辑测试方式二:分层随机化增强测试功效分析 | 🖊商业利润行为逻辑测试方式三:层次线性模型 | 🖊商业营销行为适度分析:分割数据为观测数据和测试数据,交互非线性关系。
🍇R 考克斯比例风险模型
它适用于定量预测变量和分类变量。此外,考克斯回归模型扩展了生存分析方法,可以同时评估多种风险因素对生存时间的影响。
在临床研究中,在许多情况下,几个已知量(称为协变量)可能会影响患者的预后。例如,假设比较两组患者:具有特定基因型的患者和不具有特定基因型的患者。 如果其中一组还包含老年个体,则存活率的任何差异都可能归因于基因型或年龄或两者兼而有之。 因此,在调查与任何一种因素相关的生存时,通常需要根据其他因素的影响进行调整。
统计模型是一种常用的工具,可以同时分析多个因素的生存情况。此外,统计模型提供了每个因素的效应大小。
考克斯比例风险模型的目的是同时评估多个因素对生存的影响。 换句话说,它使我们能够检查特定因素如何影响特定时间点特定事件(例如感染、死亡)的发生率。 该比率通常称为危险率。 在生存分析文献中,预测变量(或因素)通常被称为协变量。
考克斯模型用h(t)表示的风险函数来表示。简而言之,危险函数可以解释为在时间 t 时死亡的风险。可以估计如下:
h ( t ) = h 0 ( t ) × exp ( b 1 x 1 + b 2 x 2 + ... + b p x p ) h(t)=h_0(t) \times \exp \left(b_1 x_1+b_2 x_2+\ldots+b_p x_p\right) h(t)=h0(t)×exp(b1x1+b2x2+...+bpxp)
其中,
- t t t 表示时间
- h ( t ) h(t) h(t) 是由一组 p p p 协变量 ( x 1 , x 2 , ... , x p ) \left(x_1, x_2, \ldots, x_p\right) (x1,x2,...,xp) 确定的风险函数
- 系数( b 1 , b 2 , ... , b p b_1, b_2, \ldots, b_p b1,b2,...,bp )衡量协变量的影响(即效应大小)
- h 0 h_0 h0 项称为基线危险。如果所有 x i x_i xi 都等于 0(数量 exp(0) 等于 1),则它对应于危险值。 h ( t ) h ( t ) h(t) 中的" t t t"提醒我们危险可能会随时间而变化。
考克斯模型可以写为变量 x i x_i xi 风险对数的多元线性回归,其中基线风险是随时间变化的"截距"项。
数量 exp ( b i ) \exp \left(b_i\right) exp(bi) 称为风险比 (HR)。 b i b_i bi 的值大于零,或者相当于风险比大于 1,表示随着 i th i^{\text {th }} ith 协变量值的增加,事件风险增加,从而生存时间延长减少。换句话说,风险比高于 1 表示协变量与事件概率正相关,因此与生存长度负相关。
- H R = 1 : H R=1: HR=1: 无影响
- H R < 1 HR <1 HR<1:减少危险
- H R > 1 H R>1 HR>1:危险增加
考虑两个患者 k k k 和 k ′ k^{\prime} k′,其 x x x 值不同。相应的危险函数可以简单写成如下
-
患者 k k k 的危险函数:
h k ( t ) = h 0 ( t ) e ∑ i = 1 n β x h_k(t)=h_0(t) e^{\sum_{i=1}^n \beta x} hk(t)=h0(t)e∑i=1nβx -
患者 k ′ k^{\prime} k′ 的危险函数:
h k ′ ( t ) = h 0 ( t ) e ∑ i = 1 n β x ′ h_{k^{\prime}}(t)=h_0(t) e^{\sum_{i=1}^n \beta x^{\prime}} hk′(t)=h0(t)e∑i=1nβx′
- 这两名患者的风险比 [ h k ( t ) h k ′ ( t ) = h 0 ( t ) e ∑ i − 1 n β z h 0 ( t ) e ∑ − 1 n β z ′ = ∑ n l − 1 β z ∑ ∑ i − 1 n β z ′ ] \left[\frac{h_k(t)}{h_{k^{\prime}}(t)}=\frac{h_0(t) e^{\sum_{i-1 }^n \beta z}}{h_0(t) e^{\sum_{-1}^n \beta z^{\prime}}}=\frac{\sum^{\frac{n}{l- 1}} \beta z}{\sum_{\sum^{i-1}}^n \beta z^{\prime}}\right] [hk′(t)hk(t)=h0(t)e∑−1nβz′h0(t)e∑i−1nβz=∑∑i−1nβz′∑l−1nβz] 与时间 t 无关。
换句话说,如果一个人在某个初始时间点的死亡风险是另一个人的两倍,那么在以后的所有时间点,死亡风险仍然是另一个人的两倍。
代码实现:
R
library("survival")
library("survminer")
函数 coxph()[生存包中]可用于计算 R 中的 Cox 比例风险回归模型。 简化格式如下:
R
coxph(formula, data, method)
我们将使用生存 R 包中的肺癌数据。
R
data("lung")
head(lung)
计算模型
我们首先计算所有这些变量的单变量 Cox 分析;然后我们将使用两个变量进行多元 Cox 分析,以描述这些因素如何共同影响生存。
R
res.cox <- coxph(Surv(time, status) ~ sex, data = lung)
res.cox
R
summary(res.cox)
要将单变量 coxph 函数一次应用于多个协变量,请输入以下内容:
R
covariates <- c("age", "sex", "ph.karno", "ph.ecog", "wt.loss")
univ_formulas <- sapply(covariates,
function(x) as.formula(paste('Surv(time, status)~', x)))
univ_models <- lapply( univ_formulas, function(x){coxph(x, data = lung)})
# Extract data
univ_results <- lapply(univ_models,
function(x){
x <- summary(x)
p.value<-signif(x$wald["pvalue"], digits=2)
wald.test<-signif(x$wald["test"], digits=2)
beta<-signif(x$coef[1], digits=2);#coeficient beta
HR <-signif(x$coef[2], digits=2);#exp(beta)
HR.confint.lower <- signif(x$conf.int[,"lower .95"], 2)
HR.confint.upper <- signif(x$conf.int[,"upper .95"],2)
HR <- paste0(HR, " (",
HR.confint.lower, "-", HR.confint.upper, ")")
res<-c(beta, HR, wald.test, p.value)
names(res)<-c("beta", "HR (95% CI for HR)", "wald.test",
"p.value")
return(res)
#return(exp(cbind(coef(x),confint(x))))
})
res <- t(as.data.frame(univ_results, check.names = FALSE))
as.data.frame(res)
多元Cox回归分析
R
res.cox <- coxph(Surv(time, status) ~ age + sex + ph.ecog, data = lung)
summary(res.cox)
可视化
R
# Plot the baseline survival function
ggsurvplot(survfit(res.cox), color = "#2E9FDF",
ggtheme = theme_minimal())
R
# Create the new data
sex_df <- with(lung,
data.frame(sex = c(1, 2),
age = rep(mean(age, na.rm = TRUE), 2),
ph.ecog = c(1, 1)
)
)
sex_df