R和Python市场篮分析算法及行为分析模型

发布于:2024-05-05 ⋅ 阅读:(27) ⋅ 点赞:(0)

🎯要点

  1. 行为数据分析:🎯线性统计研究生学业表现:🖊绘制测试分数配对图 | 🖊构建简单线性回归模型,拟合数据 | 🖊构建多线性回归,三维可视化数据拟合模型 | 🖊测试多重共线性 | 🖊二次模型改善拟合度。🎯二项式逻辑回归分析销售人员升职与否:🖊绘制业绩配对图 | 🖊业绩对数赔率建模。🎯名义类别多项逻辑回归选择商业保险:🖊绘制保险类别配对图 | 🖊分层二项式建模产品选择性。🎯有序类别结比例赔率逻辑回归分析运动员纪律和表现:🖊 依据表现结果生成比例优势模型 | 🖊计算运动员表现观察值与相关类别可能性 | 🖊检验比例优势假设.。🎯单一事件生存模型分析职工情绪推理在职与否:🖊考克斯比例风险回归模型 | 🖊舍恩菲尔德检验比例风险假设。
  2. 市场​数据​分析​:🎯图形和表格数据:🖊简单回归模型分析销售力度数据,多线性回归模型分析销售薪资经验及技术水平 | 🖊决策树分类模型分析人员流失,K最近邻模型分析贷款审批和朴素贝叶斯模型分析信用评级 | 🖊神经网络和逻辑回归模型预测人员流失 | 🖊市场篮分析模型物品采购关系模式。🎯算法实例:🖊 先验算法、频繁模式增长算法、怡亨算法、分类和回归树算法。
  3. 商业利润分析:🎯商品选择:🖊 不同口味食物预测选择因果行为分析 | 🖊兴趣效应建模分析押金类型影响酒店预订率,从行为科学和商业角度寻找其他影响因素 | 🖊商业销售使用鲁宾分类法建模处理客户缺失数据 | 🖊统计模型模拟异常影响因子分析食品制作和上市不确定因素 | 🖊商业利润行为逻辑测试方式一:简单样本量分配和功效分析 | 🖊商业利润行为逻辑测试方式二:分层随机化增强测试功效分析 | 🖊商业利润行为逻辑测试方式三:层次线性模型 | 🖊商业营销行为适度分析:分割数据为观测数据和测试数据,交互非线性关系。

🍇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)ei=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)ei=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)e1nβzh0(t)ei1nβz=i1nβzl1nβz] 与时间 t 无关。

换句话说,如果一个人在某个初始时间点的死亡风险是另一个人的两倍,那么在以后的所有时间点,死亡风险仍然是另一个人的两倍。

代码实现:

library("survival")
library("survminer")

函数 coxph()[生存包中]可用于计算 R 中的 Cox 比例风险回归模型。 简化格式如下:

coxph(formula, data, method)

我们将使用生存 R 包中的肺癌数据。

data("lung")
head(lung)

计算模型

我们首先计算所有这些变量的单变量 Cox 分析;然后我们将使用两个变量进行多元 Cox 分析,以描述这些因素如何共同影响生存。

res.cox <- coxph(Surv(time, status) ~ sex, data = lung)
res.cox
summary(res.cox)

要将单变量 coxph 函数一次应用于多个协变量,请输入以下内容:

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回归分析

res.cox <- coxph(Surv(time, status) ~ age + sex + ph.ecog, data =  lung)
summary(res.cox)

可视化

# Plot the baseline survival function
ggsurvplot(survfit(res.cox), color = "#2E9FDF",
           ggtheme = theme_minimal())
# 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

参阅一:计算思维

参阅二:亚图跨际