163강부터 165강까지가 한 변수를 요약하는 일이었습니다. 이제 두 변수 사이를 요약합니다.
요약이 버리는 일이라는 성격은 그대로입니다. 두 변수의 관계는 산점도 한 장에 담긴 것 전부인데, 그것을 숫자 하나로 줄이면 대부분이 사라집니다.
이 강의는 무엇이 사라지는지를 다룹니다.
| 물음 | 답 |
|---|---|
| 상관이 이면 무관한가 | 아닙니다. 완전히 결정된 관계도 이 됩니다 |
| 상관이 크면 관계가 강한가 | 아닙니다. 퍼센트의 점이 혼자 만들 수 있습니다 |
| 상관이 있으면 원인이 있는가 | 아닙니다. 이유가 셋이고 그중 둘은 원인이 아닙니다 |
| 상관을 재는 방법이 하나인가 | 아닙니다. 값을 쓰는 것과 순위를 쓰는 것이 다릅니다 |
넷째 줄이 165강과 이어집니다. 분위수가 순위로 모양을 쟀듯, 순위로 관계를 재는 상관이 따로 있으며 단조변환에 흔들리지 않습니다.
그리고 셋째 줄이 이 강의에서 가장 비싼 항목입니다. 상관은 함께 움직인다는 사실만 말하고, 왜 그런지는 자료 밖에 있습니다.
문제. 두 변수가 함께 움직이는 정도를 재는 값을 만듭니다.
(1) 공분산을 계산하고 단위를 바꿔 보세요.
(2) 을 유도하세요.
(3) 등호가 성립하는 경우를 확인하세요.
생각의 실마리. 두 변수가 함께 크다면 각자의 평균에서 벗어난 방향이 같을 것입니다. 그러면 두 편차를 곱해서 더하면 부호가 남습니다. 163강 문제 1에서 편차를 제곱해 퍼짐을 잰 것과 같은 발상이며, 한쪽을 다른 쪽으로 바꾼 것입니다.
풀이. (1) 표본 만 개입니다.
| 설정 | 공분산 | 상관 | 이론 상관 |
|---|---|---|---|
| 독립 | |||
| 약하게 같이 | |||
| 강하게 같이 | |||
| 반대로 |
그런데 공분산은 단위에 딸려 갑니다.
| 단위를 바꾸면 | 공분산 | 상관 |
|---|---|---|
| 그대로 | ||
| 를 배 | ||
| 둘 다 배 |
미터를 밀리미터로 바꾸면 공분산이 배가 됩니다. 그래서 값 자체로는 강한지 약한지 말할 수 없습니다.
각자의 표준편차로 나누면 단위가 사라집니다. 상관은 공분산을 표준화한 것입니다.
(2) 절댓값이 을 넘지 못하는 것은 코시-슈바르츠 부등식입니다.
우변이 정확히 입니다. 양변을 그것으로 나누면 입니다.
(3) 등호는 두 편차가 비례할 때만 성립합니다.
| 관계 | 상관 | 정확히 인가 |
|---|---|---|
| 참 | ||
| 참 | ||
| 에 잡음 | 거짓 |
상관이 정확히 이면 모든 점이 한 직선 위에 있습니다.
기울기의 크기는 상관에 담기지 않습니다. 와 의 상관이 둘 다 입니다. 담기는 것은 부호와 직선에 얼마나 붙어 있는지뿐입니다.
이 문제에서 배우는 것. 상관은 관계의 세기가 아니라 직선성의 정도를 잽니다. "가 늘면 가 얼마나 느는가"는 회귀계수가 답하고, 상관은 그 직선에서 점들이 얼마나 흩어져 있는가만 답합니다. 두 질문을 섞으면 "상관이 이니 영향이 크다"처럼 답할 수 없는 것을 답한 문장이 나옵니다.
바로 확인 1.
확인 1-1. 상관을 공분산으로 쓰세요.
답. 이며 표준화한 공분산입니다.
확인 1-2. 의 근거를 쓰세요.
답. 코시-슈바르츠 부등식이며 등호는 두 편차가 비례할 때입니다.
확인 1-3. 상관에 담기지 않는 것을 쓰세요.
답. 기울기의 크기이며 와 의 상관이 둘 다 입니다.
문제. 상관이 놓치는 관계를 만듭니다.
(1) 상관이 인데 완전히 결정된 관계를 만드세요.
(2) 상관이 거의 같은데 관계가 전혀 다른 자료 셋을 비교하세요.
생각의 실마리. 문제 1에서 상관이 직선성을 잰다고 했습니다. 그러면 직선이 아닌 관계는 어떻게 될지 생각해 봅니다. 특히 좌우가 대칭인 관계라면 한쪽의 기여가 다른 쪽과 상쇄될 것입니다.
풀이. (1) 를 과 사이 균등으로 두고 으로 둡니다.
| 맞히는 방법 | 와 의 상관 | R^ |
|---|---|---|
| 차식으로 맞히면 | ||
| 직선으로 맞히면 |
를 알면 가 완전히 정해지는데 상관은 입니다.
대칭이라 이고 이므로 정확히 입니다. 가 일 때와 일 때 가 똑같이 크므로 방향이 상쇄됩니다.
둘째 줄이 요점입니다. 직선으로 맞히면 가 이고 차식으로 맞히면 입니다. 상관이 이라는 것은 "직선으로는 설명이 안 된다"는 뜻이지 "무관하다"는 뜻이 아닙니다.
(2) 상관이 비슷한 세 자료를 봅니다.
| 자료 | 상관 | 스피어만 | 상위 퍼센트를 빼면 |
|---|---|---|---|
| 고르게 흩어진 직선 | |||
| 덩어리 둘 | |||
| 휘어진 곡선 |
세 상관이 에서 사이로 거의 같습니다. 그런데 나머지 두 열이 전혀 다릅니다.
| 자료 | 무슨 일이 일어나는가 |
|---|---|
| 고르게 흩어진 직선 | 무엇을 빼도 거의 그대로입니다 |
| 덩어리 둘 | 상위 퍼센트를 빼면 로 사라집니다 |
| 휘어진 곡선 | 순위로 보면 입니다 |
덩어리 둘인 자료는 전체 상관을 퍼센트의 점들이 혼자 만들고 있었습니다. 나머지 퍼센트 안에는 아무 관계가 없습니다.
휘어진 곡선은 반대입니다. 피어슨이 인데 관계는 완전히 단조라 스피어만이 정확히 입니다. 피어슨이 놓친 것을 순위가 잡았습니다.
이 문제에서 배우는 것. 상관 하나로는 관계의 모양을 알 수 없습니다. 163강 문제 4의 앤스컴 자료가 요약값 전부를 공유했던 것과 같은 이야기이며, 그때의 결론도 같습니다. 그림을 봐야 합니다. 그리고 그림을 볼 수 없는 상황이라면 적어도 여러 척도를 나란히 보고 서로 크게 어긋나는지를 확인해야 합니다. 위 표에서 피어슨과 스피어만이 와 로 어긋난 것이 곧 경보였습니다.
바로 확인 2.
확인 2-1. 상관이 인데 완전히 결정된 관계의 예를 쓰세요.
답. 가 과 사이 균등이고 이면 상관이 입니다.
확인 2-2. 검산에서 덩어리 둘인 자료의 상관 변화를 쓰세요.
답. 이 상위 퍼센트를 빼면 로 사라집니다.
확인 2-3. 피어슨과 스피어만이 크게 어긋나면 무엇을 뜻하는지 쓰세요.
답. 관계가 직선이 아니거나 소수의 점이 상관을 만들고 있다는 신호입니다.
문제. 값 대신 순위로 상관을 잽니다.
(1) 단조변환을 씌워 세 척도를 비교하세요.
(2) 이상치를 넣어 비교하세요.
(3) 이변량 정규에서 셋 사이의 이론적 관계를 확인하세요.
생각의 실마리. 165강에서 분위수가 순서만 보므로 단조변환에 따라간다고 했습니다. 상관도 순위로 만들면 같은 성질을 얻을 것입니다.
풀이. (1)(2) 참 상관 인 이변량 정규에서 시작합니다.
| 자료 | 피어슨 | 스피어만 | 켄달 타우 |
|---|---|---|---|
| 원자료 | |||
| 에 지수를 씌움 | |||
| 둘 다 세제곱 | |||
| 점 개를 반대로 옮김 |
스피어만은 세 변환에서 소수점 여섯 자리까지 같습니다. 지수도 세제곱도 순서를 바꾸지 않으므로 순위가 그대로입니다.
피어슨은 에서 로 떨어집니다. 관계는 하나도 안 바뀌었는데 값의 척도가 바뀌었기 때문입니다.
넷째 줄이 강건함을 보입니다. 만 개 중 단 개를 반대 방향으로 옮겼는데 피어슨이 에서 로 반토막 났습니다. 순위 상관 둘은 거의 그대로입니다.
(3) 이변량 정규에서는 셋의 관계가 정확히 알려져 있습니다.
| 참 상관 | 스피어만 이론 | 스피어만 수치 | 켄달 이론 | 켄달 수치 |
|---|---|---|---|---|
순위 상관은 언제나 피어슨보다 쪽으로 조금 당겨져 있습니다. 특히 켄달은 훨씬 작습니다.
그래서 세 값을 같은 잣대로 읽으면 안 됩니다. 켄달 는 피어슨 보다 강한 관계를 뜻하며, 위 식으로 환산해야 비교됩니다.
켄달은 뜻이 더 직관적입니다. 두 점을 아무렇게나 골랐을 때 순서가 같을 확률에서 다를 확률을 뺀 값입니다.
이 문제에서 배우는 것. 순위 상관은 단조변환에 불변이고 이상치에 강하며, 그 대가로 값의 크기 정보를 버립니다. 163강 문제 1의 맞바꿈이 그대로 되풀이됩니다. 그래서 어느 쪽이 옳은지가 아니라 무엇을 묻는지가 선택을 정합니다. 관계가 직선이라고 믿을 근거가 있고 값의 크기가 뜻이 있으면 피어슨이 낫고, 단조이기만 하면 되거나 자료가 순서 척도이면 순위 상관을 씁니다. 158강 문제 3의 측정 척도가 여기서 다시 나옵니다.
바로 확인 3.
확인 3-1. 스피어만 상관이 무엇인지 쓰세요.
답. 값을 순위로 바꾼 뒤 계산한 피어슨 상관입니다.
확인 3-2. 검산에서 점 개를 옮겼을 때 세 척도의 변화를 쓰세요.
답. 피어슨은 에서 로 떨어지고 순위 상관 둘은 거의 그대로입니다.
확인 3-3. 이변량 정규에서 켄달과 의 관계를 쓰세요.
답. 입니다.
문제. 두 변수가 함께 움직이는 이유를 나눕니다.
(1) 숨은 공통 원인이 있는 경우를 만드세요.
(2) 공통 결과로 걸러 낸 경우를 만드세요.
(3) 묶는 방식이 바뀌는 경우를 만드세요.
생각의 실마리. 와 가 함께 움직인다면 가 의 원인일 수 있습니다. 그런데 그것만이 아닙니다. 셋째 변수가 둘을 함께 움직일 수도 있고, 자료를 어떻게 골랐는지가 관계를 만들어 낼 수도 있습니다.
풀이. (1) 가 와 를 함께 움직이게 둡니다. 와 사이에는 아무 연결도 없습니다.
| 무엇을 재는가 | 상관 |
|---|---|
| 와 의 상관 | |
| 를 뺀 뒤의 상관 |
상관이 나 되는데 서로 원인이 아닙니다. 로 각각을 회귀해 남은 부분끼리 재면 입니다.
이것이 교란입니다. 아이스크림 판매와 익사 사고가 함께 오르는 것은 여름이라는 셋째 변수 때문입니다.
(2) 이번에는 반대로, 원래 무관한 두 변수에 상관을 만들어 냅니다.
두 능력이 서로 무관한데 둘 중 하나만 좋아도 뽑는다고 합니다.
| 대상 | 상관 | 인원 |
|---|---|---|
| 전체 | ||
| 뽑힌 사람만 |
뽑힌 사람들 안에서는 상관이 입니다. 한쪽이 낮은데도 뽑혔다면 다른 쪽이 높았어야 하기 때문입니다.
이것이 버크슨의 역설이며 조건을 걸어 만든 가짜 관계입니다. 자료를 어떻게 모았는지가 관계를 만들어 냈으므로, 자료 안에서는 절대 알아낼 수 없습니다.
(3) 셋째는 묶는 방식이 바뀌는 경우입니다.
| 무엇을 보는가 | 상관 |
|---|---|
| 전체 | |
| 집단 안에서 | |
| 집단 안에서 | |
| 집단 안에서 |
전체는 인데 집단마다 보면 전부 입니다. 부호가 뒤집힙니다.
153강 문제 5의 심슨의 역설이 상관에서 나타난 모습이며, 165강 심화 4에서 본 가중평균의 문제와 같은 뿌리입니다.
이 문제에서 배우는 것. 상관은 함께 움직인다는 사실만 말합니다. 이유가 셋인데 자료는 그중 어느 것인지 말해 주지 않으며, 셋을 가르는 것은 자료가 아니라 자료 밖의 지식입니다. 그래서 "상관은 인과가 아니다"라는 말은 경고가 아니라 정의입니다. 무엇을 통제해야 하는지, 표본이 어떻게 뽑혔는지, 어떤 집단이 섞여 있는지를 알아야 하며, 177강이 그 문제를 정면으로 다룹니다.
바로 확인 4.
확인 4-1. 상관이 생기는 세 가지 이유를 쓰세요.
답. 인과 관계, 숨은 공통 원인, 자료를 고른 방식이나 집단이 섞인 방식입니다.
확인 4-2. 검산에서 버크슨의 역설이 만든 상관을 쓰세요.
답. 전체가 인데 뽑힌 사람만 보면 입니다.
확인 4-3. 심슨의 역설이 상관에서 나타난 모습을 검산 값으로 쓰세요.
답. 전체는 인데 세 집단 안에서는 모두 근처입니다.
문제. 변수가 여럿일 때의 문제를 봅니다.
(1) 편상관을 계산하세요.
(2) 설명변수가 겹치면 무엇이 무너지는지 보세요.
(3) 표본 상관의 불확실성을 재세요.
생각의 실마리. 문제 4의 첫째 경우를 일반적인 도구로 만든 것이 편상관입니다. 셋째 변수의 영향을 뺀 뒤 남은 관계를 재는 것인데, 그것을 회귀 없이 상관행렬만으로 계산할 수 있습니다.
풀이. (1) 와 가 모두 에서 나온 자료입니다.
| 상관 | |||
|---|---|---|---|
를 통제한 편상관이 입니다. 둘씩 본 상관은 인데 셋을 함께 보면 관계가 없습니다.
(2) 설명변수 둘이 겹치면 무엇이 무너지는지 봅니다.
| 두 설명변수의 상관 | 고윳값 | 조건수 | VIF |
|---|---|---|---|
작은 고윳값이 에 가까워집니다. 161강 문제 2에서 쌍별 제거가 만든 음수 고윳값과 같은 자리를 보고 있습니다.
실제로 회귀계수를 추정해 봅니다. 참값은 둘 다 입니다.
| 두 설명변수의 상관 | 계수 추정의 표준편차 | 상관 대비 |
|---|---|---|
상관 이면 계수의 흔들림이 배가 되고 이론값과 맞습니다.
그런데 예측은 멀쩡합니다. 두 변수가 거의 같으므로 합쳐서 얼마나 기여하는지는 잘 추정되고, 각각이 얼마인지만 갈라지지 않습니다. 예측과 해석은 다른 일이며, 다중공선성은 뒤쪽만 무너뜨립니다.
(3) 표본 상관의 불확실성은 피셔 변환으로 잽니다.
| 참 상관 | 표본 크기 | 의 표준편차 수치 | 1/\sqrt |
|---|---|---|---|
참 상관이 얼마든 변환 뒤의 표준오차가 같습니다.
변환 전에는 그렇지 않습니다. 이 에 가까우면 을 넘을 수 없어 분포가 한쪽으로 눌리는데, 변환이 그 벽을 무한대로 밀어냅니다. 그래서 구간을 만들 때는 에서 만들고 되돌립니다.
이 문제에서 배우는 것. 둘씩 본 상관과 여럿을 함께 본 관계는 다릅니다. 상관행렬을 아무리 들여다봐도 편상관을 계산하기 전에는 알 수 없고, 변수가 늘수록 둘씩 보는 것의 정보 가치가 떨어집니다. 그리고 겹치는 변수를 그대로 넣으면 계수가 흔들리는데, 그 흔들림이 예측 성능에는 나타나지 않으므로 성능만 보고 있으면 알아채지 못합니다. 162강 문제 5의 검사 이야기와 같습니다. 보지 않는 것은 없는 것이 아닙니다.
바로 확인 5.
확인 5-1. 편상관의 식을 쓰세요.
답. 입니다.
확인 5-2. 검산에서 상관 일 때 계수의 흔들림이 몇 배인지 쓰세요.
답. 배이며 과 맞습니다.
확인 5-3. 피셔 변환의 식과 표준오차를 쓰세요.
답. 이고 표준오차가 입니다.
| 척도 | 무엇을 재는가 | 단조변환에 |
|---|---|---|
| 공분산 | 함께 움직이는 정도 | 안 따라갑니다 |
| 피어슨 | 직선성 | 안 따라갑니다 |
| 스피어만 \rho_ | 순위의 직선성 | 따라갑니다 |
| 켄달 | 순서가 같을 확률의 차 | 따라갑니다 |
| 이변량 정규에서 | 식 | |
|---|---|---|
| 스피어만 | ||
| 켄달 |
| 상관이 생기는 이유 | 예 | 어떻게 가리는가 |
|---|---|---|
| 인과 | 가 를 바꿉니다 | 개입이나 설계 |
| 교란 | 가 둘을 함께 움직입니다 | 를 통제합니다 |
| 선택 | 조건을 걸어 걸러 냈습니다 | 표집 과정을 압니다 |
| 집단 섞임 | 심슨의 역설 | 집단을 나눠 봅니다 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 상관 을 무관으로 읽습니다 | 이 반례입니다 |
| 상관의 크기를 영향의 크기로 읽습니다 | 기울기는 회귀계수가 답합니다 |
| 공분산 값으로 세기를 말합니다 | 단위에 딸려 갑니다 |
| 피어슨과 스피어만을 같은 잣대로 봅니다 | 정규에서도 과 입니다 |
| 상관에서 인과를 읽습니다 | 이유가 셋이고 자료는 못 가릅니다 |
| 둘씩 본 상관으로 다변량을 판단합니다 | 편상관이 다를 수 있습니다 |
| 겹치는 설명변수의 계수를 해석합니다 | 흔들림이 배까지 커집니다 |
문제 6. 공분산과 상관의 관계를 쓰세요.
답. 상관은 공분산을 두 표준편차로 나눈 것이라 단위가 없습니다.
문제 7. 검산에서 단위를 배 했을 때 공분산과 상관을 쓰세요.
답. 공분산은 에서 가 되고 상관은 으로 그대로입니다.
문제 8. 의 근거와 등호 조건을 쓰세요.
답. 코시-슈바르츠 부등식이며 모든 점이 한 직선 위에 있을 때 등호입니다.
문제 9. 상관에 담기지 않는 것을 쓰세요.
답. 기울기의 크기입니다.
문제 10. 상관이 인데 완전히 결정된 관계의 예를 쓰세요.
답. 가 대칭 분포이고 이면 입니다.
문제 11. 검산에서 덩어리 둘인 자료의 상관 변화를 쓰세요.
답. 이 상위 퍼센트를 빼면 가 됩니다.
문제 12. 스피어만이 단조변환에 불변인 이유를 쓰세요.
답. 순위만 쓰는데 단조변환이 순위를 바꾸지 않기 때문입니다.
문제 13. 검산에서 점 개를 옮겼을 때 세 척도를 쓰세요.
답. 피어슨 , 스피어만 , 켄달 입니다.
문제 14. 이변량 정규에서 스피어만과 켄달의 식을 쓰세요.
답. 와 입니다.
문제 15. 검산에서 교란변수를 뺀 뒤의 상관을 쓰세요.
답. 이 이 됩니다.
문제 16. 버크슨의 역설을 검산 값으로 설명하세요.
답. 무관한 두 능력에서 하나라도 좋으면 뽑으면 뽑힌 사람 안에서 상관이 이 됩니다.
문제 17. 편상관의 식을 쓰세요.
답. 입니다.
문제 18. 검산에서 상관 인 설명변수의 VIF와 계수 흔들림을 쓰세요.
답. VIF가 이고 흔들림이 배로 과 맞습니다.
심화 1. 상관 계수와 회귀계수의 관계를 정리하세요.
문제 1에서 상관에 기울기가 담기지 않는다고 했습니다. 정확히 얼마나 다른지를 봅니다.
상관은 기울기에서 척도를 뺀 것입니다. 두 변수를 모두 표준화하면 이라 기울기가 곧 상관입니다.
여기서 평균으로의 회귀가 나옵니다. 이면 표준화한 척도에서 기울기의 절댓값이 보다 작으므로, 가 평균에서 표준편차 떨어져 있으면 의 예측은 표준편차만 떨어집니다.
| 의 위치 | 일 때 의 예측 |
|---|---|
이것을 능력이 줄어드는 현상으로 읽으면 안 됩니다. 반대로 에서 를 예측해도 똑같이 안으로 당겨지므로, 한 방향의 이야기가 아니라 상관이 이 아니라는 사실의 산술적 결과입니다.
회귀라는 이름이 여기서 왔습니다. 골턴이 부모와 자식의 키에서 이 현상을 보고 "평균으로 돌아간다"고 부른 것이며, 지금 회귀분석이라 부르는 것의 어원입니다.
심화 2. 상관 대신 쓰는 의존성 척도를 정리하세요.
문제 2에서 상관 이 독립을 뜻하지 않는 것을 보았습니다. 독립을 제대로 재는 척도들이 있습니다.
| 척도 | 이 뜻하는 것 |
|---|---|
| 피어슨 상관 | 직선 관계가 없습니다 |
| 상호정보량 | 독립입니다 |
| 거리 상관 | 독립입니다 |
| 최대정보계수 | 독립에 가깝습니다 |
상호정보량은 일 필요충분조건이 독립입니다. 에서도 큰 값이 나옵니다.
대가가 큽니다. 밀도를 추정해야 하므로 차원이 오르면 급격히 어려워지고, 표본이 적으면 편향이 큽니다. 상관은 두 개의 적률만 있으면 되는데 상호정보량은 분포 전체가 필요합니다.
거리 상관이 절충안입니다. 밀도 추정 없이 거리행렬만으로 계산되고 인 것이 독립과 동치이며, 값이 에 있어 해석하기 쉽습니다.
그래도 실무에서 상관이 먼저 쓰이는 이유가 있습니다. 계산이 싸고, 부호가 있고, 회귀계수와 직접 이어지며, 무엇보다 사람들이 그 값의 크기 감각을 공유합니다.
심화 3. 범주형 변수의 관계를 정리하세요.
두 변수가 모두 범주이면 상관을 그대로 쓸 수 없습니다.
| 자료의 종류 | 쓰는 척도 |
|---|---|
| 범주와 범주 | 카이제곱, 크라메르 |
| 순서와 순서 | 스피어만, 켄달 |
| 범주와 수치 | 상관비, 집단 간 분산의 몫 |
| 이분과 수치 | 점이연 상관 |
크라메르 는 카이제곱을 표본 크기로 나눠 로 맞춘 것입니다. 카이제곱 자체는 표본이 커지면 함께 커지므로 세기의 척도가 되지 못합니다. 164강 문제 4에서 검정통계량이 자료의 양을 잰다고 한 것과 같습니다.
셋째 줄이 분산분석과 이어집니다.
집단으로 설명되는 분산의 몫이며, 집단이 둘이면 점이연 상관의 제곱과 같습니다.
주의할 점은 순서 정보입니다. 158강 문제 3에서 본 척도의 문제가 여기서 나옵니다. 만족도 다섯 단계를 명목으로 다루면 순서 정보를 버리고, 수치로 다루면 간격이 같다고 가정하는 것입니다. 둘 다 완전히 옳지 않으며, 순위 상관이 그 사이의 답입니다.
심화 4. 시계열에서 상관을 잴 때의 함정을 정리하세요.
자기상관이 있는 두 계열은 서로 무관해도 높은 상관을 보입니다.
가장 심한 경우가 각각 랜덤워크인 두 계열입니다. 서로 완전히 독립인데 표본 상관이 부터 까지 아무 값이나 나옵니다.
| 상황 | 표본 상관의 성질 |
|---|---|
| 독립인 정상 계열 | 에 수렴합니다 |
| 독립인 랜덤워크 둘 | 수렴하지 않습니다 |
이것을 허위 회귀라 부릅니다. 156강에서 랜덤워크가 으로 퍼진다고 한 것이 원인이며, 두 계열이 각자 표류하는 것을 함께 움직이는 것으로 착각합니다.
대책이 몇 가지 있습니다.
| 방법 | 내용 |
|---|---|
| 차분 | 수준이 아니라 변화량의 상관을 봅니다 |
| 유효 표본 크기 | 자기상관만큼 표본을 깎아 셉니다 |
| 공적분 검정 | 두 계열이 진짜로 함께 가는지 봅니다 |
둘째 줄이 157강의 유효 표본 크기와 같은 개념입니다. 관측이 개여도 서로 강하게 이어져 있으면 독립인 개만큼의 정보밖에 없을 수 있고, 그러면 유의성 검정이 전부 틀립니다.
심화 5. 상관행렬을 다루는 법을 정리하세요.
변수가 개면 상관행렬은 이고 볼 값이 개입니다.
| 봐야 할 상관의 개수 | |
|---|---|
이면 만 개를 봅니다. 유의수준 로 검정하면 참으로 무관해도 개가 유의하게 나옵니다. 다중비교의 문제이며 152강에서 다룬 것입니다.
구조를 보는 방법이 필요합니다.
| 방법 | 무엇을 얻는가 |
|---|---|
| 고윳값 분해 | 몇 개의 방향으로 설명되는지 |
| 변수 군집화 | 비슷하게 움직이는 묶음 |
| 정밀도 행렬 | 편상관의 구조 |
셋째 줄이 문제 5의 편상관을 일반화한 것입니다. 상관행렬의 역행렬을 정밀도 행렬이라 하고, 그 성분이 이면 나머지 전부를 통제했을 때 두 변수가 조건부 독립입니다.
그런데 역행렬을 구하려면 상관행렬이 정칙이어야 합니다. 161강 문제 2의 음수 고윳값이나 문제 5의 조건수 가 바로 그 자리를 막습니다. 변수가 관측보다 많으면 아예 역행렬이 없으며, 그때 쓰는 것이 정규화된 추정입니다.
심화 6. 이 강의가 어디에 쓰이는지 정리하세요.
| 분야 | 쓰임 | 이어지는 강의 |
|---|---|---|
| 범주형 요약 | 분할표와 연관성 척도 | 167강 |
| 시각화 | 산점도와 산점도 행렬 | 170강 |
| 관측 자료의 함정 | 교란과 선택 | 177강 |
| 회귀 | 상관이 기울기가 됩니다 | S8 |
셋째 줄이 이 강의의 무게중심입니다. 문제 4에서 상관이 생기는 이유가 셋인데 자료로는 가릴 수 없다고 했고, 177강이 그것을 정면으로 다룹니다.
넷째 줄에서 도구가 됩니다. 심화 1에서 본 가 단순회귀의 전부이며, 설명변수가 여럿이면 문제 5의 편상관이 그 자리를 차지합니다. 다중회귀의 계수가 곧 나머지를 통제한 관계라는 것이 여기서 나옵니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 공분산 | 두 편차의 곱의 기댓값입니다 | |
| 로 | 피어슨 상관입니다 | |
| \rho_ | 로 에스 | 스피어만 순위 상관입니다 |
| 타우 | 켄달 상관입니다 | |
| \rho_ | 편상관 | 를 통제한 와 의 상관입니다 |
| VIF | 분산팽창인자 | 입니다 |
| 조건수 | condition number | 가장 큰 고윳값을 가장 작은 것으로 나눕니다 |
| 다중공선성 | multicollinearity | 설명변수들이 겹치는 현상입니다 |
| 교란 | confounding | 공통 원인이 가짜 관계를 만듭니다 |
| 버크슨의 역설 | Berkson's paradox | 걸러 내기가 없던 관계를 만듭니다 |
| 피셔 변환 | Fisher z-transformation | 상관을 정규에 가깝게 폅니다 |
| 상호정보량 | mutual information | 인 것이 독립과 동치입니다 |
| 거리 상관 | distance correlation | 밀도 없이 독립을 재는 척도입니다 |
| 크라메르 | Cramer's V | 범주형 연관성을 로 잽니다 |
| 허위 회귀 | spurious regression | 두 랜덤워크가 높은 상관을 보입니다 |
다음은 167강 범주형 자료의 요약입니다. 여기까지가 수치 변수를 다뤘고, 다음은 범주 변수를 다룹니다.
심화 3에서 목록만 보았습니다. 범주와 범주의 관계는 상관으로 잴 수 없어 다른 척도가 필요하며, 분할표가 그 출발점입니다.
그리고 문제 4가 그대로 되풀이됩니다. 심슨의 역설이 원래 분할표에서 발견된 것이라, 두 집단을 합치면 비율의 대소가 뒤집히는 예를 손으로 만들어 볼 수 있습니다. 158강 문제 3에서 범주를 수치로 넣으면 무엇이 깨지는지 보았는데, 이번에는 범주를 범주로 두고 어떻게 요약할지가 주제입니다.
import numpy as np
rng = np.random.default_rng(20260903)
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 pear(a, b):
return float(np.corrcoef(a, b)[0, 1])
def spear(a, b):
ra = np.argsort(np.argsort(a)).astype(float)
rb = np.argsort(np.argsort(b)).astype(float)
return float(np.corrcoef(ra, rb)[0, 1])
def kend(a, b, m=4000):
i = rng.integers(0, len(a), m)
j = rng.integers(0, len(a), m)
ok = i != j
da, db = a[i[ok]] - a[j[ok]], b[i[ok]] - b[j[ok]]
s = np.sign(da) * np.sign(db)
return float(s.mean())
# --- 문제 1: 관계를 하나의 수로 어떻게 줄이는가 -------------------------
print(" 두 변수가 같이 움직이는 정도를 공분산으로 잽니다")
n1 = 1000000
print(" %s %s %s %s" % (pw("설정", 28), rw("공분산", 12),
rw("상관", 12), rw("이론 상관", 12)))
for nm, r in [("독립", 0.0), ("약하게 같이", 0.3), ("강하게 같이", 0.9),
("반대로", -0.6)]:
a = rng.normal(0, 1, n1)
b = r * a + np.sqrt(1 - r * r) * rng.normal(0, 1, n1)
print(" %s %12.6f %12.6f %12.6f"
% (pw(nm, 28), float(((a - a.mean()) * (b - b.mean())).mean()), pear(a, b), r))
print(" 공분산은 단위에 딸려 갑니다. 척도를 바꾸면 값이 바뀝니다")
a = rng.normal(0, 1, n1)
b = 0.7 * a + np.sqrt(1 - 0.49) * rng.normal(0, 1, n1)
print(" %s %s %s" % (pw("단위를 바꾸면", 28), rw("공분산", 14), rw("상관", 12)))
for nm, sa, sb in [("그대로", 1.0, 1.0), ("x 를 1000 배", 1000.0, 1.0),
("둘 다 1000 배", 1000.0, 1000.0)]:
aa, bb = a * sa, b * sb
print(" %s %14.4f %12.6f"
% (pw(nm, 28), float(((aa - aa.mean()) * (bb - bb.mean())).mean()), pear(aa, bb)))
print(" 상관은 각자의 표준편차로 나눈 것이라 단위가 없습니다")
print(" 상관의 절댓값이 1 을 넘지 못하는 것은 코시-슈바르츠 부등식입니다")
print(" |E[(X-mu)(Y-nu)]| <= sqrt(E[(X-mu)^2]) sqrt(E[(Y-nu)^2]) 이기 때문입니다")
print(" %s %s %s" % (pw("관계", 28), rw("상관", 12), rw("정확히 1 인가", 16)))
c = rng.normal(0, 1, n1)
for nm, d in [("y = 3x + 5", 3 * c + 5), ("y = -2x + 1", -2 * c + 1),
("y = 3x + 5 에 잡음 0.01", 3 * c + 5 + rng.normal(0, 0.01, n1))]:
v = pear(c, d)
print(" %s %12.8f %16s" % (pw(nm, 28), v, str(abs(abs(v) - 1.0) < 1e-12)))
print(" 상관이 정확히 1 이나 -1 이면 두 점이 한 직선 위에 있습니다")
print(" 기울기의 크기는 상관에 담기지 않습니다. 부호만 담깁니다")
# --- 문제 2: 상관이 잡지 못하는 것 --------------------------------------
print(" 상관은 직선 관계만 봅니다. 완전히 결정된 관계도 놓칩니다")
n2 = 1000000
u = rng.uniform(-1, 1, n2)
q = u * u
print(" y = x^2 이고 x 는 -1 과 1 사이 균등입니다")
print(" %s %s %s" % (pw("맞히는 방법", 24), rw("x 와 y 의 상관", 16), rw("R^2", 12)))
A = np.stack([np.ones(n2), u, u * u], axis=1)
co = np.linalg.lstsq(A, q, rcond=None)[0]
res = q - A @ co
print(" %s %16.6f %12.6f"
% (pw("2 차식으로 맞히면", 24), pear(u, q), 1 - float(res.var()) / float(q.var())))
A2 = np.stack([np.ones(n2), u], axis=1)
co2 = np.linalg.lstsq(A2, q, rcond=None)[0]
res2 = q - A2 @ co2
print(" %s %16.6f %12.6f"
% (pw("직선으로 맞히면", 24), pear(u, q), 1 - float(res2.var()) / float(q.var())))
print(" x 를 알면 y 가 완전히 정해지는데 상관은 0 입니다")
print(" 상관은 직선으로 얼마나 설명되는지만 재기 때문입니다")
print(" 상관이 거의 같은데 관계가 전혀 다른 자료 셋을 봅니다")
m2 = 200000
sets = []
g1 = rng.normal(0, 1, m2)
sets.append(("고르게 흩어진 직선", g1, 0.9 * g1 + np.sqrt(1 - 0.81) * rng.normal(0, 1, m2)))
mask = rng.random(m2) < 0.05
xa = np.where(mask, rng.normal(4, 0.3, m2), rng.normal(0, 0.3, m2))
ya = np.where(mask, rng.normal(4, 0.3, m2), rng.normal(0, 0.3, m2))
sets.append(("덩어리 둘", xa, ya))
xb = rng.uniform(0, 1, m2)
yb = xb ** 3
sets.append(("휘어진 곡선", xb, yb))
print(" %s %s %s %s" % (pw("자료", 22), rw("상관", 12), rw("스피어만", 12),
rw("상위 5 퍼센트를 빼면", 22)))
for nm, xx, yy in sets:
t = np.quantile(xx, 0.95)
keep = xx < t
print(" %s %12.6f %12.6f %22.6f"
% (pw(nm, 22), pear(xx, yy), spear(xx, yy), pear(xx[keep], yy[keep])))
print(" 덩어리 둘인 자료는 상위 5 퍼센트를 빼면 상관이 거의 사라집니다")
print(" 전체 상관을 5 퍼센트의 점들이 혼자 만들고 있었습니다")
print(" 163강 문제 4 의 앤스컴 자료와 같은 이야기입니다. 숫자 하나로는 모릅니다")
# --- 문제 3: 순위로 재면 무엇이 달라지는가 ------------------------------
print(" 값 대신 순위를 쓰면 단조변환에 흔들리지 않습니다")
n3 = 200000
r0 = 0.7
p1 = rng.normal(0, 1, n3)
p2 = r0 * p1 + np.sqrt(1 - r0 * r0) * rng.normal(0, 1, n3)
print(" %s %s %s %s" % (pw("자료", 26), rw("피어슨", 12), rw("스피어만", 12),
rw("켄달 타우", 12)))
cases = [("원자료", p1, p2), ("x 에 지수를 씌움", np.exp(p1), p2),
("둘 다 세제곱", p1 ** 3, p2 ** 3)]
for nm, xx, yy in cases:
print(" %s %12.6f %12.6f %12.6f"
% (pw(nm, 26), pear(xx, yy), spear(xx, yy), kend(xx, yy)))
out1 = p1.copy()
out2 = p2.copy()
out1[:20] = 50.0
out2[:20] = -50.0
print(" %s %12.6f %12.6f %12.6f"
% (pw("점 20 개를 반대로 옮김", 26), pear(out1, out2), spear(out1, out2),
kend(out1, out2)))
print(" 20 만 개 중 20 개를 옮겼는데 피어슨만 크게 흔들립니다")
print(" 이변량 정규에서는 셋 사이의 관계가 정확히 알려져 있습니다")
print(" %s %s %s %s %s" % (pw("참 상관 rho", 12), rw("스피어만 이론", 14),
rw("스피어만 수치", 14), rw("켄달 이론", 12),
rw("켄달 수치", 12)))
for r in [0.0, 0.3, 0.7, 0.9]:
q1 = rng.normal(0, 1, n3)
q2 = r * q1 + np.sqrt(1 - r * r) * rng.normal(0, 1, n3)
th = 6.0 / np.pi * np.arcsin(r / 2.0)
tk = 2.0 / np.pi * np.arcsin(r)
print(" %s %14.6f %14.6f %12.6f %12.6f"
% (pw("%.1f" % r, 12), th, spear(q1, q2), tk, kend(q1, q2)))
print(" 순위 상관은 언제나 피어슨보다 0 쪽으로 조금 당겨져 있습니다")
print(" 순위만 쓰므로 값의 크기 정보를 버립니다. 그것이 강건함의 대가입니다")
# --- 문제 4: 상관에서 무엇을 읽으면 안 되는가 ---------------------------
print(" 두 변수가 함께 움직이는 이유가 셋 있습니다")
n4 = 500000
zc = rng.normal(0, 1, n4)
x4 = zc + rng.normal(0, 1, n4)
y4 = zc + rng.normal(0, 1, n4)
print(" 첫째는 숨은 공통 원인입니다. z 가 x 와 y 를 함께 움직입니다")
b = np.linalg.lstsq(np.stack([np.ones(n4), zc], axis=1), x4, rcond=None)[0]
rx = x4 - (b[0] + b[1] * zc)
b2 = np.linalg.lstsq(np.stack([np.ones(n4), zc], axis=1), y4, rcond=None)[0]
ry = y4 - (b2[0] + b2[1] * zc)
print(" %s %s" % (pw("무엇을 재는가", 30), rw("상관", 12)))
print(" %s %12.6f" % (pw("x 와 y 의 상관", 30), pear(x4, y4)))
print(" %s %12.6f" % (pw("z 를 뺀 뒤의 상관", 30), pear(rx, ry)))
print(" z 를 빼면 상관이 사라집니다. x 와 y 는 서로 원인이 아니었습니다")
print(" 둘째는 공통 결과로 걸러 낸 경우입니다")
e1 = rng.normal(0, 1, n4)
e2 = rng.normal(0, 1, n4)
print(" 두 능력이 서로 무관한데 둘 중 하나만 좋아도 뽑는다고 합니다")
sel = (e1 > 1.0) | (e2 > 1.0)
print(" %s %s %s" % (pw("대상", 30), rw("상관", 12), rw("인원", 12)))
print(" %s %12.6f %12d" % (pw("전체", 30), pear(e1, e2), n4))
print(" %s %12.6f %12d" % (pw("뽑힌 사람만", 30), pear(e1[sel], e2[sel]), int(sel.sum())))
print(" 뽑힌 사람들 안에서는 음의 상관이 생깁니다. 한쪽이 낮으면 다른 쪽이 높아야 했습니다")
print(" 이것이 버크슨의 역설이며 조건을 걸어 만든 가짜 관계입니다")
print(" 셋째는 묶는 방식이 바뀌는 경우입니다. 153강 문제 5 의 심슨입니다")
gg = rng.integers(0, 3, n4)
xs = gg * 3.0 + rng.normal(0, 0.7, n4)
ys = -xs + gg * 6.0 + rng.normal(0, 0.7, n4)
print(" %s %s" % (pw("무엇을 보는가", 30), rw("상관", 12)))
print(" %s %12.6f" % (pw("전체", 30), pear(xs, ys)))
for k in range(3):
m = gg == k
print(" %s %12.6f" % (pw("집단 %d 안에서" % k, 30), pear(xs[m], ys[m])))
print(" 전체는 양수인데 집단마다 보면 음수입니다. 부호가 뒤집힙니다")
print(" 상관은 함께 움직인다는 사실만 말합니다. 왜 그런지는 자료 밖에 있습니다")
# --- 문제 5: 변수가 셋 이상이면 ------------------------------------------
print(" 변수가 셋이면 둘씩 본 상관만으로는 부족합니다")
n5 = 400000
z5 = rng.normal(0, 1, n5)
xa5 = z5 + 0.5 * rng.normal(0, 1, n5)
ya5 = z5 + 0.5 * rng.normal(0, 1, n5)
R = np.corrcoef(np.stack([xa5, ya5, z5]))
print(" %s %s %s %s" % (pw("", 8), rw("x", 12), rw("y", 12), rw("z", 12)))
for i, nm in enumerate(["x", "y", "z"]):
print(" %s %12.6f %12.6f %12.6f" % (pw(nm, 8), R[i, 0], R[i, 1], R[i, 2]))
pxy = (R[0, 1] - R[0, 2] * R[1, 2]) / np.sqrt((1 - R[0, 2] ** 2) * (1 - R[1, 2] ** 2))
print(" z 를 통제한 x 와 y 의 편상관은 %.6f 입니다" % pxy)
print(" 공식은 (r_xy - r_xz r_yz) / sqrt((1-r_xz^2)(1-r_yz^2)) 입니다")
print(" 상관행렬의 고윳값이 변수들이 얼마나 겹치는지 말해 줍니다")
print(" %s %s %s %s" % (pw("두 설명변수의 상관", 20), rw("고윳값", 24),
rw("조건수", 12), rw("VIF", 10)))
for rr in [0.0, 0.5, 0.9, 0.99]:
C = np.array([[1.0, rr], [rr, 1.0]])
ev = np.linalg.eigvalsh(C)
print(" %s %24s %12.4f %10.4f"
% (pw("%.2f" % rr, 20),
rw(", ".join("%.4f" % t for t in ev), 24),
float(ev.max() / ev.min()), 1.0 / (1 - rr * rr)))
print(" 겹치면 회귀계수를 따로 떼어 추정할 수 없게 됩니다")
print(" %s %s %s" % (pw("두 설명변수의 상관", 20), rw("계수 추정의 표준편차", 24),
rw("상관 0 대비", 14)))
base5 = None
for rr in [0.0, 0.5, 0.9, 0.99]:
M = 3000
nn = 500
est = np.empty(M)
for t in range(M):
v1 = rng.normal(0, 1, nn)
v2 = rr * v1 + np.sqrt(1 - rr * rr) * rng.normal(0, 1, nn)
yy = 1.0 * v1 + 1.0 * v2 + rng.normal(0, 1, nn)
X = np.stack([np.ones(nn), v1, v2], axis=1)
est[t] = np.linalg.lstsq(X, yy, rcond=None)[0][1]
sd = float(est.std())
if base5 is None:
base5 = sd
print(" %s %24.6f %14.4f" % (pw("%.2f" % rr, 20), sd, sd / base5))
print(" 상관 0.99 이면 계수의 흔들림이 7 배가 됩니다. VIF 의 제곱근과 맞습니다")
print(" 상관 0.99 에서 VIF 의 제곱근은 %.4f 입니다" % np.sqrt(1.0 / (1 - 0.99 ** 2)))
print(" 예측은 그대로인데 계수 해석만 무너집니다. 둘을 구별해야 합니다")
print(" 표본 상관의 불확실성은 피셔 변환으로 잽니다")
print(" z = 0.5 ln((1+r)/(1-r)) 로 바꾸면 표준오차가 1/sqrt(n-3) 입니다")
print(" %s %s %s %s" % (pw("참 상관", 12), rw("표본 크기", 12),
rw("z 의 표준편차 수치", 20), rw("1/sqrt(n-3)", 14)))
for r, nn in [(0.0, 50), (0.5, 50), (0.9, 50), (0.9, 500)]:
zz = np.empty(4000)
for t in range(4000):
v1 = rng.normal(0, 1, nn)
v2 = r * v1 + np.sqrt(1 - r * r) * rng.normal(0, 1, nn)
rv = pear(v1, v2)
zz[t] = 0.5 * np.log((1 + rv) / (1 - rv))
print(" %s %12d %20.6f %14.6f"
% (pw("%.1f" % r, 12), nn, float(zz.std()), 1.0 / np.sqrt(nn - 3)))
print(" 참 상관이 얼마든 변환 뒤의 표준오차가 같습니다. 그래서 구간을 만들기 쉽습니다")
# 두 변수가 같이 움직이는 정도를 공분산으로 잽니다
# 설정 공분산 상관 이론 상관
# 독립 -0.000421 -0.000422 0.000000
# 약하게 같이 0.301248 0.300814 0.300000
# 강하게 같이 0.901193 0.899808 0.900000
# 반대로 -0.599475 -0.599538 -0.600000
# 공분산은 단위에 딸려 갑니다. 척도를 바꾸면 값이 바뀝니다
# 단위를 바꾸면 공분산 상관
# 그대로 0.7013 0.699936
# x 를 1000 배 701.2759 0.699936
# 둘 다 1000 배 701275.8949 0.699936
# 상관은 각자의 표준편차로 나눈 것이라 단위가 없습니다
# 상관의 절댓값이 1 을 넘지 못하는 것은 코시-슈바르츠 부등식입니다
# |E[(X-mu)(Y-nu)]| <= sqrt(E[(X-mu)^2]) sqrt(E[(Y-nu)^2]) 이기 때문입니다
# 관계 상관 정확히 1 인가
# y = 3x + 5 1.00000000 True
# y = -2x + 1 -1.00000000 True
# y = 3x + 5 에 잡음 0.01 0.99999444 False
# 상관이 정확히 1 이나 -1 이면 두 점이 한 직선 위에 있습니다
# 기울기의 크기는 상관에 담기지 않습니다. 부호만 담깁니다
# 상관은 직선 관계만 봅니다. 완전히 결정된 관계도 놓칩니다
# y = x^2 이고 x 는 -1 과 1 사이 균등입니다
# 맞히는 방법 x 와 y 의 상관 R^2
# 2 차식으로 맞히면 0.000390 1.000000
# 직선으로 맞히면 0.000390 0.000000
# x 를 알면 y 가 완전히 정해지는데 상관은 0 입니다
# 상관은 직선으로 얼마나 설명되는지만 재기 때문입니다
# 상관이 거의 같은데 관계가 전혀 다른 자료 셋을 봅니다
# 자료 상관 스피어만 상위 5 퍼센트를 빼면
# 고르게 흩어진 직선 0.899664 0.890949 0.880099
# 덩어리 둘 0.894937 0.144202 0.075812
# 휘어진 곡선 0.916777 1.000000 0.916892
# 덩어리 둘인 자료는 상위 5 퍼센트를 빼면 상관이 거의 사라집니다
# 전체 상관을 5 퍼센트의 점들이 혼자 만들고 있었습니다
# 163강 문제 4 의 앤스컴 자료와 같은 이야기입니다. 숫자 하나로는 모릅니다
# 값 대신 순위를 쓰면 단조변환에 흔들리지 않습니다
# 자료 피어슨 스피어만 켄달 타우
# 원자료 0.699701 0.683017 0.493000
# x 에 지수를 씌움 0.530698 0.683017 0.486000
# 둘 다 세제곱 0.554006 0.683017 0.478500
# 점 20 개를 반대로 옮김 0.360492 0.682506 0.480500
# 20 만 개 중 20 개를 옮겼는데 피어슨만 크게 흔들립니다
# 이변량 정규에서는 셋 사이의 관계가 정확히 알려져 있습니다
# 참 상관 rho 스피어만 이론 스피어만 수치 켄달 이론 켄달 수치
# 0.0 0.000000 0.001765 0.000000 0.017500
# 0.3 0.287564 0.284088 0.193973 0.197000
# 0.7 0.682911 0.682817 0.493633 0.497500
# 0.9 0.891456 0.890851 0.712867 0.700000
# 순위 상관은 언제나 피어슨보다 0 쪽으로 조금 당겨져 있습니다
# 순위만 쓰므로 값의 크기 정보를 버립니다. 그것이 강건함의 대가입니다
# 두 변수가 함께 움직이는 이유가 셋 있습니다
# 첫째는 숨은 공통 원인입니다. z 가 x 와 y 를 함께 움직입니다
# 무엇을 재는가 상관
# x 와 y 의 상관 0.502200
# z 를 뺀 뒤의 상관 -0.000533
# z 를 빼면 상관이 사라집니다. x 와 y 는 서로 원인이 아니었습니다
# 둘째는 공통 결과로 걸러 낸 경우입니다
# 두 능력이 서로 무관한데 둘 중 하나만 좋아도 뽑는다고 합니다
# 대상 상관 인원
# 전체 -0.001103 500000
# 뽑힌 사람만 -0.566628 146109
# 뽑힌 사람들 안에서는 음의 상관이 생깁니다. 한쪽이 낮으면 다른 쪽이 높아야 했습니다
# 이것이 버크슨의 역설이며 조건을 걸어 만든 가짜 관계입니다
# 셋째는 묶는 방식이 바뀌는 경우입니다. 153강 문제 5 의 심슨입니다
# 무엇을 보는가 상관
# 전체 0.818484
# 집단 0 안에서 -0.710742
# 집단 1 안에서 -0.707556
# 집단 2 안에서 -0.706816
# 전체는 양수인데 집단마다 보면 음수입니다. 부호가 뒤집힙니다
# 상관은 함께 움직인다는 사실만 말합니다. 왜 그런지는 자료 밖에 있습니다
# 변수가 셋이면 둘씩 본 상관만으로는 부족합니다
# x y z
# x 1.000000 0.800327 0.894811
# y 0.800327 1.000000 0.894311
# z 0.894811 0.894311 1.000000
# z 를 통제한 x 와 y 의 편상관은 0.000440 입니다
# 공식은 (r_xy - r_xz r_yz) / sqrt((1-r_xz^2)(1-r_yz^2)) 입니다
# 상관행렬의 고윳값이 변수들이 얼마나 겹치는지 말해 줍니다
# 두 설명변수의 상관 고윳값 조건수 VIF
# 0.00 1.0000, 1.0000 1.0000 1.0000
# 0.50 0.5000, 1.5000 3.0000 1.3333
# 0.90 0.1000, 1.9000 19.0000 5.2632
# 0.99 0.0100, 1.9900 199.0000 50.2513
# 겹치면 회귀계수를 따로 떼어 추정할 수 없게 됩니다
# 두 설명변수의 상관 계수 추정의 표준편차 상관 0 대비
# 0.00 0.043600 1.0000
# 0.50 0.051927 1.1910
# 0.90 0.104920 2.4064
# 0.99 0.319211 7.3213
# 상관 0.99 이면 계수의 흔들림이 7 배가 됩니다. VIF 의 제곱근과 맞습니다
# 상관 0.99 에서 VIF 의 제곱근은 7.0888 입니다
# 예측은 그대로인데 계수 해석만 무너집니다. 둘을 구별해야 합니다
# 표본 상관의 불확실성은 피셔 변환으로 잽니다
# z = 0.5 ln((1+r)/(1-r)) 로 바꾸면 표준오차가 1/sqrt(n-3) 입니다
# 참 상관 표본 크기 z 의 표준편차 수치 1/sqrt(n-3)
# 0.0 50 0.146596 0.145865
# 0.5 50 0.145829 0.145865
# 0.9 50 0.143312 0.145865
# 0.9 500 0.044505 0.044856
# 참 상관이 얼마든 변환 뒤의 표준오차가 같습니다. 그래서 구간을 만들기 쉽습니다