반응형
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 값을 추출하여 균형성을 정량적으로 평가.
위 방법은 관측 연구에서 혼란 변수를 효과적으로 통제하고 인과 추론을 가능하게 합니다