逐步回归的R语言实现

定义

类型

向前引入法
从一元回归开始,逐步增加变量,使指标值达到最优为止
相互删除法
从全变量回归方程开始,逐步删去某个变量,使指标值达到最优为止
逐步筛选法
综合上述方法

衡量标准

R2:越大越好
AIC:越小越好

step()

usage:

step(object, scope, scale = 0,
     direction = c("both", "backward", "forward"),
     trace = 1, keep = NULL, steps = 1000, k = 2, ...)

这个函数可以用来对已建立的lm or glm model进行逐步回归分析。
其中,direction分为”both”, “backward”, “forward”,分别表示逐步筛选、向后、向前三种方法。
注意,这个函数筛选的依据是AIC,而不是R2。
example:

最后

鉴于step()有时候会出现莫名其妙的错误,因此再介绍一个可以做逐步回归的手工方法。
add1()
drop1()


by Yuhua

### 使用R语言实现Cox逐步回归 在生存分析领域,Cox比例风险模型是一种广泛使用的工具,能够评估多个协变量对事件发生时间的影响。为了优化模型并选择最合适的协变量集合,可以采用逐步回归方法(Stepwise Regression),这种方法可以通过向前选择、向后消除或双向过程自动筛选重要的协变量。 以下是使用R语言实现Cox逐步回归的具体方式: #### 1. 数据准备与加载必要的库 在开始之前,需确保已安装`survival`包以及其他可能需要的辅助包,例如`MASS`用于逐步回归功能。 ```r library(survival) library(MASS) ``` 如果尚未安装这些包,则可通过以下命令完成安装: ```r install.packages("survival") install.packages("MASS") ``` #### 2. 构建基础Cox回归模型 假设有一个名为`data`的数据框,其中包含生存时间和状态指示符以及若干协变量。首先定义基本的Cox回归模型。 ```r cox_model <- coxph(Surv(time, status) ~ ., data = data) summary(cox_model)[^1] ``` 此处,`Surv(time, status)`表示生存对象,`.~.`意味着将所有其他列作为潜在的协变量纳入模型。 #### 3. 实现逐步回归 利用`stepAIC()`函数执行逐步回归操作。此函数会尝试找到具有最低Akaike Information Criterion (AIC)值的最佳子集模型。 ```r step_cox_model <- stepAIC(cox_model, direction="both", trace=FALSE) summary(step_cox_model) ``` - `direction="both"`指定双向逐步回归策略。 - 参数`trace=FALSE`可关闭中间迭代输出以便更整洁的结果显示。 最终得到的对象`step_cox_model`即为经过逐步回归后的最佳Cox模型。 #### 4. 验证比例风险假定 验证所选模型是否满足Cox回归的比例风险假定时非常关键。这一步骤通常涉及Schoenfeld残差测试或其他诊断手段。 ```r schoenfeld_test <- cox.zph(step_cox_model) print(schoenfeld_test$p) if(any(schoenfeld_test$p < 0.05)) { cat("警告:某些协变量未通过比例风险检验。\n") } ``` 上述代码计算每个协变量对应的p值;当任何p值小于显著性水平(如0.05)时,表明可能存在违反比例风险假定的情况。 #### 5. 可视化结果——森林图 绘制森林图有助于直观理解各个协变量的风险比及其置信区间。 ```r forestplot::forest_plot(summary(step_cox_model)$coefficients[, c("coef", "exp(coef)", "se(coef)")]) ``` 这里调用了外部包`forestplot`来进行绘图工作。如果没有预先安装它,请先运行`install.packages("forestplot")`。 --- ### 总结 以上流程展示了如何借助R语言中的`survival`和`MASS`包实施Cox逐步回归,并进一步检查其适用性和呈现结果的方法。每步都紧密围绕着提高模型性能的目标展开,同时保持了理论上的严谨性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值