You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言通过向前、向后和逐步选择法筛选泊松回归最优模型?

R语言中泊松回归的最优子集筛选方法

先明确regsubsets()和step()的适用性

  • step():完全支持泊松回归。它基于AIC准则做逐步变量选择,只要你先拟合好带family = poisson的glm模型,直接传给step()就行。
  • regsubsets()(来自leaps包):默认是给线性回归用的,但可以通过指定method = "glm"和family = poisson来适配泊松回归,实现最优子集筛选。

方法1:用step()做逐步变量选择

先拟合包含所有候选变量的全模型,再用逐步选择(支持向前、向后、双向三种模式):

# 示例用mtcars数据集,假设mpg为计数型响应变量(仅作演示)
data(mtcars)
# 拟合全泊松回归模型
full_pois <- glm(mpg ~ ., data = mtcars, family = poisson)
# 双向逐步选择(direction可选"forward"/"backward"/"both")
selected_step <- step(full_pois, direction = "both")
# 查看最终模型结果
summary(selected_step)

方法2:用regsubsets()做最优子集筛选

需要先安装leaps包,然后指定泊松族来筛选所有可能的子集,再根据AIC/BIC等准则选最优:

install.packages("leaps")
library(leaps)
# 执行最优子集筛选
pois_subsets <- regsubsets(mpg ~ ., data = mtcars, method = "glm", family = poisson)
# 查看各子集的统计指标
sub_summary <- summary(pois_subsets)
# 比如选BIC最小的子集
best_bic <- which.min(sub_summary$bic)
# 提取该子集的变量
names(coef(pois_subsets, best_bic))

额外推荐:高维数据用Lasso正则化筛选

如果你的变量很多,glmnet包的Lasso回归更合适,它能通过正则化自动压缩不重要变量的系数到0,实现变量筛选,同样支持泊松族:

install.packages("glmnet")
library(glmnet)
# 构造特征矩阵和响应变量
x <- model.matrix(mpg ~ ., mtcars)[,-1] # 去掉截距列
y <- mtcars$mpg
# 拟合泊松Lasso模型
pois_lasso <- glmnet(x, y, family = "poisson", alpha = 1)
# 交叉验证选最优正则化参数lambda
cv_lasso <- cv.glmnet(x, y, family = "poisson", alpha = 1)
# 提取最优模型的系数(系数为0的变量被筛选掉)
coef(pois_lasso, s = cv_lasso$lambda.min)

内容的提问来源于stack exchange,提问作者Thiru Balaji G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:10:56