173강부터 176강까지는 조사를 전제로 했습니다. 이제 아무도 뽑지 않은 자료를 다룹니다.
표집틀도 없고, 뽑힐 확률도 없고, 무응답이라는 개념조차 없습니다. 안 온 사람은 안 온 것이 아니라 애초에 보이지 않습니다.
그런데 이런 자료가 훨씬 크고 훨씬 싸므로 조사보다 믿을 만하다는 인상을 줍니다. 173강 문제 1에서 크기가 치우침을 못 이긴다는 것을 봤는데, 여기서는 치우침의 크기를 계산할 수조차 없습니다.
| 조사 자료 | 관측 자료 |
|---|---|
| 뽑힐 확률을 압니다 | 모릅니다 |
| 응답률이 계산됩니다 | 정의되지 않습니다 |
| 설계효과를 압니다 | 알 수 없습니다 |
이 강의는 도구를 하나 더 주는 강의가 아닙니다. 관측 자료로 무엇을 물으면 안 되는지를 가르는 강의이며, 그것으로 S7 전체를 맺습니다.
문제. 관측 자료와 조사 자료를 견줍니다.
(1) 무엇이 없는지 정리하세요.
(2) 173강의 치우침 항등식을 그대로 써 보세요.
(3) 자료가 커도 치우침이 남는지 확인하세요.
생각의 실마리. 173강부터의 도구가 전부 뽑힐 확률에서 나왔습니다. 그 확률이 없으면 무엇이 남는지 하나씩 지워 봅니다.
풀이. (1) 하나씩 견줍니다.
| 조사 자료 | 관측 자료 | 무엇이 없는가 |
|---|---|---|
| 표집틀이 있음 | 없음 | 누가 빠졌는지 못 셉니다 |
| 뽑힐 확률을 앎 | 모름 | 가중치를 못 만듭니다 |
| 무응답을 셈 | 안 옴은 안 보임 | 응답률이 없습니다 |
| 물어서 답을 받음 | 행동이 기록됨 | 묻지 않은 것은 없습니다 |
| 설계가 정해짐 | 쌓인 것을 씀 | 설계효과를 모릅니다 |
마지막 줄이 175강 전체를 무력하게 만듭니다. 가중치는 뽑힐 확률의 역수인데, 그 확률이 존재하지 않습니다.
(2) 173강 문제 1의 항등식을 그대로 적용해 봅니다.
| 항 | 관측 자료에서 |
|---|---|
| 응답과 값의 상관 \rho_ | 알 수 없습니다 |
| 표본 비율 | 모집단을 몰라 정의되지 않습니다 |
| 모집단 표준편차 \sigma_ | 모집단을 몰라 알 수 없습니다 |
세 항을 다 모르므로 치우침의 크기를 계산할 수 없습니다.
크기를 모른다는 것이 작다는 뜻은 아닙니다. 조사에서는 응답률이라도 보고할 수 있는데, 여기서는 보고할 수가 없어서 아예 이야기되지 않습니다.
(3) 값이 큰 사람이 더 자주 기록되는 상황을 만듭니다. 모집단은 만 명입니다.
| 기록될 확률의 기울기 | 기록된 사람 수 | 기록된 평균 | 치우침 |
|---|---|---|---|
만 명이 기록되어도 치우침이 그대로 남습니다. 기록될 확률이 값과 아주 약하게만 이어져도 평균이 까지 밀립니다.
그리고 참 평균을 모르므로 치우쳤다는 사실 자체를 알 수 없습니다. 조사라면 응답률로 의심이라도 하는데, 여기서는 의심할 단서가 없습니다.
이 문제에서 배우는 것. 관측 자료의 위험은 치우침이 크다는 것이 아니라 치우침이 안 보인다는 것입니다. 조사의 결함은 응답률, 표집틀 누락률, 설계효과처럼 숫자로 보고됩니다. 관측 자료에는 그 숫자가 없으므로 결함이 보고서에 등장하지 않고, 그래서 결함이 없는 것처럼 읽힙니다. 웹 로그로 국민 여론을 말하거나 앱 사용 기록으로 전 국민 이동을 말하는 분석이 위험한 이유가 여기 있으며, 틀렸다는 것이 아니라 얼마나 틀렸는지 아무도 모른다는 것이 문제입니다.
바로 확인 1.
확인 1-1. 관측 자료에서 가중치를 못 만드는 이유를 쓰세요.
답. 뽑힐 확률이 애초에 존재하지 않기 때문입니다.
확인 1-2. 검산에서 기울기가 일 때 기록된 사람 수와 치우침을 쓰세요.
답. 명이고 치우침은 입니다.
확인 1-3. 크기를 모르는 것과 작은 것의 차이를 쓰세요.
답. 계산이 안 될 뿐 치우침은 그대로 있습니다.
문제. 자료에 들어오는 조건이 관계를 만드는지 봅니다.
(1) 무관한 두 변수에 여러 조건을 걸어 상관을 재세요.
(2) 값이 잘리거나 막힐 때 기울기를 재세요.
생각의 실마리. 관측 자료는 어떤 조건을 통과한 것만 남습니다. 앱을 깐 사람, 결제한 사람, 센서가 잡은 사람입니다. 그 조건이 무엇과 이어졌는지가 문제입니다.
풀이. (1) 서로 무관한 두 능력을 만듭니다. 전체의 상관은 입니다.
| 자료에 들어오는 조건 | 남는 비율 | 남은 것의 상관 | 부호 |
|---|---|---|---|
| 전체 | 없음 | ||
| 둘 중 하나라도 높으면 | 음수 | ||
| 둘 다 높아야 | 없음 | ||
| 합이 일정 범위 | 음수 |
둘째와 넷째 줄에서 음의 상관이 생깁니다. 166강 문제 4의 버크슨 역설이며, 자료를 조작하지 않았는데 관계가 만들어졌습니다.
셋째 줄은 관계가 생기지 않습니다. 두 조건이 서로 따로 걸려 있어서, 남은 영역이 직사각형이고 그 안에서 두 변수가 여전히 독립입니다.
조건이 두 변수를 한데 묶어야 관계가 만들어집니다. 걸러 냈다는 사실만으로 관계가 생기지는 않으므로, 어떻게 걸러졌는지를 봐야 합니다.
(2) 값이 잘리는 경우도 관계를 바꿉니다. 참 기울기는 입니다.
| 어떻게 잘리는가 | 남는 비율 | 잰 기울기 | 참값 대비 |
|---|---|---|---|
| 자르지 않음 | |||
| 가 큰 것만 남김 | |||
| 가 큰 것만 남김 | |||
| 를 에서 막음 |
로 자르면 기울기가 로 줄고 로 자르면 그대로입니다.
결과로 고르면 관계가 망가지고 원인으로 고르면 안 망가집니다. 회귀가 를 조건으로 두므로, 에 건 조건은 조건부 평균을 안 바꾸고 에 건 조건은 바꾸기 때문입니다.
막아 놓는 것도 기울기를 으로 줄입니다. 값이 지워지지 않고 남아 있어도 그 값이 참값이 아니면 마찬가지입니다. 상한에 걸린 계측기, 만료된 계약, 화면에 다 안 나오는 순위가 전부 이것입니다.
이 문제에서 배우는 것. 관측 자료를 볼 때 첫 질문은 "무엇이 이 자료에 들어왔는가"여야 합니다. 결제 기록으로 만족도를 재면 결제라는 조건이 만족도와 이어져 있고, 앱 로그로 습관을 재면 앱을 깐다는 조건이 습관과 이어져 있습니다. 그 조건이 결과와 이어져 있으면 관계 자체가 만들어진 것이며, 표본을 늘려도 사라지지 않습니다. 그리고 셋째 줄이 보여 주듯 모든 필터가 위험한 것은 아니므로, 어떤 필터인지를 구체적으로 따져야 합니다.
바로 확인 2.
확인 2-1. 검산에서 상관이 가장 크게 생긴 조건과 그 값을 쓰세요.
답. 합이 일정 범위인 경우이며 입니다.
확인 2-2. 관계가 생기지 않은 조건과 그 이유를 쓰세요.
답. 둘 다 높아야인 경우이며 두 조건이 서로 따로 걸렸기 때문입니다.
확인 2-3. 로 자를 때와 로 자를 때의 기울기를 쓰세요.
답. 과 이며 결과로 고를 때만 망가집니다.
문제. 통제할 변수를 고릅니다.
(1) 교란, 충돌부, 중간변수 세 구조를 만들어 비교하세요.
(2) 변수를 많이 넣는 것이 왜 답이 아닌지 정리하세요.
생각의 실마리. 관측 자료에서는 처치가 무작위가 아니므로 다른 변수를 넣어 보정하려 합니다. 그런데 넣으면 좋아지는 변수와 나빠지는 변수가 갈립니다.
풀이. (1) 세 구조를 만듭니다. 참 인과효과는 **세 경우 모두 **입니다.
| 구조 | 통제 안 함 | 통제함 | 옳은 쪽 |
|---|---|---|---|
| 교란: 가 와 로 | 통제함 | ||
| 충돌부: 와 가 로 | 통제 안 함 | ||
| 중간변수: 가 거쳐 로 | 통제 안 함 |
교란은 통제해야 하고 충돌부와 중간변수는 통제하면 안 됩니다.
충돌부를 통제하면 없던 치우침이 생깁니다. 를 넣으면 의 계수가 에서 로 사라지며, 문제 2에서 조건을 걸어 관계를 만든 것과 같은 일입니다.
중간변수를 통제하면 효과가 지워집니다. 의 영향이 전부 을 거치므로, 을 고정하면 가 할 일이 남지 않아 이 됩니다.
(2) 그래서 변수를 많이 넣을수록 좋다는 생각이 깨집니다.
| 변수의 성격 | 통제하면 |
|---|---|
| 공통 원인 | 치우침이 없어집니다 |
| 공통 결과 | 없던 치우침이 생깁니다 |
| 중간 경로 | 효과의 일부가 사라집니다 |
| 의 원인이고 와 무관 | 정확도가 올라갑니다 |
| 의 원인이고 와 무관 | 정확도가 내려갑니다 |
| 결과의 결과 | 치우침이 생깁니다 |
넷째 줄과 다섯째 줄이 갈리는 것이 중요합니다. 쪽 원인은 오차를 걷어 내 정확도를 올리는데, 쪽 원인은 의 움직임을 깎아 정확도를 떨어뜨립니다. 185강 문제 5에서 그 차이를 수치로 잽니다.
무엇이 무엇인지는 자료가 말해 주지 않습니다. 세 구조가 만든 자료는 상관 구조만 보면 구별되지 않으며, 어느 변수가 원인이고 어느 변수가 결과인지는 자료 밖의 지식이 정합니다.
166강 문제 4의 결론 그대로입니다. 상관이 생기는 이유를 자료로 못 가르므로, 그림을 먼저 그리고 자료를 나중에 봅니다.
이 문제에서 배우는 것. "통제변수를 다 넣었습니다"는 품질의 증거가 아닙니다. 넣을수록 좋다는 믿음이 널리 퍼져 있는데, 충돌부 하나를 넣으면 있던 효과가 사라지고 없던 효과가 생깁니다. 그래서 분석의 첫 단계가 회귀가 아니라 변수들 사이의 화살표를 그리는 일이며, 그 그림이 통제할 것과 안 할 것을 정합니다. 그림이 틀릴 수 있다는 것이 약점인데, 그림을 안 그리면 틀린 그림을 암묵적으로 쓰는 것이라 나을 것이 없습니다.
바로 확인 3.
확인 3-1. 통제해야 하는 구조와 하면 안 되는 구조를 쓰세요.
답. 교란은 통제하고 충돌부와 중간변수는 통제하지 않습니다.
확인 3-2. 검산에서 충돌부를 통제했을 때의 계수를 쓰세요.
답. 이며 참값 이 사라졌습니다.
확인 3-3. 세 구조를 자료만으로 구별할 수 있는지 쓰세요.
답. 구별할 수 없으며 자료 밖의 지식이 필요합니다.
문제. 관측 자료로 인과를 말하는 조건을 봅니다.
(1) 필요한 가정 셋을 정리하세요.
(2) 성향 점수 가중을 해 보세요.
(3) 민감도 분석을 해 보세요.
생각의 실마리. 문제 3의 그림을 그렸다고 끝이 아닙니다. 그림에 안 그린 변수가 있으면 보정이 소용없습니다. 무엇을 믿어야 하는지 명시합니다.
풀이. (1) 가정 셋입니다.
| 가정 | 무슨 뜻인가 | 확인되는가 |
|---|---|---|
| 교환가능성 | 통제 뒤에는 처치가 무작위와 같음 | 안 됩니다 |
| 양수성 | 누구나 두 처치를 받을 수 있음 | 됩니다 |
| 일관성 | 처치가 한 가지로 정의됨 | 부분적으로 |
첫째 줄이 핵심인데 확인할 수 없습니다. 확인하려면 관측 안 된 변수를 봐야 하는데, 관측 안 됐으므로 볼 수 없습니다.
둘째 줄만 자료로 확인됩니다. 각 조합에서 두 처치가 다 나타나는지 세면 되며, 안 나타나는 구간이 있으면 그 구간은 비교 자체가 불가능합니다.
(2) 175강의 가중치를 처치 확률로 바꾸면 성향 점수 가중이 됩니다. 참 효과는 이고 는 관측되며 는 관측되지 않습니다.
| 무엇으로 보정하는가 | 추정 효과 | 참값과의 차이 |
|---|---|---|
| 보정 없음 | ||
| 관측된 만 통제 | ||
| 와 를 다 통제 | ||
| 로 성향 점수 가중 |
만 쓰는 두 방법이 와 로 거의 같은 답을 냅니다.
방법이 아니라 무엇을 관측했는지가 답을 정합니다. 성향 점수는 이름이 그럴듯해서 인과를 만들어 주는 것처럼 읽히는데, 관측된 변수만 쓰는 한 회귀와 같은 한계를 갖습니다.
셋째 줄만 참값에 닿습니다. 그런데 는 관측되지 않으므로 실제로는 쓸 수 없는 줄입니다.
(3) 그러면 관측 안 된 교란이 얼마나 강해야 결론이 뒤집히는지 계산합니다. 참 효과를 으로 두고 만 넣었을 때 로 보정한 값이 에 이르면, 관측된 결과를 하나로 다 설명할 수 있습니다.
| 에 미치는 크기 | 처치에 미치는 크기 | 참 효과 인데 나오는 값 | 다 설명하는가 |
|---|---|---|---|
| 아니오 | |||
| 아니오 | |||
| 아니오 | |||
| 아니오 | |||
| 아니오 | |||
| 아니오 | |||
| 아니오 | |||
| 아니오 | |||
| 예 | |||
| 아니오 | |||
| 예 | |||
| 예 |
약한 교란으로는 설명이 안 되고 아주 강한 교란이면 전부 설명됩니다. 여기서는 가 와 처치 양쪽에 관측된 보다 두 배 이상 세게 작용해야 뒤집힙니다.
그 정도가 그럴듯하면 결론을 못 믿고 터무니없으면 조금 더 믿습니다. 이것이 민감도 분석이며, 증명이 아니라 판단의 재료입니다.
이 문제에서 배우는 것. 관측 자료의 인과 주장은 참인지 거짓인지가 아니라 얼마나 강한 가정에 기대는지로 평가합니다. "교란을 통제했습니다"는 확인 불가능한 주장이므로 그 자체로는 정보가 없고, "이만한 교란이 있어야 뒤집힙니다"는 확인 가능한 계산이므로 정보가 있습니다. 그래서 좋은 관측 연구는 결론과 함께 뒤집히는 조건을 같이 보고하며, 174강 문제 4의 신뢰구간이 무작위성의 폭을 보여 주듯 민감도 분석은 가정의 폭을 보여 줍니다.
바로 확인 4.
확인 4-1. 확인할 수 없는 가정과 그 이유를 쓰세요.
답. 교환가능성이며 관측 안 된 변수를 봐야 하기 때문입니다.
확인 4-2. 검산에서 성향 점수 가중과 통제의 결과를 견주세요.
답. 과 로 거의 같으며 둘 다 의 치우침이 남습니다.
확인 4-3. 민감도 분석이 무엇을 알려 주는지 쓰세요.
답. 결론이 뒤집히려면 관측 안 된 교란이 얼마나 세야 하는지 알려 줍니다.
문제. 되먹임이 있는 자료를 봅니다.
(1) 지표를 목표로 삼으면 어떻게 되는지 확인하세요.
(2) 예측이 행동을 바꾸는 경우를 정리하세요.
(3) 시간에 따라 통제할 것이 바뀌는 경우를 정리하세요.
생각의 실마리. 관측 자료는 흐르는 중에 만들어집니다. 어제의 분석이 오늘의 정책이 되고, 그 정책이 내일의 자료를 만듭니다. 재는 행위가 대상을 바꿉니다.
풀이. (1) 참 실력과 지표가 처음에는 상관 입니다. 실력이 낮은 사람일수록 지표를 더 겨냥한다고 두었습니다.
| 지표를 얼마나 겨냥하는가 | 지표의 평균 | 참 실력의 평균 | 둘의 상관 |
|---|---|---|---|
지표는 에서 까지 오르는데 참 실력은 그대로입니다.
그리고 둘의 상관이 에서 로 부호까지 뒤집힙니다. 겨냥이 심해지면 지표가 높은 사람이 오히려 실력이 낮습니다.
이것을 굿하트 법칙이라 합니다. 지표 자체는 아무것도 잘못하지 않았고, 그것을 목표로 삼았다는 사실이 지표를 망가뜨립니다.
(2) 예측이 행동을 바꾸면 예측의 검증도 무너집니다.
| 상황 | 무슨 일이 일어나는가 |
|---|---|
| 고장을 예측해 미리 고침 | 예측이 맞았는데 고장이 안 납니다 |
| 이탈을 예측해 혜택을 줌 | 예측한 사람이 안 떠납니다 |
| 수요를 예측해 재고를 늘림 | 늘린 만큼 팔려 예측이 맞아 보입니다 |
| 위험을 예측해 거절함 | 거절한 사람의 결과를 영영 모릅니다 |
앞의 세 줄은 잘 맞힐수록 성능이 나빠 보입니다. 예측대로 손을 썼기 때문에 예측한 일이 안 일어나며, 성공이 실패로 기록됩니다.
마지막 줄이 가장 나쁩니다. 거절한 사람의 결과가 자료에 안 들어오므로 다음 모형이 거절한 사람을 못 배웁니다. 172강 문제 4의 빠진 분모가 시간이 갈수록 자라며, 문제 2의 "결과로 고르기"가 매일 반복되는 구조입니다.
(3) 시간이 흐르면 통제해야 할 것도 바뀝니다.
| 시점 | 무엇이 문제인가 |
|---|---|
| 시점 처치 | 이전의 교란을 통제해야 합니다 |
| 시점 교란 | 이전 처치의 결과이기도 합니다 |
| 통제하면 | 중간변수를 통제한 것이 됩니다 |
| 통제 안 하면 | 교란을 안 통제한 것이 됩니다 |
같은 변수가 교란이면서 중간변수입니다. 문제 3의 규칙은 넣거나 빼거나 둘 중 하나를 고르라 하는데, 여기서는 어느 쪽도 맞지 않습니다.
시간에 따라 바뀌는 처치에는 따로 만든 방법이 필요합니다. 각 시점의 처치 확률로 가중치를 만들어 곱해 나가는 방식이며, 문제 4의 성향 점수를 시간축으로 늘린 것입니다.
이 문제에서 배우는 것. 운영 중인 시스템의 자료는 그 시스템이 만든 자료입니다. 추천 로그는 추천이 보여 준 것만 담고, 승인 기록은 승인 규칙이 통과시킨 것만 담으며, 성과 지표는 그 지표를 겨냥한 행동을 담습니다. 그래서 모형을 개선할수록 자료가 좁아지는 되먹임이 생기고, 이것을 끊는 방법은 일부러 무작위를 섞는 것 하나뿐입니다. 일부 요청을 무작위로 처리하거나 일부 사용자에게 무작위 추천을 주면 손해가 나는데, 그 손해가 다음 모형을 배울 수 있는 유일한 자료값입니다.
바로 확인 5.
확인 5-1. 굿하트 법칙을 한 문장으로 쓰세요.
답. 지표가 목표가 되면 좋은 지표이기를 그칩니다.
확인 5-2. 검산에서 겨냥이 일 때 지표와 참 실력의 상관을 쓰세요.
답. 로 부호가 뒤집힙니다.
확인 5-3. 되먹임을 끊는 방법을 쓰세요.
답. 일부를 무작위로 처리해 안 보이던 결과를 자료에 남깁니다.
| 무엇을 묻는가 | 관측 자료로 |
|---|---|
| 얼마나 되는가 | 표집을 알면 답합니다 |
| 무엇과 무엇이 함께 가는가 | 답합니다 |
| 이것을 바꾸면 저것이 바뀌는가 | 가정 아래에서만 답합니다 |
| 왜 그런가 | 자료 밖의 지식이 필요합니다 |
| 변수의 성격 | 통제 | 왜 |
|---|---|---|
| 교란(공통 원인) | 합니다 | 치우침을 없앱니다 |
| 충돌부(공통 결과) | 안 합니다 | 없던 관계를 만듭니다 |
| 중간변수 | 안 합니다 | 효과를 지웁니다 |
| 의 원인이고 와 무관 | 해도 됩니다 | 정확도가 오릅니다 |
| 의 원인이고 와 무관 | 안 하는 편이 낫습니다 | 정확도가 내려갑니다 |
| 결과의 결과 | 안 됩니다 | 치우침이 생깁니다 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 자료가 크니 치우침이 작다고 봅니다 | 크기는 치우침과 무관합니다 |
| 필터가 걸렸으니 관계가 생겼다고 봅니다 | 두 변수를 묶는 필터만 그렇습니다 |
| 통제변수를 많이 넣습니다 | 충돌부를 넣으면 더 나빠집니다 |
| 성향 점수가 인과를 만든다고 봅니다 | 관측된 변수의 한계는 같습니다 |
| 교란을 통제했다고 선언합니다 | 확인 불가능하므로 민감도를 보고합니다 |
| 지표가 올랐으니 나아졌다고 봅니다 | 겨냥이 지표만 올릴 수 있습니다 |
| 예측 성능이 떨어졌다고 봅니다 | 예측대로 손을 썼기 때문일 수 있습니다 |
문제 6. 관측 자료에서 가중치를 못 만드는 이유를 쓰세요.
답. 뽑힐 확률이 애초에 존재하지 않기 때문입니다.
문제 7. 173강의 치우침 항등식 세 항이 관측 자료에서 어떻게 되는지 쓰세요.
답. 상관과 표본 비율과 모집단 표준편차를 모두 알 수 없습니다.
문제 8. 검산에서 기록 확률의 기울기가 일 때 치우침을 쓰세요.
답. 이며 만 명이 기록되어도 남습니다.
문제 9. 검산에서 상관이 가장 크게 생긴 조건과 값을 쓰세요.
답. 합이 일정 범위인 경우이며 입니다.
문제 10. 관계가 생기지 않은 조건과 이유를 쓰세요.
답. 둘 다 높아야인 경우이며 두 조건이 서로 따로 걸렸기 때문입니다.
문제 11. 검산에서 로 자를 때와 로 자를 때의 기울기를 쓰세요.
답. 과 입니다.
문제 12. 통제해야 하는 구조와 하면 안 되는 구조를 쓰세요.
답. 교란은 통제하고 충돌부와 중간변수는 통제하지 않습니다.
문제 13. 검산에서 중간변수를 통제했을 때의 계수를 쓰세요.
답. 이며 참값 이 지워졌습니다.
문제 14. 인과 추론의 가정 셋을 쓰세요.
답. 교환가능성과 양수성과 일관성입니다.
문제 15. 검산에서 성향 점수 가중의 결과를 쓰세요.
답. 이며 만 통제한 와 거의 같습니다.
문제 16. 민감도 분석에서 결론이 뒤집힌 첫 조합을 쓰세요.
답. 에 이고 처치에 일 때 이 나옵니다.
문제 17. 검산에서 겨냥이 일 때 지표 평균과 상관을 쓰세요.
답. 지표는 이고 상관은 입니다.
문제 18. 예측이 행동을 바꿀 때 가장 나쁜 경우를 쓰세요.
답. 거절한 사람의 결과를 영영 모르는 경우입니다.
심화 1. 자연 실험을 정리하세요.
문제 4의 가정은 믿어야 하는 것이었습니다. 믿는 대신 찾는 방법이 있습니다.
처치가 사람의 선택이 아니라 바깥 사정으로 정해진 자리를 찾습니다.
| 무엇을 쓰는가 | 예 |
|---|---|
| 규칙의 경계 | 점수 점에서 지원이 갈립니다 |
| 제도 변경 시점 | 어느 날부터 법이 바뀝니다 |
| 지리적 경계 | 길 하나로 관할이 갈립니다 |
| 추첨 | 신청자 중 무작위로 뽑힙니다 |
첫째 줄이 경계 근처에서 무작위와 비슷해집니다. 점과 점인 사람이 거의 같은 사람인데 처치만 다릅니다.
대신 답할 수 있는 범위가 좁아집니다. 경계 근처의 효과만 알 수 있으며, 경계에서 먼 사람에게도 같은지는 모릅니다.
그리고 경계를 아는 사람이 점수를 조작하면 무너집니다. 경계 바로 위에 사람이 몰려 있는지 세어 의심할 수는 있습니다.
심화 2. 이중차분을 정리하세요.
같은 대상을 처치 전후로 보고, 처치 안 받은 대상과 견줍니다.
두 번 빼면 두 종류의 교란이 지워집니다. 앞의 뺄셈이 대상마다 고정된 차이를 지우고, 뒤의 뺄셈이 모두에게 공통인 시간 변화를 지웁니다.
| 지워지는 것 | 안 지워지는 것 |
|---|---|
| 대상마다 고정된 차이 | 대상마다 다른 추세 |
| 공통의 시간 변화 | 처치와 같이 온 다른 변화 |
오른쪽 열이 이 방법의 가정입니다. 처치가 없었다면 두 집단이 나란히 움직였을 것이라고 믿어야 하며, 이것도 확인할 수 없습니다.
처치 전 여러 시점을 보면 방증은 됩니다. 처치 전에 이미 나란하지 않았다면 가정이 의심스럽습니다.
심화 3. 관측 자료의 실무 점검표를 정리하세요.
| 물음 | 왜 묻는가 |
|---|---|
| 이 행은 어떻게 생겼는가 | 문제 2의 조건을 찾습니다 |
| 안 들어온 것은 무엇인가 | 빠진 분모를 셉니다 |
| 이 값을 누가 적었는가 | 176강의 측정 오차를 봅니다 |
| 정의가 언제 바뀌었는가 | 시점 간 비교가 되는지 봅니다 |
| 어떤 시스템이 만들었는가 | 문제 5의 되먹임을 찾습니다 |
넷째 줄이 실무에서 가장 자주 사고를 냅니다. 지표의 정의가 조용히 바뀌면 자료는 이어져 보이는데 뜻이 끊깁니다.
다섯째 줄이 가장 놓치기 쉽습니다. 자료를 만든 시스템의 규칙을 모르면 자료가 세상을 담았는지 규칙을 담았는지 알 수 없습니다.
심화 4. 큰 자료의 유혹을 정리하세요.
관측 자료는 크므로 표준오차가 아주 작습니다.
그래서 무엇을 재도 유의합니다. 174강 문제 4에서 신뢰구간이 무작위성만 담고 치우침은 안 담는다고 했는데, 그 말이 여기서 가장 아픕니다.
| 커지면 | 작아지는가 |
|---|---|
| 무작위 오차 | 작아집니다 |
| 표집 치우침 | 그대로입니다 |
| 측정 오차 | 그대로입니다 |
| 교란 | 그대로입니다 |
한 줄만 좋아지고 세 줄은 그대로입니다. 그래서 큰 자료의 신뢰구간이 좁다는 것은 정확하다는 뜻이 아니라 정밀하다는 뜻입니다.
정밀하게 틀리는 것이 대충 맞는 것보다 위험합니다. 좁은 구간이 확신을 주기 때문입니다.
심화 5. 상관으로 할 수 있는 일을 정리하세요.
이 강의가 못 하는 것만 말한 것처럼 보이는데, 상관으로 되는 일이 많습니다.
| 목적 | 인과가 필요한가 |
|---|---|
| 다음 값을 맞히기 | 필요 없습니다 |
| 이상한 것을 찾기 | 필요 없습니다 |
| 비슷한 것을 묶기 | 필요 없습니다 |
| 무엇을 먼저 볼지 정하기 | 필요 없습니다 |
| 무엇을 바꿀지 정하기 | 필요합니다 |
마지막 줄만 인과가 필요합니다. 그리고 실무의 많은 일이 앞의 네 줄이므로, 관측 자료로 할 수 있는 일이 여전히 많습니다.
문제는 앞의 네 줄을 하면서 마지막 줄을 말할 때 생깁니다. 예측 모형이 찾은 변수를 바꿔야 할 변수로 읽는 것이 대표적이며, 예측에 잘 쓰이는 변수가 원인일 이유는 없습니다.
심화 6. S7이 무엇을 남겼는지 정리하세요.
| 단원 | 물음 | 남긴 것 |
|---|---|---|
| 01단원 | 자료를 어떻게 얻는가 | 정리된 표와 기록된 이력 |
| 02단원 | 요약을 어떻게 하는가 | 중심과 흩어짐과 그 한계 |
| 03단원 | 어떻게 보는가 | 눈으로 속지 않는 법 |
| 04단원 | 어떻게 뽑는가 | 확률표집과 총오차의 분해 |
04단원이 앞의 셋을 뒤집었습니다. 자료를 얻고 요약하고 보는 일을 다 잘해도, 표집이 틀렸으면 전부 틀립니다.
그리고 177강이 04단원을 다시 뒤집었습니다. 표집을 잘하는 법을 배웠는데, 실무의 자료 대부분은 표집이라는 것이 없습니다.
남는 결론은 겸손이 아니라 구분입니다. 무엇을 답할 수 있고 무엇을 못 답하는지 미리 갈라 두면, 못 답하는 것을 답한 척하지 않게 됩니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 관측 자료 | observational data | 뽑은 적 없이 쌓인 자료입니다 |
| 선택 효과 | selection effect | 들어오는 조건이 만든 치우침입니다 |
| 충돌부 | collider | 두 변수가 함께 만드는 변수입니다 |
| 교란변수 | confounder | 처치와 결과의 공통 원인입니다 |
| 중간변수 | mediator | 처치의 영향이 지나는 변수입니다 |
| 절단 | truncation | 조건 밖의 행이 사라집니다 |
| 중도절단 | censoring | 값이 한계에서 막힙니다 |
| 교환가능성 | exchangeability | 통제 뒤에는 무작위와 같습니다 |
| 양수성 | positivity | 누구나 두 처치를 받을 수 있습니다 |
| 일관성 | consistency | 처치가 한 가지로 정의됩니다 |
| 성향 점수 | propensity score | 처치를 받을 확률입니다 |
| 민감도 분석 | sensitivity analysis | 결론이 뒤집히는 조건을 잽니다 |
| 굿하트 법칙 | Goodhart's law | 지표가 목표가 되면 망가집니다 |
| 시간가변 교란 | time-varying confounding | 교란이면서 중간변수입니다 |
| 자연 실험 | natural experiment | 바깥 사정이 처치를 정한 자리입니다 |
| 이중차분 | difference-in-differences | 두 번 빼서 교란을 지웁니다 |
여기서 S7이 끝납니다. 자료를 얻고, 요약하고, 보고, 뽑는 일을 다뤘으며, 마지막으로 뽑은 적 없는 자료에 무엇을 물으면 안 되는지를 갈랐습니다.
다음은 178강부터 시작하는 S8 회귀분석입니다. S7이 자료를 믿을 수 있는지를 물었다면, S8은 그 자료에서 관계를 어떻게 적을 것인지를 묻습니다. 문제 3에서 계수의 뜻이 통제한 변수에 따라 달라지는 것을 봤는데, S8은 그 계수를 제대로 세우고 재는 법을 다룹니다.
그리고 177강의 경고가 S8 내내 따라옵니다. 회귀는 관계를 아주 정밀하게 적어 주는데, 그 관계가 인과인지는 회귀가 답하지 않습니다.
import numpy as np
rng = np.random.default_rng(20260914)
def pw(s, n):
k = n - sum(2 if ord(c) > 0x2FFF else 1 for c in str(s))
return str(s) + " " * max(k, 0)
def rw(s, n):
k = n - sum(2 if ord(c) > 0x2FFF else 1 for c in str(s))
return " " * max(k, 0) + str(s)
def ols(y, *xs):
A = np.stack([np.ones(len(y))] + list(xs), axis=1)
return np.linalg.lstsq(A, y, rcond=None)[0]
# --- 문제 1: 아무도 뽑지 않은 자료 --------------------------------------
print(" 173강부터 176강까지는 조사를 전제로 했습니다")
print(" %s %s %s" % (pw("조사 자료", 20), rw("관측 자료", 20), rw("무엇이 없는가", 22)))
for a, b, c in [("표집틀이 있음", "없음", "누가 빠졌는지 못 셈"),
("뽑힐 확률을 앎", "모름", "가중치를 못 만듦"),
("무응답을 셈", "안 옴은 안 보임", "응답률이 없음"),
("물어서 답을 받음", "행동이 기록됨", "묻지 않은 것은 없음"),
("설계가 정해짐", "쌓인 것을 씀", "설계효과를 모름")]:
print(" %s %s %s" % (pw(a, 20), rw(b, 20), rw(c, 22)))
print(" 173강 문제 1 의 항등식을 관측 자료에 그대로 써 봅니다")
print(" 치우침 = 상관 x sqrt((1-f)/f) x 표준편차 였습니다")
print(" %s %s" % (pw("항", 24), rw("관측 자료에서", 30)))
for a, b in [("응답과 값의 상관", "알 수 없습니다"),
("표본 비율 f", "모집단을 몰라 정의되지 않습니다"),
("모집단 표준편차", "모집단을 몰라 알 수 없습니다")]:
print(" %s %s" % (pw(a, 24), rw(b, 30)))
print(" 세 항을 다 모르므로 치우침의 크기를 계산할 수 없습니다")
print(" 크기를 모른다는 것이 작다는 뜻은 아닙니다")
print(" 그래도 자료가 크다는 이유로 안심하기 쉽습니다")
N1 = 2000000
X = rng.normal(50.0, 10.0, N1)
mu = float(X.mean())
print(" 모집단 200 만 명에서 값이 큰 사람이 더 자주 기록되는 상황입니다")
print(" %s %s %s %s" % (pw("기록될 확률의 기울기", 22), rw("기록된 사람 수", 16),
rw("기록된 평균", 14), rw("치우침", 12)))
for c in [0.0, 0.001, 0.003, 0.01]:
p = np.clip(0.2 + c * (X - mu), 0.0, 1.0)
R = rng.random(N1) < p
print(" %s %16d %14.4f %12.4f"
% (pw("%.3f" % c, 22), int(R.sum()), float(X[R].mean()),
float(X[R].mean() - mu)))
print(" 40 만 명이 기록되어도 치우침이 그대로 남습니다")
print(" 그리고 참 평균을 모르므로 치우쳤다는 사실 자체를 알 수 없습니다")
# --- 문제 2: 고르는 순간 생기는 관계 ------------------------------------
print(" 자료에 들어오는 조건이 두 변수 모두와 이어지면 없던 관계가 생깁니다")
N2 = 1000000
a2 = rng.normal(0, 1, N2)
b2 = rng.normal(0, 1, N2)
print(" 두 능력이 서로 무관합니다. 상관은 %.6f 입니다" % float(np.corrcoef(a2, b2)[0, 1]))
print(" %s %s %s %s" % (pw("자료에 들어오는 조건", 26), rw("남는 비율", 12),
rw("남은 것의 상관", 16), rw("부호", 8)))
for nm, m in [("전체", np.ones(N2, dtype=bool)),
("둘 중 하나라도 높으면", (a2 > 1.0) | (b2 > 1.0)),
("둘 다 높아야", (a2 > 0.0) & (b2 > 0.0)),
("합이 일정 범위", np.abs(a2 + b2) < 0.5)]:
r = float(np.corrcoef(a2[m], b2[m])[0, 1])
print(" %s %12.6f %16.6f %s"
% (pw(nm, 26), float(m.mean()), r,
rw("양수" if r > 0.01 else ("음수" if r < -0.01 else "없음"), 8)))
print(" 둘째와 넷째 줄에서 음의 상관이 생깁니다. 166강 문제 4 의 버크슨입니다")
print(" 셋째 줄은 관계가 생기지 않습니다. 두 조건이 서로 따로 걸려 있기 때문입니다")
print(" 조건이 두 변수를 한데 묶어야 관계가 만들어집니다. 걸러 냈다고 다 생기지는 않습니다")
print(" 값이 잘려 나가는 경우도 관계를 바꿉니다")
xs = rng.normal(0, 1, N2)
ys = 1.0 * xs + rng.normal(0, 1, N2)
print(" 참 기울기는 1 입니다")
print(" %s %s %s %s" % (pw("어떻게 잘리는가", 26), rw("남는 비율", 12),
rw("잰 기울기", 14), rw("참값 대비", 12)))
cases = [("자르지 않음", np.ones(N2, dtype=bool), ys),
("y 가 큰 것만 남김", ys > 1.0, ys),
("x 가 큰 것만 남김", xs > 1.0, ys)]
for nm, m, yv in cases:
bb = ols(yv[m], xs[m])[1]
print(" %s %12.6f %14.6f %12.6f"
% (pw(nm, 26), float(m.mean()), bb, bb / 1.0))
ycen = np.minimum(ys, 1.0)
bc = ols(ycen, xs)[1]
print(" %s %12.6f %14.6f %12.6f"
% (pw("y 를 1 에서 막음", 26), 1.0, bc, bc / 1.0))
print(" y 로 자르면 기울기가 크게 줄고 x 로 자르면 그대로입니다")
print(" 결과로 고르면 관계가 망가지고 원인으로 고르면 안 망가집니다")
print(" 막아 놓는 것도 기울기를 줄입니다. 값이 남아 있어도 참값이 아닙니다")
# --- 문제 3: 무엇을 통제해야 하는가 -------------------------------------
print(" 통제하면 좋은 변수와 나쁜 변수가 있습니다")
N3 = 1000000
print(" 참 인과효과는 세 경우 모두 1.0 입니다")
print(" %s %s %s %s" % (pw("구조", 26), rw("통제 안 함", 14),
rw("통제함", 14), rw("옳은 쪽", 12)))
u = rng.normal(0, 1, N3)
x1 = u + rng.normal(0, 1, N3)
y1 = 1.0 * x1 + 2.0 * u + rng.normal(0, 1, N3)
print(" %s %14.6f %14.6f %s"
% (pw("교란: z 가 x 와 y 로", 26), ols(y1, x1)[1], ols(y1, x1, u)[1],
rw("통제함", 12)))
x2 = rng.normal(0, 1, N3)
y2 = 1.0 * x2 + rng.normal(0, 1, N3)
c2 = x2 + y2 + rng.normal(0, 1, N3)
print(" %s %14.6f %14.6f %s"
% (pw("충돌부: x 와 y 가 c 로", 26), ols(y2, x2)[1], ols(y2, x2, c2)[1],
rw("통제 안 함", 12)))
x3 = rng.normal(0, 1, N3)
m3 = 1.0 * x3 + rng.normal(0, 1, N3)
y3 = 1.0 * m3 + rng.normal(0, 1, N3)
print(" %s %14.6f %14.6f %s"
% (pw("중간변수: x 가 m 거쳐 y 로", 26), ols(y3, x3)[1], ols(y3, x3, m3)[1],
rw("통제 안 함", 12)))
print(" 교란은 통제해야 하고 충돌부와 중간변수는 통제하면 안 됩니다")
print(" 충돌부를 통제하면 없던 관계가 생기고 중간변수를 통제하면 효과가 사라집니다")
print(" 변수를 많이 넣을수록 좋다는 생각이 여기서 깨집니다")
print(" %s %s" % (pw("변수의 성격", 26), rw("통제하면", 30)))
for a, b in [("공통 원인", "치우침이 없어집니다"),
("공통 결과", "없던 치우침이 생깁니다"),
("중간 경로", "효과의 일부가 사라집니다"),
("y 의 원인이고 x 와 무관", "정확도가 올라갑니다"),
("x 의 원인이고 y 와 무관", "정확도가 내려갑니다"),
("결과의 결과", "치우침이 생깁니다")]:
print(" %s %s" % (pw(a, 26), rw(b, 30)))
print(" 무엇이 무엇인지는 자료가 말해 주지 않습니다. 자료 밖의 지식이 정합니다")
print(" 166강 문제 4 의 결론 그대로입니다. 상관이 생기는 이유를 자료로 못 가립니다")
# --- 문제 4: 그래도 말하려면 --------------------------------------------
print(" 관측 자료로 인과를 말하려면 가정 셋이 필요합니다")
print(" %s %s %s" % (pw("가정", 16), rw("무슨 뜻인가", 30), rw("확인되는가", 14)))
for a, b, c in [("교환가능성", "통제 뒤에는 처치가 무작위와 같음", "안 됩니다"),
("양수성", "누구나 두 처치를 받을 수 있음", "됩니다"),
("일관성", "처치가 한 가지로 정의됨", "부분적으로")]:
print(" %s %s %s" % (pw(a, 16), rw(b, 30), rw(c, 14)))
print(" 첫째 줄이 핵심인데 확인할 수 없습니다. 관측 안 된 것을 봐야 하기 때문입니다")
print(" 175강의 가중치를 처치 확률로 바꾸면 성향 점수 가중이 됩니다")
N4 = 500000
zz = rng.normal(0, 1, N4)
uu = rng.normal(0, 1, N4)
ps = 1.0 / (1.0 + np.exp(-(0.8 * zz + 1.2 * uu)))
tt = (rng.random(N4) < ps).astype(float)
yy = 1.0 * tt + 1.0 * zz + 1.5 * uu + rng.normal(0, 1, N4)
print(" 참 효과는 1.0 이고 z 는 관측되며 u 는 관측되지 않습니다")
print(" %s %s %s" % (pw("무엇으로 보정하는가", 26), rw("추정 효과", 14),
rw("참값과의 차이", 16)))
e0 = float(yy[tt > 0.5].mean() - yy[tt < 0.5].mean())
print(" %s %14.6f %16.6f" % (pw("보정 없음", 26), e0, e0 - 1.0))
e1 = ols(yy, tt, zz)[1]
print(" %s %14.6f %16.6f" % (pw("관측된 z 만 통제", 26), e1, e1 - 1.0))
e2 = ols(yy, tt, zz, uu)[1]
print(" %s %14.6f %16.6f" % (pw("z 와 u 를 다 통제", 26), e2, e2 - 1.0))
edg = np.quantile(zz, np.linspace(0, 1, 51))
bi = np.clip(np.searchsorted(edg, zz, side="right") - 1, 0, 49)
num = np.bincount(bi, weights=tt, minlength=50)
den = np.bincount(bi, minlength=50)
psh = np.clip((num / np.maximum(den, 1))[bi], 0.02, 0.98)
w4 = np.where(tt > 0.5, 1.0 / psh, 1.0 / (1.0 - psh))
m1 = float((w4 * yy * tt).sum() / (w4 * tt).sum())
m0 = float((w4 * yy * (1 - tt)).sum() / (w4 * (1 - tt)).sum())
print(" %s %14.6f %16.6f" % (pw("z 로 성향 점수 가중", 26), m1 - m0, m1 - m0 - 1.0))
print(" 성향 점수는 z 를 50 개 구간으로 나눠 구간마다의 처치 비율로 추정했습니다")
print(" z 만 쓰는 두 방법이 비슷한 답을 냅니다. 방법이 아니라 무엇을 관측했는지가 정합니다")
print(" 관측된 z 로 아무리 잘 보정해도 u 가 남긴 치우침은 그대로입니다")
print(" 얼마나 강한 교란이면 결론이 뒤집히는지는 계산할 수 있습니다")
print(" 참 효과를 0 으로 두고 u 만 넣었을 때 z 로 보정한 값이 얼마가 되는지 봅니다")
print(" 그 값이 %.4f 에 이르면 관측된 결과를 u 하나로 다 설명할 수 있습니다" % e1)
print(" 아래 두 열은 관측 안 된 u 가 각각 y 와 처치에 미치는 크기입니다")
print(" %s %s %s %s" % (pw("y 에 미치는 크기", 18), rw("처치에 미치는 크기", 20),
rw("참 효과 0 인데 나오는 값", 24), rw("다 설명하는가", 16)))
for bu in [0.5, 1.0, 2.0, 3.0]:
for au in [0.6, 1.2, 2.0]:
pu = 1.0 / (1.0 + np.exp(-(0.8 * zz + au * uu)))
tu = (rng.random(N4) < pu).astype(float)
y0 = 1.0 * zz + bu * uu + rng.normal(0, 1, N4)
fake = ols(y0, tu, zz)[1]
print(" %s %20.1f %24.6f %s"
% (pw("%.1f" % bu, 18), au, fake,
rw("예" if fake >= e1 else "아니오", 16)))
print(" 약한 교란으로는 설명이 안 되고 아주 강한 교란이면 전부 설명됩니다")
print(" 그 강도가 그럴듯하면 결론을 못 믿고 터무니없으면 조금 더 믿습니다")
print(" 이것이 민감도 분석이며 증명이 아니라 판단의 재료입니다")
# --- 문제 5: 시간과 되먹임 ----------------------------------------------
print(" 관측 자료는 흐르는 중에 만들어집니다. 재는 행위가 대상을 바꿉니다")
print(" 지표를 목표로 삼으면 지표가 목표를 못 재게 됩니다")
N5 = 200000
skill = rng.normal(0, 1, N5)
noise = rng.normal(0, 1, N5)
print(" 참 실력과 지표가 처음에는 상관 %.4f 입니다"
% float(np.corrcoef(skill, skill + noise)[0, 1]))
print(" %s %s %s %s" % (pw("지표를 얼마나 겨냥하는가", 26), rw("지표의 평균", 14),
rw("참 실력의 평균", 16), rw("둘의 상관", 12)))
for g in [0.0, 1.0, 3.0, 6.0]:
gaming = g / (1.0 + np.exp(skill))
metric = skill + noise + gaming
print(" %s %14.4f %16.4f %12.6f"
% (pw("%.1f" % g, 26), float(metric.mean()), float(skill.mean()),
float(np.corrcoef(metric, skill)[0, 1])))
print(" 실력이 낮은 사람일수록 지표를 더 겨냥한다고 두었습니다")
print(" 지표는 오르는데 참 실력은 그대로이고 둘의 상관이 무너집니다")
print(" 이것을 굿하트 법칙이라 합니다. 잰다는 사실이 재는 대상을 바꿉니다")
print(" 예측이 행동을 바꾸면 예측의 검증도 무너집니다")
print(" %s %s" % (pw("상황", 24), rw("무슨 일이 일어나는가", 32)))
for a, b in [("고장을 예측해 미리 고침", "예측이 맞았는데 고장이 안 남"),
("이탈을 예측해 혜택을 줌", "예측한 사람이 안 떠남"),
("수요를 예측해 재고를 늘림", "늘린 만큼 팔려 예측이 맞아 보임"),
("위험을 예측해 거절함", "거절한 사람의 결과를 영영 모름")]:
print(" %s %s" % (pw(a, 24), rw(b, 32)))
print(" 마지막 줄이 가장 나쁩니다. 172강 문제 4 의 빠진 분모가 계속 자랍니다")
print(" 시간이 흐르면 통제해야 할 것도 바뀝니다")
print(" %s %s" % (pw("시점", 18), rw("무엇이 문제인가", 32)))
for a, b in [("t 시점 처치", "t 이전의 교란을 통제해야 합니다"),
("t 시점 교란", "이전 처치의 결과이기도 합니다"),
("통제하면", "중간변수를 통제한 것이 됩니다"),
("통제 안 하면", "교란을 안 통제한 것이 됩니다")]:
print(" %s %s" % (pw(a, 18), rw(b, 32)))
print(" 같은 변수가 교란이면서 중간변수입니다. 문제 3 의 규칙으로는 답이 없습니다")
print(" 시간에 따라 바뀌는 처치에는 따로 만든 방법이 필요합니다")
print(" S7 이 여기서 끝납니다. 자료로 답할 수 있는 것과 없는 것을 가르는 것이 마지막입니다")
print(" %s %s" % (pw("물음", 24), rw("관측 자료로", 24)))
for a, b in [("얼마나 되는가", "표집을 알면 답합니다"),
("무엇과 무엇이 함께 가는가", "답합니다"),
("이것을 바꾸면 저것이 바뀌는가", "가정 아래에서만"),
("왜 그런가", "자료 밖의 지식이 필요합니다")]:
print(" %s %s" % (pw(a, 24), rw(b, 24)))
# 173강부터 176강까지는 조사를 전제로 했습니다
# 조사 자료 관측 자료 무엇이 없는가
# 표집틀이 있음 없음 누가 빠졌는지 못 셈
# 뽑힐 확률을 앎 모름 가중치를 못 만듦
# 무응답을 셈 안 옴은 안 보임 응답률이 없음
# 물어서 답을 받음 행동이 기록됨 묻지 않은 것은 없음
# 설계가 정해짐 쌓인 것을 씀 설계효과를 모름
# 173강 문제 1 의 항등식을 관측 자료에 그대로 써 봅니다
# 치우침 = 상관 x sqrt((1-f)/f) x 표준편차 였습니다
# 항 관측 자료에서
# 응답과 값의 상관 알 수 없습니다
# 표본 비율 f 모집단을 몰라 정의되지 않습니다
# 모집단 표준편차 모집단을 몰라 알 수 없습니다
# 세 항을 다 모르므로 치우침의 크기를 계산할 수 없습니다
# 크기를 모른다는 것이 작다는 뜻은 아닙니다
# 그래도 자료가 크다는 이유로 안심하기 쉽습니다
# 모집단 200 만 명에서 값이 큰 사람이 더 자주 기록되는 상황입니다
# 기록될 확률의 기울기 기록된 사람 수 기록된 평균 치우침
# 0.000 399785 49.9862 -0.0106
# 0.001 400681 50.4928 0.4960
# 0.003 401214 51.5011 1.5043
# 0.010 402288 54.8753 4.8785
# 40 만 명이 기록되어도 치우침이 그대로 남습니다
# 그리고 참 평균을 모르므로 치우쳤다는 사실 자체를 알 수 없습니다
# 자료에 들어오는 조건이 두 변수 모두와 이어지면 없던 관계가 생깁니다
# 두 능력이 서로 무관합니다. 상관은 -0.000596 입니다
# 자료에 들어오는 조건 남는 비율 남은 것의 상관 부호
# 전체 1.000000 -0.000596 없음
# 둘 중 하나라도 높으면 0.292969 -0.566812 음수
# 둘 다 높아야 0.249731 -0.001687 없음
# 합이 일정 범위 0.276436 -0.921567 음수
# 둘째와 넷째 줄에서 음의 상관이 생깁니다. 166강 문제 4 의 버크슨입니다
# 셋째 줄은 관계가 생기지 않습니다. 두 조건이 서로 따로 걸려 있기 때문입니다
# 조건이 두 변수를 한데 묶어야 관계가 만들어집니다. 걸러 냈다고 다 생기지는 않습니다
# 값이 잘려 나가는 경우도 관계를 바꿉니다
# 참 기울기는 1 입니다
# 어떻게 잘리는가 남는 비율 잰 기울기 참값 대비
# 자르지 않음 1.000000 0.999900 0.999900
# y 가 큰 것만 남김 0.239880 0.382336 0.382336
# x 가 큰 것만 남김 0.159073 1.000879 1.000879
# y 를 1 에서 막음 1.000000 0.759835 0.759835
# y 로 자르면 기울기가 크게 줄고 x 로 자르면 그대로입니다
# 결과로 고르면 관계가 망가지고 원인으로 고르면 안 망가집니다
# 막아 놓는 것도 기울기를 줄입니다. 값이 남아 있어도 참값이 아닙니다
# 통제하면 좋은 변수와 나쁜 변수가 있습니다
# 참 인과효과는 세 경우 모두 1.0 입니다
# 구조 통제 안 함 통제함 옳은 쪽
# 교란: z 가 x 와 y 로 1.996633 1.000214 통제함
# 충돌부: x 와 y 가 c 로 0.999923 -0.002201 통제 안 함
# 중간변수: x 가 m 거쳐 y 로 1.001184 0.001678 통제 안 함
# 교란은 통제해야 하고 충돌부와 중간변수는 통제하면 안 됩니다
# 충돌부를 통제하면 없던 관계가 생기고 중간변수를 통제하면 효과가 사라집니다
# 변수를 많이 넣을수록 좋다는 생각이 여기서 깨집니다
# 변수의 성격 통제하면
# 공통 원인 치우침이 없어집니다
# 공통 결과 없던 치우침이 생깁니다
# 중간 경로 효과의 일부가 사라집니다
# y 의 원인이고 x 와 무관 정확도가 올라갑니다
# x 의 원인이고 y 와 무관 정확도가 내려갑니다
# 결과의 결과 치우침이 생깁니다
# 무엇이 무엇인지는 자료가 말해 주지 않습니다. 자료 밖의 지식이 정합니다
# 166강 문제 4 의 결론 그대로입니다. 상관이 생기는 이유를 자료로 못 가립니다
# 관측 자료로 인과를 말하려면 가정 셋이 필요합니다
# 가정 무슨 뜻인가 확인되는가
# 교환가능성 통제 뒤에는 처치가 무작위와 같음 안 됩니다
# 양수성 누구나 두 처치를 받을 수 있음 됩니다
# 일관성 처치가 한 가지로 정의됨 부분적으로
# 첫째 줄이 핵심인데 확인할 수 없습니다. 관측 안 된 것을 봐야 하기 때문입니다
# 175강의 가중치를 처치 확률로 바꾸면 성향 점수 가중이 됩니다
# 참 효과는 1.0 이고 z 는 관측되며 u 는 관측되지 않습니다
# 무엇으로 보정하는가 추정 효과 참값과의 차이
# 보정 없음 2.871225 1.871225
# 관측된 z 만 통제 2.413542 1.413542
# z 와 u 를 다 통제 1.003268 0.003268
# z 로 성향 점수 가중 2.418798 1.418798
# 성향 점수는 z 를 50 개 구간으로 나눠 구간마다의 처치 비율로 추정했습니다
# z 만 쓰는 두 방법이 비슷한 답을 냅니다. 방법이 아니라 무엇을 관측했는지가 정합니다
# 관측된 z 로 아무리 잘 보정해도 u 가 남긴 치우침은 그대로입니다
# 얼마나 강한 교란이면 결론이 뒤집히는지는 계산할 수 있습니다
# 참 효과를 0 으로 두고 u 만 넣었을 때 z 로 보정한 값이 얼마가 되는지 봅니다
# 그 값이 2.4135 에 이르면 관측된 결과를 u 하나로 다 설명할 수 있습니다
# 아래 두 열은 관측 안 된 u 가 각각 y 와 처치에 미치는 크기입니다
# y 에 미치는 크기 처치에 미치는 크기 참 효과 0 인데 나오는 값 다 설명하는가
# 0.5 0.6 0.278014 아니오
# 0.5 1.2 0.475277 아니오
# 0.5 2.0 0.610505 아니오
# 1.0 0.6 0.552452 아니오
# 1.0 1.2 0.941711 아니오
# 1.0 2.0 1.215952 아니오
# 2.0 0.6 1.130621 아니오
# 2.0 1.2 1.875724 아니오
# 2.0 2.0 2.451656 예
# 3.0 0.6 1.656224 아니오
# 3.0 1.2 2.822437 예
# 3.0 2.0 3.662412 예
# 약한 교란으로는 설명이 안 되고 아주 강한 교란이면 전부 설명됩니다
# 그 강도가 그럴듯하면 결론을 못 믿고 터무니없으면 조금 더 믿습니다
# 이것이 민감도 분석이며 증명이 아니라 판단의 재료입니다
# 관측 자료는 흐르는 중에 만들어집니다. 재는 행위가 대상을 바꿉니다
# 지표를 목표로 삼으면 지표가 목표를 못 재게 됩니다
# 참 실력과 지표가 처음에는 상관 0.7059 입니다
# 지표를 얼마나 겨냥하는가 지표의 평균 참 실력의 평균 둘의 상관
# 0.0 -0.0020 -0.0001 0.705865
# 1.0 0.4979 -0.0001 0.619597
# 3.0 1.4976 -0.0001 0.350950
# 6.0 2.9972 -0.0001 -0.234791
# 실력이 낮은 사람일수록 지표를 더 겨냥한다고 두었습니다
# 지표는 오르는데 참 실력은 그대로이고 둘의 상관이 무너집니다
# 이것을 굿하트 법칙이라 합니다. 잰다는 사실이 재는 대상을 바꿉니다
# 예측이 행동을 바꾸면 예측의 검증도 무너집니다
# 상황 무슨 일이 일어나는가
# 고장을 예측해 미리 고침 예측이 맞았는데 고장이 안 남
# 이탈을 예측해 혜택을 줌 예측한 사람이 안 떠남
# 수요를 예측해 재고를 늘림 늘린 만큼 팔려 예측이 맞아 보임
# 위험을 예측해 거절함 거절한 사람의 결과를 영영 모름
# 마지막 줄이 가장 나쁩니다. 172강 문제 4 의 빠진 분모가 계속 자랍니다
# 시간이 흐르면 통제해야 할 것도 바뀝니다
# 시점 무엇이 문제인가
# t 시점 처치 t 이전의 교란을 통제해야 합니다
# t 시점 교란 이전 처치의 결과이기도 합니다
# 통제하면 중간변수를 통제한 것이 됩니다
# 통제 안 하면 교란을 안 통제한 것이 됩니다
# 같은 변수가 교란이면서 중간변수입니다. 문제 3 의 규칙으로는 답이 없습니다
# 시간에 따라 바뀌는 처치에는 따로 만든 방법이 필요합니다
# S7 이 여기서 끝납니다. 자료로 답할 수 있는 것과 없는 것을 가르는 것이 마지막입니다
# 물음 관측 자료로
# 얼마나 되는가 표집을 알면 답합니다
# 무엇과 무엇이 함께 가는가 답합니다
# 이것을 바꾸면 저것이 바뀌는가 가정 아래에서만
# 왜 그런가 자료 밖의 지식이 필요합니다