본문 바로가기
R

[R][svydesign]IPTW (Inverse Probability of Treatment Weighting)

by Chandler.j 2025. 1. 14.
반응형

1. IPTW의 기본 개념

IPTW는 경향 점수(propensity score)를 기반으로 가중치를 계산하여, 연구 데이터를 "균형 잡힌 상태"로 만들어줍니다. 이를 통해 관찰 연구에서도 무작위 실험(randomized controlled trial)과 유사한 조건을 모사할 수 있습니다.

  • 경향 점수 (Propensity Score):
    • 처치(treatment)를 받을 확률을 나타내는 값으로, 보통 로지스틱 회귀(logistic regression)나 머신러닝 모델을 사용해 계산합니다.
    • 각 개체에 대해 e(x)=P(T=1∣X=x), 여기서 T는 처치 여부, X는 혼란 변수를 포함한 설명 변수입니다.
    • e(x)=P(T=1∣X=x)e(x) = P(T=1 | X=x)
  • 가중치 계산: 처치를 받은 그룹과 받지 않은 그룹 각각에 대해 다른 가중치를 부여합니다.
    • 처치 그룹 (T=1): w=e(x)1w=1e(x)w = \frac{1}{e(x)}
    • 비처치 그룹 (T=0): w=1−e(x)1w=11−e(x)w = \frac{1}{1 - e(x)}

2. IPTW의 목적

IPTW는 처치 그룹과 비처치 그룹 간의 공평한 비교를 가능하게 하며, 처치와 결과 간의 인과관계(causality)를 추정하는 데 사용됩니다. 이를 통해 데이터의 편향(bias)을 줄이고, 혼란 변수로 인해 발생할 수 있는 왜곡을 최소화합니다.


3. IPTW의 과정

1) 경향 점수 추정:

- 관찰 데이터를 사용해 각 개체의 처치 확률(경향 점수)을 계산합니다.

 

2) 가중치 적용:

- 각 개체에 대해 경향 점수를 사용해 가중치를 할당합니다.

- 처치 그룹과 비처치 그룹의 가중치가 적용된 데이터 분포를 균형 상태로 조정합니다.

 

3) 결과 분석:

- 가중치를 적용한 데이터를 사용해 처치 효과(ATE, ATT 등)를 추정합니다.


4. IPTW의 장점

  • 관찰 데이터에서 혼란 변수를 효과적으로 통제할 수 있습니다.
  • 데이터 균형 조정을 통해 신뢰할 수 있는 인과 추론이 가능해집니다.
  • 상대적으로 간단하게 구현할 수 있습니다.

5. IPTW의 단점 및 한계

  • 극단적 경향 점수: 경향 점수가 0 또는 1에 가까운 값이 있는 경우 가중치가 너무 커져 분산이 증가하고 불안정해질 수 있습니다.
  • 모델 의존성: 경향 점수를 추정하는 모델이 잘못 지정되면 결과가 왜곡될 수 있습니다.
  • 대체 방법 필요: 안정성 문제를 해결하기 위해 Stabilized Weight 또는 Doubly Robust Estimation 등과 함께 사용하는 것이 권장됩니다.

6. 적용 사례

  • 의료 연구: 특정 치료(예: 약물 사용)가 환자 결과에 미치는 영향 평가.
  • 정책 평가: 정책 도입이 사회적 결과(예: 범죄율 감소, 교육 효과 등)에 미치는 영향 분석.
  • 경제학 및 사회학: 특정 요인이 생산성, 소득 등에 미치는 효과 측정.

IPTW는 통계적 인과 추론에서 핵심 도구로 널리 사용되며, 데이터를 기반으로 더 나은 결정을 내리는 데 중요한 역할을 합니다.


7. R 실습 코드

# 필요한 패키지 로드
library(survey)
library(tableone)

# 예제 데이터 생성
set.seed(123)
df <- data.frame(
  Group = c(rep(1, 50), rep(0, 50)),  # 처치군(1)과 대조군(0)
  Age = rnorm(100, mean = 50, sd = 10),
  HTN = rbinom(100, 1, 0.5),
  DM = rbinom(100, 1, 0.3)
)

# 성향 점수 계산 (로지스틱 회귀)
ps_model <- glm(Group ~ Age + HTN + DM, data = df, family = "binomial")
df$ps <- predict(ps_model, type = "response")

# IPTW 가중치 계산
df$weight <- ifelse(df$Group == 1, 1 / df$ps, 1 / (1 - df$ps))

# svydesign으로 가중치 적용된 데이터 생성
iptw_design <- svydesign(ids = ~1, data = df, weights = ~weight)

# 공변량 균형성 확인 (SMD 계산)
covariates <- c("Age", "HTN", "DM")
unadjusted_table <- CreateTableOne(vars = covariates, strata = "Group", data = df)
adjusted_table <- svyCreateTableOne(vars = covariates, strata = "Group", data = iptw_design)

# 결과 출력
print("Before weighting:")
print(unadjusted_table)
print("After weighting:")
print(adjusted_table)

결과 해석

  • Before weighting: 가중치를 적용하기 전에는 처치군과 대조군 간에 공변량(Age, HTN, DM)의 불균형이 존재할 수 있습니다.
  • After weighting: IPTW를 적용한 후에는 표준화된 평균 차이(SMD)가 줄어들어 두 군 간의 공변량 분포가 더 유사해집니다.

추가 활용

  • svyglm: 가중치를 고려한 회귀 분석.
  • svykm: Kaplan-Meier 생존 곡선 추정.
  • ExtractSmd: SMD 값을 추출하여 균형성을 정량적으로 평가.

위 방법은 관측 연구에서 혼란 변수를 효과적으로 통제하고 인과 추론을 가능하게 합니다


TOP

Designed by 티스토리