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

如何在R语言的条件逻辑回归(clogit)模型中识别影响性观测?

识别clogit模型中影响性观测的方法

1. 基于残差的异常值定位

clogit对象支持survival包的residuals()函数,可通过多种残差类型识别潜在影响性观测:

  • 得分残差(Score Residuals):反映单个观测对参数估计的贡献度,绝对值越大意味着该观测对模型参数的影响越强。
    # 计算得分残差
    score_resid <- residuals(fit_clogit, type = "score")
    # 筛选绝对值超过2倍标准差的观测
    influential_candidates <- which(abs(score_resid) > 2 * sd(score_resid))
    
  • 偏残差(Partial Residuals):结合拟合值与原始数据,可用于检测自变量和因变量关系中的异常点。
    partial_resid <- residuals(fit_clogit, type = "partial")
    

2. 手动计算删除观测后的参数变化(类DFbeta统计量)

由于clogit依赖匹配组(stratum)结构,可通过循环删除单个观测并重新拟合模型,对比参数变化量判断影响:

# fit_clogit为已拟合的clogit模型,data为原始数据集,strata_var为匹配组变量
params_original <- coef(fit_clogit)
n <- nrow(data)
dfbeta_clogit <- matrix(0, nrow = n, ncol = length(params_original))

for (i in 1:n) {
  # 删除第i个观测后重新拟合模型
  fit_i <- clogit(formula(fit_clogit), data = data[-i, ], strata = strata_var)
  dfbeta_clogit[i, ] <- coef(fit_i) - params_original
}

# 计算每个观测的参数变化绝对值之和,筛选TOP5%的观测
dfbeta_sum <- rowSums(abs(dfbeta_clogit))
influential_obs <- which(dfbeta_sum > quantile(dfbeta_sum, 0.95))

注:如果是匹配病例对照数据,删除单个观测可能破坏匹配组结构(如某组只剩1个观测),此时可改为删除整个匹配组后重新拟合,再评估影响。

3. 利用clogit与coxph的等价性

clogit本质是生存时间统一为1的cox比例风险模型,可转换为coxph框架使用其影响诊断工具:

# 构造伪生存时间与事件状态
data$pseudo_time <- 1
# 用coxph拟合等价模型
fit_cox <- coxph(Surv(pseudo_time, outcome) ~ covariates + strata(strata_var), data = data)
# 计算cox模型的Cook距离
influence_cox <- influence(fit_cox)
cook_d <- influence_cox$cook.d
# 筛选Cook距离大于4/样本量的观测
influential <- which(cook_d > 4 / nrow(data))

注意事项

  • 匹配数据中,影响性观测的评估需结合匹配组的整体性,单个观测异常可能源于整个组的特殊性。
  • 循环删除观测的方法计算量较大,大样本下可考虑抽样评估或并行计算优化。

内容的提问来源于stack exchange,提问作者H.Dave

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:28