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

使用R语言PSweight包计算IPW时遇错:多水平变量分析求助

问题解决步骤

错误原因

报错核心是处理变量treatment未被识别为分类因子,PSweight包处理多分类逆概率加权时,需要明确处理变量为因子类型;同时公式内使用as.factor()可能引发协变量类型混淆,导致因子比较的无效操作。

修正方案

  1. 将treatment转换为因子类型,明确其分类属性
  2. 提前在数据框中转换协变量cov2、cov3为因子,避免公式内转换的潜在问题
  3. 重新运行SumStat函数

修正后代码

# 加载包
library(PSweight)
library(tidyverse)

# 处理缺失值+转换变量类型
df <- df %>%
  na.omit() %>%
  mutate(
    treatment = factor(treatment, levels = c(0,1,2)), # 指定分类水平顺序
    cov2 = factor(cov2),
    cov3 = factor(cov3)
  )

# 构建倾向得分公式(无需再用as.factor)
ps.mult <- treatment ~ cov1 + cov2 + cov3 + cov4 + cov5

# 计算倾向得分并评估加权协变量平衡
bal.mult <- SumStat(
  ps.formula = ps.mult,
  weight = "IPW",
  data = df
)

后续处理效应估算

平衡评估通过后,可使用ATE()函数估算二分类结局的处理效应:

# 估算平均处理效应(ATE)
ate_result <- ATE(
  ps.formula = ps.mult,
  outcome.formula = outcome_var ~ 1,
  weight = "IPW",
  data = df,
  family = binomial() # 适配二分类结局
)

# 查看结果详情
summary(ate_result)

内容的提问来源于stack exchange,提问作者crytpodoc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:10:10