매일 사용할지 모르는 간단한 인과추론 방식에 대해서(Confounder)
Confounder
- 수치 비교할 때 통상 문제를 일으키는 변수가 있다. → Confounder 변수라고 한다.
- X → Y 라는 인과관계를 판단하고 싶을 때 X,Y에 모두 영향을 미치는 변수이다.
- Confounder 변수는 종종 Random Factor에 기반해서 하지 않고 임의로 그룹을 나눴을 때 발생한다.
- 예시: 명상하는 사람이 심장병 사망율이 그렇지 않은 사람보다 낮다라는 결과에 대해서 운동이나, 다이어트 여부 등이 영향을 미칠 수 있다. 운동이나 다이어트 여부는 Confounder라고 볼 수 있다.
- 그렇다면 이런 변수들을 어떻게 해야할까? → Control 해야 한다.→ Control 하는 방법은 다양한 방법들이 있지만 그 중 대표적인게 Stratification이 있다.
- Confounder 변수에 기준에서 Grouping해야 하고 정의에 따라서 Confounder 변수는 변하지 않아야 한다. 다시 말해서 하나의 Group내에서 Outcome에 대해서는 Confounder의 영향이 없어야 한다.
- 이제 Weighted Average 를 이용해서 실제적인 비교를 해야 한다.
Check list
- 관측치인가?(실험결과가 아니라..) → 통상 A/B테스트 데이터는 관측치로 볼 수 있다. 물론 RCT의 정의에 맞춰서 랜덤으로 사용자를 분류해야 하고
- Potential Confounder를 찾아야 한다.
- 이제 Confounder를 기준으로 Stratification 해서 분석을 진행해야 한다.
- 예제를 보면 이해가 쉬어짐
Confounder는 수가 늘어나면?
- 늘리면 되는데, 한 bucket에 들어가는 데이터의 양이 적어질 경우 문제가 될 수 있다.
- Confounder 수가 늘어나면 Regression을 쓴다. 이 때 Confounder 값들을 공정시키고 여기에 원인이 되는 X값을 포함해서 독립변수로 놓고 결과변수에 Y를 놓으면 된다. 그렇게 계산했을 때 X의 계수값이 바로 인과관계의 여부 및 강도를 보여줄 것이다.
- 요지는 Confounder 값을 하나의 Bucket안에서는 고정시켜준다는 것이므로 Continuous Variable 역시 Categorical Variable로 정의를 해준다.
조심해야 하는 부분
- 생각하지 못한 Confounder가 있다.→ 찾는 방법 Backdoor criterion 활용해서 Identify할 수도 있다.
- 내가 Confounder라고 했지만 Confounder가 아닐 수도 있다.
- 데이터의 한계로 Confounder를 찾을 수 없는 경우도 있다.
- Confounder를 기반으로 Stratification을 했는데 하나의 Bucket이 너무 크다 보니.. 그 안에서 다른 Confounder가 있어서 값이 불안정할 수 있다.
- Confounder에 기반해서 Bucket을 너무 쪼갤 경우 추정한 수치들이 안정적이지 않을 수 있다.