PSM(=Propensity Score Matching)을 활용한 인과추론

거친코딩·2023년 1월 28일
1
post-thumbnail

PSM, Propensity Score Matching(=성향 점수 매칭)

일반적으로 관찰연구에서 특정 영향으로 인한 두 집단
대조군과 실험군을 비교할 때,
두 집단이 가지고 있는 특성 변수에 대한 분포는 동일하다는 가정이 필요합니다.

하지만 이러한 비교는 실 데이터상에서는 "공변량"의 문제로 인해 쉽게 이루어지기 어려운 테스트입니다.

공변량(covariate) : 종속변수에 얼마나 영향을 주는지 연구가 필요한 독립변수가 아닌, 
나이, 성별, 체중 등과 같이 순수한 독립변수의 영향력 검출을 어렵게 만드는 잡음 인자 

예를 들어, 위 그림과 같이 대조군과 실험군이 나누어지고,
흡연 유무에 따른 암 발생 빈도를 체크한다고 가정해보겠습니다.

우리의 관심은 "실제로 흡연의 여부가 폐암 발생에 영향을 주는가?"에 대한 인과추론을 하길 원하는 반면,
대조군과 실험군과의 공변량의 차이로 인해
종속 변수에 대한 독립변수의 영향 판단이 흐려질 수 있을 것입니다.

그래서 우리는 두 집단간의 공변량(=covariate)를 통제하고 동일조건으로 실험을 진행해야 올바른 집단 비교를 통한 영향 인자 분석이 가능할 것입니다.


PSM을 활용한 인과추론

데이터 소개

  • Lung Cancer Data
  • 53,427 rows, 7 columns
  • columns 소개
    • pid : 고유 인덱스 ID
    • age : 나이
    • gender : 성별
    • race : 인종
    • smoker : 현재 흡연 유무
    • days_to_cancer : 암 경과 일 수
    • stage_of_cancer : 암 진행 단계
df = pd.read_csv('lung_cancer.csv')
df.head()

Chi-Squared Test without PSM

pval = stats.chi2_contingency(dataset_chi)[1]
print('p-value : ',round(pval,5))
> p-value :  0.00001

Chi-Squared Test with PSM

pval = stats.chi2_contingency(dataset_chi)[1]
print('p-value : ',round(pval,5))
> p-value :  0.04017

PSM 방식을 사용한 결과와 아닌 결과에 대해,
P-Value가 어느정도 상이한 모습을 나타내었습니다.

두 방식 모두 P-Value의 결과값은 0.05 이하로
Significant한 결과를 보여주긴 했지만,

PSM을 활용한 방식에 대해서는
근소하게 0.05(=유의수준)에 이하가 안될 수도 있었다는 것을 의미하고,
전처리 방식이나 혹은, 충분한 데이터 수가 있었다면
결과는 또 다시 달라질 수도 있다는 것을 의미합니다.


결론

활용성 높은 인과 추론 분석 방법론

PSM 을 활용한다면 두 집단간 유의미한 차이를 확인하고,
영향력 및 유의미한 변수의 인과성을 얻어내기 위한 충분히 좋은 분석 방법론 중 하나라고 생각합니다.

AB Test의 대체제?

PSM 분석에 대해 듣다보면,
보통 다음과 같은 질문이 생길 수 있습니다.

AB Test 해보고 싶었는데, 이걸로 가능할까?

저의 대답은 "Yes! 물론입니다"

요즘 많은 기업들에서 AB Test에 대한 수요가 많아지고,
각 기업의 능력에 따라 솔루션을 외부에서 들여오는 경우도 있고, 아니면 자체 솔루션 개발을 진행하는 경우도 있습니다.

하지만 이러한 여력이 없는 기업들도 많을 것이고,
노하우가 없어서 어떻게 첫 삽을 떠야하는지 고민만 하시는 곳도 있을 거라 예상됩니다.

그리고 기업 뿐만 아니라,
많은 기업에서 요구하는 이 기술을 취준생 혹은 대학생들은 어떻게 AB Test를 경험해볼 수 있을까요?

그래서 저는 간접적인 AB Test 대체제로
PSM을 활용한 AB Test를 추천드려봅니다.

위 방식에 대한 아이디어는
제가 간략히 짜놓은 코드를 보시고 조금이나마 얻어가실 수 있었으면 좋겠습니다.

코드 자료는 데이터분석 커뮤니티 가입후 확인 가능합니다.

profile
데이터 분석 유튜버 "거친코딩"입니다.

2개의 댓글

comment-user-thumbnail
2023년 1월 29일

포스팅 감사합니다~ 항상 유튜브와 링크드인으로 많이 배우고 있습니다!

1개의 답글