169강이 한 변수의 분포를 그렸습니다. 이제 두 변수 사이를 그립니다.
166강 문제 2가 남긴 숙제부터 시작합니다. 상관이 에서 로 거의 같은데 관계가 전혀 다른 세 자료가 있었고, 산점도는 그것을 한눈에 구별합니다.
그런데 이 강의는 그림을 그릴 수 없습니다. 그래서 산점도를 보면 즉시 아는 것을 숫자로 옮깁니다.
| 산점도에서 보는 것 | 숫자로 옮기면 |
|---|---|
| 점이 판의 어디에 놓이는가 | 칸으로 나눠 센 점유 분포 |
| 부분마다 관계가 다른가 | 를 토막 내어 잰 국소 상관 |
| 점이 겹쳐 사라지는가 | 겹친 수에 따른 진하기 |
| 관계가 휘었는가 | 축을 바꿨을 때의 직선성 |
그리고 169강의 문제가 그대로 돌아옵니다. 점 사이를 지나는 선을 그리려면 대역폭을 골라야 하고, 좁게 잡으면 무관한 자료에서도 오르내리는 곡선이 나옵니다.
문제. 166강 문제 2의 세 자료를 다시 봅니다.
(1) 판을 칸으로 나눠 점유 분포를 구하세요.
(2) 를 다섯 토막으로 나눠 국소 상관을 구하세요.
생각의 실마리. 산점도를 볼 때 눈이 하는 일은 두 가지입니다. 점이 어디에 모여 있는지 보고, 부분마다 기울기가 어떻게 다른지 봅니다. 그 둘을 각각 숫자로 만들면 됩니다.
풀이. 세 자료의 상관은 거의 같습니다.
| 자료 | 상관 | 스피어만 |
|---|---|---|
| 고르게 흩어진 직선 | ||
| 덩어리 둘 | ||
| 휘어진 곡선 |
(1) 판을 칸으로 나눠 셉니다.
| 자료 | 채워진 칸 | 가장 붐비는 칸의 몫 | 전체 칸 중 |
|---|---|---|---|
| 고르게 흩어진 직선 | |||
| 덩어리 둘 | |||
| 휘어진 곡선 |
덩어리 둘은 한 칸에 전체의 퍼센트가 몰려 있습니다. 뭉쳐 있다는 신호입니다.
휘어진 곡선은 채워진 칸이 개뿐입니다. 얇은 띠 위에만 점이 있다는 뜻이며, 관계가 완전히 결정되어 있다는 신호입니다.
고르게 흩어진 직선은 채워진 칸이 많고 어느 칸도 붐비지 않습니다.
(2) 를 다섯 토막으로 나눠 그 안에서만 상관을 잽니다.
| 자료 | 다섯 토막의 상관 | 전체 상관 |
|---|---|---|
| 고르게 흩어진 직선 | ||
| 덩어리 둘 | ||
| 휘어진 곡선 |
덩어리 둘은 토막 안에서 상관이 거의 입니다. 전체 상관 를 뭉치 두 개의 배치가 혼자 만들고 있었습니다.
휘어진 곡선은 토막마다 상관이 에 가깝습니다. 관계가 완전한데 곡선이라 전체 상관이 로 깎인 것입니다.
첫 줄의 토막 상관이 가운데에서 작아지는 것은 다른 이유입니다. 토막을 나누면 그 안의 범위가 좁아져 상관이 줄어드는데, 양끝 토막은 꼬리가 길어 범위가 넓게 남습니다.
이 문제에서 배우는 것. 산점도가 보여 주는 것은 전체 요약이 아니라 부분들의 배치입니다. 그리고 그 배치가 전체 요약을 만듭니다. 덩어리 둘에서 상관 는 어떤 부분에도 없는 값이며, 부분마다는 입니다. 163강 문제 4에서 평균이 골짜기에 놓였던 것과 같은 구조이며, 요약값이 자료의 어느 자리에도 없을 수 있다는 이야기가 관계에서 되풀이됩니다.
바로 확인 1.
확인 1-1. 산점도가 보여 주는 것을 두 가지 수치로 옮기면 무엇인지 쓰세요.
답. 칸으로 나눈 점유 분포와 토막마다 잰 국소 상관입니다.
확인 1-2. 검산에서 덩어리 둘의 토막 상관을 쓰세요.
답. 앞의 넷이 거의 이고 전체 상관 는 뭉치 배치가 만든 것입니다.
확인 1-3. 휘어진 곡선의 채워진 칸이 적은 이유를 쓰세요.
답. 관계가 완전히 결정되어 점이 얇은 띠 위에만 있기 때문입니다.
문제. 점이 많은 산점도를 다룹니다.
(1) 투명도를 줬을 때 겹친 수에 따른 진하기를 구하세요.
(2) 칸으로 세는 방법을 보고 칸 모양을 고르세요.
(3) 칸의 개수를 정하세요.
생각의 실마리. 168강 문제 5에서 점 만 개의 퍼센트가 겹쳐 사라진다고 했습니다. 투명도를 주면 겹친 곳이 진해지므로 밀도가 조금 보입니다. 그런데 얼마나 보이는지를 계산해 봅니다.
풀이. (1) 투명도 인 점 개가 겹치면 진하기가 다음과 같습니다.
| 겹친 점 수 | |||
|---|---|---|---|
이면 개만 겹쳐도 이라 개와 구별되지 않습니다.
| 투명도 | 구별되는 겹침의 한계 |
|---|---|
진하기가 를 넘으면 사실상 구별이 끝납니다. 투명도를 아주 작게 줘도 이 한계이므로, 밀도 차이가 그보다 크면 투명도로는 보이지 않습니다.
(2) 칸으로 세면 겹침이 사라지고 밀도가 정확해집니다. 칸 모양은 육각형이 낫습니다.
| 칸 모양 | 이웃 수 | 가장 가까운 이웃 거리 | 가장 먼 이웃 거리 |
|---|---|---|---|
| 사각형 | |||
| 육각형 |
사각형은 대각선 이웃이 배 멀어 방향에 따라 다르게 뭉칩니다. 육각형은 여섯 이웃이 모두 같은 거리라 방향에 치우침이 없습니다.
(3) 칸을 몇 개로 나눌지는 169강 문제 1의 폭 고르기와 같은 문제입니다.
| 한 변의 칸 수 | 칸 수 | 칸당 평균 점 | 빈 칸의 비율 |
|---|---|---|---|
칸이 많으면 대부분이 비고 적으면 모양이 뭉갭니다. 히스토그램의 폭 문제가 차원이 하나 늘어 더 심해진 것입니다.
한 변의 칸 수를 두 배로 늘리면 칸당 점이 사분의 일이 됩니다. 그래서 이차원에서는 같은 정밀도를 얻는 데 훨씬 많은 자료가 필요합니다.
이 문제에서 배우는 것. 겹침은 자료가 많아서 생기는 것이 아니라 판이 작아서 생깁니다. 판의 크기가 구별되는 위치의 개수를 정하므로, 자료가 그보다 많으면 반드시 무언가를 버려야 합니다. 투명도는 개별 점을 지키는 대신 밀도를 대략만 보이고, 칸 나누기는 밀도를 정확히 보이는 대신 개별 점을 버립니다. 둘 다 요약이며, 무엇을 버릴지 고르는 일입니다.
바로 확인 2.
확인 2-1. 투명도 인 점 개의 진하기를 식으로 쓰세요.
답. 입니다.
확인 2-2. 검산에서 일 때 구별되는 겹침의 한계를 쓰세요.
답. 개이며 그보다 많이 겹치면 진하기가 같아 보입니다.
확인 2-3. 육각형 칸이 사각형보다 나은 이유를 쓰세요.
답. 여섯 이웃까지의 거리가 모두 같아 방향에 치우침이 없기 때문입니다.
문제. 점 사이를 지나는 선을 그립니다.
(1) 대역폭에 따른 치우침과 흔들림을 계산하세요.
(2) 무관한 자료에 선을 얹으면 어떻게 되는지 보세요.
생각의 실마리. 관계가 직선이 아니면 회귀직선으로는 담을 수 없습니다. 각 자리에서 그 근처의 점들만 써서 값을 정하면 휜 관계도 따라갈 수 있는데, 근처를 얼마나 넓게 잡을지가 문제입니다.
풀이. (1) 참 함수는 이고 잡음의 표준편차는 입니다.
| 대역폭 | 치우침의 제곱 평균 | 흔들림 | 둘의 합 |
|---|---|---|---|
치우침은 커지고 흔들림은 줄어듭니다. 둘의 합이 가장 작은 곳이 입니다.
148강의 편향과 분산의 맞바꿈이 그대로입니다. 그리고 169강 문제 2의 대역폭 문제와도 같습니다. 분포를 그릴 때든 관계를 그릴 때든 같은 선택을 합니다.
(2) 그런데 좁은 대역폭은 없던 관계를 만들어 냅니다. 와 가 완전히 무관한 자료 개입니다.
| 대역폭 | 얹은 선의 오르내림 폭 |
|---|---|
에서 선이 만큼 오르내립니다. 의 표준편차가 이므로 표준편차의 퍼센트나 움직이는 곡선이 무관한 자료에서 나온 것입니다.
그림에서는 그것이 관계처럼 보입니다. 점들은 흩어져 있는데 그 위에 굵은 곡선이 오르내리면, 읽는 사람은 곡선을 믿습니다.
그래서 선에는 반드시 신뢰띠를 함께 그립니다. 띠가 축 전체를 덮으면 그 곡선이 아무것도 말하지 않는다는 뜻입니다.
이 문제에서 배우는 것. 선을 얹는 것은 요약이 아니라 주장입니다. 점만 그리면 읽는 사람이 판단하는데, 선을 얹으면 "관계가 이렇다"고 말한 것이 됩니다. 그리고 그 주장의 강도가 대역폭 하나로 정해집니다. 162강 문제 1에서 파이프라인 단계의 선택을 기록해야 한다고 한 것처럼, 대역폭도 기록하고 신뢰띠로 불확실성을 함께 보여야 합니다.
바로 확인 3.
확인 3-1. 국소 회귀의 대역폭이 만드는 맞바꿈을 쓰세요.
답. 좁으면 치우침이 작고 흔들림이 크며 넓으면 반대입니다.
확인 3-2. 검산에서 둘의 합이 가장 작은 대역폭을 쓰세요.
답. 이며 합이 입니다.
확인 3-3. 무관한 자료에 좁은 대역폭으로 선을 얹으면 어떻게 되는지 쓰세요.
답. 에서 표준편차의 퍼센트만큼 오르내리는 곡선이 나옵니다.
문제. 관계의 꼴을 축으로 가려냅니다.
(1) 세 관계를 세 가지 축에서 그렸을 때의 직선성을 구하세요.
(2) 로그로그의 기울기가 무엇인지 확인하세요.
(3) 범위가 좁으면 어떻게 되는지 판정하세요.
생각의 실마리. 168강 문제 3에서 로그 척도가 일정한 비율의 성장을 직선으로 만든다고 했습니다. 그러면 어느 축을 로그로 두느냐에 따라 직선이 되는 관계가 다를 것입니다.
풀이. (1) 세 관계를 세 축에서 봅니다.
| 관계 | 보통 축 R^ | 준로그 축 R^ | 로그로그 축 R^ |
|---|---|---|---|
| y=3x^ | |||
| y=2e^ | |||
거듭제곱 관계는 로그로그에서, 지수 관계는 준로그에서 정확히 직선이 됩니다.
어긋난 두 칸의 값이 로 같습니다. 우연이 아니라 둘 다 와 의 상관의 제곱이기 때문입니다. 앞의 것은 이고 뒤의 것은 로 같은 값입니다.
(2) 로그로그에서 기울기는 곧 지수입니다.
을 로그로그로 그리면 기울기가 입니다. 절편은 이며, 그림에서 지수를 직접 읽을 수 있습니다.
(3) 그런데 함정이 있습니다.
| 의 범위 | 자릿수 | 지수 관계의 로그로그 R^ |
|---|---|---|
| 에서 | ||
| 에서 | ||
| 에서 | ||
| 에서 |
범위가 자릿수뿐이면 지수 관계도 로그로그에서 가 입니다.
좁은 범위에서는 거의 모든 매끄러운 관계가 직선으로 보입니다. 어떤 함수든 좁은 구간에서는 일차 근사가 잘 맞기 때문이며, 테일러 전개의 첫 항이 그것입니다.
그래서 거듭제곱 법칙을 주장하려면 여러 자릿수에 걸쳐 봐야 합니다. 자릿수가 하나 미만인 자료에서 로그로그가 직선이라는 것은 아무 증거도 아닙니다.
이 문제에서 배우는 것. 축 변환은 가설을 검사하는 도구입니다. 로그로그에서 직선이면 거듭제곱, 준로그에서 직선이면 지수라는 대응이 있으므로, 세 축에서 모두 그려 보는 것이 관계의 꼴을 찾는 표준적인 방법입니다. 다만 하나로 판정하면 안 되며, 범위가 몇 자릿수인지를 함께 봐야 합니다. 164강 문제 4에서 검정통계량이 자료의 양을 잰다고 한 것과 비슷하게, 는 범위의 좁음도 함께 잽니다.
바로 확인 4.
확인 4-1. 거듭제곱과 지수 관계가 각각 어느 축에서 직선이 되는지 쓰세요.
답. 거듭제곱은 로그로그, 지수는 준로그입니다.
확인 4-2. 로그로그에서 기울기와 절편이 무엇인지 쓰세요.
답. 기울기가 지수이고 절편이 입니다.
확인 4-3. 검산에서 범위가 자릿수일 때의 문제를 쓰세요.
답. 지수 관계인데 로그로그 가 이라 거듭제곱과 구별되지 않습니다.
문제. 산점도에 집단을 넣습니다.
(1) 166강 문제 4의 심슨을 산점도에서 확인하세요.
(2) 세 번째 변수를 넣는 방법을 정리하세요.
(3) 집단을 모르고도 의심하는 방법을 찾으세요.
생각의 실마리. 166강에서 **전체 상관이 인데 집단마다 **인 자료를 만들었습니다. 산점도에서는 그것이 어떻게 보이는지와 어떻게 드러내는지를 봅니다.
풀이. (1) 같은 자료를 봅니다.
| 무엇을 보는가 | 상관 | 기울기 |
|---|---|---|
| 모든 점을 한 판에 | ||
| 집단 만 | ||
| 집단 만 | ||
| 집단 만 |
한 판에 다 그리면 오른쪽 위로 올라가는 구름으로 보입니다. 집단으로 나누면 각 구름이 왼쪽 위로 내려갑니다.
세 구름이 계단처럼 배치되어 있어 멀리서 보면 올라가는 것처럼 보이는 것입니다.
(2) 세 번째 변수를 넣는 방법이 넷입니다.
| 방법 | 언제 쓰는가 |
|---|---|
| 색 | 범주가 대여섯 개까지입니다 |
| 모양 | 범주가 서너 개까지입니다 |
| 크기 | 순서가 있는 양이고 정확도는 낮습니다 |
| 면 나누기 | 범주가 많거나 겹침이 심할 때입니다 |
168강 문제 1의 정확도 순위가 그대로 적용됩니다. 크기는 넓이라 지수가 이고, 색은 맨 아래입니다.
넷째 줄이 이 자리에서 가장 크게 쓰입니다. 집단마다 판을 나누면 각 구름의 기울기가 각자의 판에서 그대로 보입니다.
(3) 집단을 모르고도 의심할 수 있습니다. 를 토막 내어 국소 기울기를 재면 됩니다.
| 토막 | 그 안의 기울기 | 점의 수 |
|---|---|---|
전체 기울기는 인데 여섯 토막 중 다섯 토막에서 음수입니다.
가운데 토막들이 에 가까운 것은 집단 경계를 걸쳐 있기 때문입니다. 토막 안에 두 집단이 섞여 있으면 두 효과가 상쇄됩니다.
토막 기울기와 전체 기울기의 부호가 다르면 숨은 집단을 찾아봐야 합니다. 이것은 문제 1의 국소 상관과 같은 도구이며, 집단이 무엇인지 모를 때 쓸 수 있는 진단입니다.
이 문제에서 배우는 것. 세 번째 변수를 넣지 않은 산점도는 거짓말을 할 수 있습니다. 그리고 그 세 번째 변수가 무엇인지 모르는 경우가 대부분이라, 모르고도 의심하는 방법이 필요합니다. 국소 기울기가 그 도구이며, 166강 문제 4에서 상관이 생기는 이유가 셋이고 자료로는 가릴 수 없다고 한 것에 대한 부분적인 답입니다. 집단이 있다는 것까지는 자료가 말해 주고, 그것이 무엇인지는 자료 밖에서 와야 합니다.
바로 확인 5.
확인 5-1. 검산에서 전체와 집단별 기울기를 쓰세요.
답. 전체는 이고 세 집단은 모두 근처입니다.
확인 5-2. 세 번째 변수를 넣는 네 방법을 쓰세요.
답. 색, 모양, 크기, 면 나누기입니다.
확인 5-3. 집단을 모르고 숨은 집단을 의심하는 방법을 쓰세요.
답. 를 토막 내어 국소 기울기를 재고 전체와 부호가 다른지 봅니다.
| 산점도가 보이는 것 | 숫자로 옮기면 |
|---|---|
| 점의 뭉침 | 가장 붐비는 칸의 몫 |
| 관계의 얇기 | 채워진 칸의 비율 |
| 부분마다 다른 관계 | 토막마다의 상관과 기울기 |
| 관계의 꼴 | 축을 바꿨을 때의 R^ |
| 겹침 대책 | 지키는 것 | 버리는 것 |
|---|---|---|
| 투명도 | 개별 점 | 밀도의 정확도 |
| 흔들어 뿌리기 | 점의 개수 | 값의 정확도 |
| 육각형 칸 | 밀도 | 개별 점 |
| 이차원 밀도 | 매끄러운 모양 | 개별 점, 대역폭 선택 |
| 축 | 직선이 되는 관계 | 기울기의 뜻 |
|---|---|---|
| 보통 | 변화량 | |
| 준로그 | y=ae^ | 증가율 |
| 로그로그 | y=ax^ | 지수 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 상관만 보고 관계를 판단합니다 | 토막 상관이 일 수 있습니다 |
| 투명도로 밀도를 읽습니다 | 이면 개에서 포화합니다 |
| 매끄러운 선을 관계로 읽습니다 | 무관한 자료에서도 오르내립니다 |
| 신뢰띠 없이 선만 그립니다 | 주장의 강도를 알 수 없습니다 |
| 좁은 범위의 로그로그 직선을 믿습니다 | 자릿수면 무엇이든 직선입니다 |
| 집단을 넣지 않고 그립니다 | 부호가 뒤집힐 수 있습니다 |
| 색으로 집단 열 개를 나눕니다 | 대여섯 개가 한계입니다 |
문제 6. 산점도가 보여 주는 것을 두 가지 수치로 옮기면 무엇인지 쓰세요.
답. 칸으로 나눈 점유 분포와 토막마다의 국소 상관입니다.
문제 7. 검산에서 덩어리 둘의 가장 붐비는 칸의 몫을 쓰세요.
답. 로 한 칸에 퍼센트가 몰려 있습니다.
문제 8. 검산에서 휘어진 곡선의 채워진 칸을 쓰세요.
답. 칸 중 개이며 관계가 완전히 결정되어 있다는 뜻입니다.
문제 9. 투명도 인 점 개의 진하기를 식으로 쓰세요.
답. 입니다.
문제 10. 검산에서 와 의 구별 한계를 쓰세요.
답. 개와 개입니다.
문제 11. 육각형 칸이 사각형보다 나은 이유를 쓰세요.
답. 여섯 이웃까지의 거리가 모두 같아 방향에 치우침이 없기 때문입니다.
문제 12. 한 변의 칸 수를 두 배로 늘리면 칸당 점이 어떻게 되는지 쓰세요.
답. 사분의 일이 됩니다.
문제 13. 검산에서 국소 회귀의 최적 대역폭과 그때의 합을 쓰세요.
답. 이고 합이 입니다.
문제 14. 무관한 자료에 로 선을 얹으면 어떻게 되는지 쓰세요.
답. 오르내림 폭이 로 표준편차의 퍼센트만큼 움직입니다.
문제 15. 거듭제곱과 지수 관계가 각각 어느 축에서 직선이 되는지 쓰세요.
답. 로그로그와 준로그입니다.
문제 16. 검산에서 의 로그로그 기울기와 절편을 쓰세요.
답. 과 입니다.
문제 17. 검산에서 범위가 자릿수일 때의 로그로그 를 쓰세요.
답. 이며 지수 관계인데도 그렇습니다.
문제 18. 검산에서 심슨의 전체 기울기와 집단별 기울기를 쓰세요.
답. 전체 이고 세 집단 모두 근처입니다.
심화 1. 이차원 밀도 추정을 정리하세요.
169강의 커널 밀도를 두 변수로 넓힙니다.
대역폭이 둘이 되고 방향까지 정해야 합니다. 두 변수가 상관되어 있으면 축에 나란한 커널이 맞지 않아, 공분산행렬을 쓴 타원형 커널이 필요합니다.
차원의 저주가 여기서 시작됩니다.
| 차원 | 같은 정밀도에 필요한 표본 |
|---|---|
| 규모 | |
| 규모 |
문제 2에서 칸당 점이 로 나뉜 것과 같은 이야기입니다. 밀도 추정의 수렴 속도가 이므로 차원이 오르면 급격히 느려집니다.
등고선으로 그릴 때 높이를 어떻게 고를지도 문제입니다. 균등 간격으로 두면 봉우리 근처만 촘촘해지므로, 질량의 비율로 고르는 것이 낫습니다. 안쪽 등고선이 퍼센트, 다음이 퍼센트를 담도록 두면 165강의 분위수와 같은 방식이 됩니다.
심화 2. 국소 회귀의 차수와 경계를 정리하세요.
문제 3에서 각 자리마다 직선을 맞췄습니다. 차수를 바꿀 수 있습니다.
| 차수 | 성격 |
|---|---|
| 차 | 가중평균이며 경계에서 크게 치우칩니다 |
| 차 | 경계 치우침이 작아집니다 |
| 차 | 봉우리 근처가 정확해집니다 |
경계에서 차이가 큽니다. 차는 한쪽에만 자료가 있어 평균이 안쪽으로 끌려가는데, 차는 기울기를 함께 맞추므로 그 치우침이 대부분 사라집니다.
169강 문제 2의 경계 누출과 같은 문제입니다. 밀도에서는 질량이 밖으로 샜고, 여기서는 값이 안으로 당겨집니다.
이상치에 강한 변형도 있습니다. 잔차가 큰 점의 무게를 줄여 다시 맞추기를 반복하면, 163강 심화 2의 M추정량과 같은 구조가 됩니다.
대역폭을 자리마다 바꾸는 방법도 있습니다. 이웃 개를 쓰도록 두면 자료가 성긴 곳에서 자동으로 넓어지며, 꼬리에서 선이 요동치는 것을 막습니다.
심화 3. 시계열의 관계를 그리는 법을 정리하세요.
두 변수가 시간을 따라 움직이면 산점도가 시간 정보를 버립니다.
| 그림 | 무엇을 보이는가 |
|---|---|
| 산점도 | 두 변수의 관계, 시간은 잃습니다 |
| 시간에 이은 산점도 | 점을 시간 순으로 잇습니다 |
| 두 계열을 한 판에 | 시간에 따른 변화, 두 축이 필요합니다 |
| 지연 산점도 | 와 를 짝짓습니다 |
셋째 줄이 위험합니다. 두 축의 눈금을 각각 정할 수 있으므로, 눈금만 바꿔 아무 두 계열이나 함께 움직이는 것처럼 만들 수 있습니다. 168강 문제 3의 축 문제가 가장 심하게 나타나는 자리입니다.
넷째 줄이 방향을 보는 데 쓰입니다. 를 바꿔 가며 상관을 재면 어느 쪽이 앞서는지가 보입니다. 다만 166강 심화 4에서 본 대로, 두 계열이 각자 추세를 가지면 지연 상관이 전부 크게 나옵니다.
차분한 뒤 보는 것이 안전합니다.
심화 4. 산점도 행렬과 그 한계를 정리하세요.
변수가 개면 짝이 개입니다. 전부 그린 것이 산점도 행렬입니다.
| 판의 수 | |
|---|---|
이면 판 하나가 아주 작아져 아무것도 안 보입니다.
그리고 166강 문제 5의 문제가 그대로 있습니다. 둘씩 본 관계는 셋 이상을 함께 본 관계와 다르며, 산점도 행렬은 둘씩만 보여 줍니다. 편상관이 인데 단순 상관이 인 경우, 산점도 행렬에서는 강한 관계로 보입니다.
요약해서 보는 방법이 필요합니다.
| 방법 | 내용 |
|---|---|
| 상관 히트맵 | 값만 색으로 봅니다 |
| 순서 바꾸기 | 비슷한 변수끼리 모읍니다 |
| 몇 개만 고르기 | 관심 변수와의 관계만 봅니다 |
첫째 줄은 168강 문제 4의 문제를 안고 있습니다. 색으로 값을 읽게 하므로 정확도가 낮고, 발산 색표를 써서 을 흰색으로 두는 것이 필수입니다.
심화 5. 관계 그림에서 인과를 읽지 않는 법을 정리하세요.
문제 5에서 집단을 넣으면 부호가 뒤집혔습니다. 그림이 인과를 말하지 않는다는 것을 다시 확인합니다.
| 그림에서 보이는 것 | 말할 수 있는 것 |
|---|---|
| 점들이 오른쪽 위로 | 함께 움직입니다 |
| 선의 기울기 | 관측된 조건부 평균의 변화 |
| 집단을 나눴을 때 | 그 집단 안에서의 관계 |
셋째 줄이 최대한입니다. 통제한 변수 안에서의 관계까지만 말할 수 있고, 통제하지 않은 변수는 여전히 남아 있습니다.
그림이 특히 위험한 이유가 있습니다. 숫자는 조심스럽게 읽는 사람도 그림은 그냥 믿습니다. 오른쪽 위로 올라가는 구름과 그 위의 굵은 선은 "를 늘리면 가 는다"는 문장처럼 읽힙니다.
축 이름을 조심스럽게 다는 것이 도움이 됩니다. "예측된 "와 ""는 다르고, "와 함께 관측된 의 평균"과 "를 바꿨을 때의 "는 완전히 다릅니다. 177강이 그 구별을 다룹니다.
심화 6. 이 강의가 어디에 쓰이는지 정리하세요.
| 분야 | 쓰임 | 이어지는 강의 |
|---|---|---|
| 다변량 탐색 | 산점도 행렬과 차원축소 | 171강 |
| 잘못된 그래프 | 축과 선의 조작 | 172강 |
| 회귀 진단 | 잔차 대 예측값 산점도 | S8 |
| 관측 자료 | 숨은 집단과 교란 | 177강 |
셋째 줄이 회귀에서 가장 많이 그리는 그림입니다. 잔차를 예측값에 대해 그리면 남은 구조가 있는지가 보이며, 문제 3의 매끄러운 선을 얹어 확인합니다. 선이 평평해야 모형이 관계를 다 담은 것입니다.
그리고 문제 3의 경고가 그대로 적용됩니다. 잔차 그림에 좁은 대역폭으로 선을 얹으면 없는 구조가 보이므로, 신뢰띠 없이 읽으면 안 됩니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 산점도 | scatter plot | 두 변수를 두 축에 놓고 점을 찍습니다 |
| 육각형 칸 | hexbin | 육각형으로 나눠 밀도를 셉니다 |
| 국소 회귀 | LOESS | 각 자리에서 가까운 점만으로 맞춥니다 |
| 대역폭 | bandwidth | 가깝다는 것의 범위입니다 |
| 준로그 | semi-log | 한 축만 로그로 둡니다 |
| 로그로그 | log-log | 두 축을 모두 로그로 둡니다 |
| 거듭제곱 법칙 | power law | 꼴의 관계입니다 |
| 국소 기울기 | local slope | 토막 안에서만 잰 기울기입니다 |
| 면 나누기 | faceting | 집단마다 판을 나눕니다 |
| 지연 산점도 | lag plot | 시차를 두고 짝짓습니다 |
| 산점도 행렬 | scatterplot matrix | 모든 짝을 격자로 그립니다 |
| 등고선 | contour | 같은 밀도의 자리를 잇습니다 |
| 신뢰띠 | confidence band | 선의 불확실성을 폭으로 보입니다 |
| 잔차 그림 | residual plot | 남은 구조가 있는지 봅니다 |
| 차원의 저주 | curse of dimensionality | 차원이 오르면 자료가 성겨집니다 |
다음은 171강 다변량 탐색과 차원축소 활용입니다. 여기까지가 변수 하나와 둘이었고, 다음은 셋 이상을 봅니다.
심화 4에서 한계를 이미 보았습니다. 변수가 개면 판이 개라 그릴 수 없고, 둘씩 본 관계는 166강 문제 5의 편상관과 다릅니다.
그래서 차원을 줄여서 봅니다. 89강의 주성분분석이 그 도구인데, 줄이는 순간 무엇을 잃는지가 다음 강의의 주제입니다. 그리고 이 강의의 결론이 그대로 되풀이됩니다. 차원축소도 요약이고, 요약은 버리는 일입니다.
import numpy as np
rng = np.random.default_rng(20260907)
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):
if len(a) < 3 or a.std() == 0 or b.std() == 0:
return 0.0
return float(np.corrcoef(a, b)[0, 1])
# --- 문제 1: 산점도는 요약값이 놓친 것을 어떻게 보이는가 ----------------
print(" 166강 문제 2 의 세 자료를 다시 봅니다. 상관이 거의 같았습니다")
m1 = 60000
g1 = rng.normal(0, 1, m1)
A = (g1, 0.9 * g1 + np.sqrt(1 - 0.81) * rng.normal(0, 1, m1))
mk = rng.random(m1) < 0.05
B = (np.where(mk, rng.normal(4, 0.3, m1), rng.normal(0, 0.3, m1)),
np.where(mk, rng.normal(4, 0.3, m1), rng.normal(0, 0.3, m1)))
xb = rng.uniform(0, 1, m1)
C = (xb, xb ** 3)
sets = [("고르게 흩어진 직선", A), ("덩어리 둘", B), ("휘어진 곡선", C)]
print(" %s %s %s" % (pw("자료", 22), rw("상관", 12), rw("스피어만", 12)))
for nm, (x, y) in sets:
ra = np.argsort(np.argsort(x)).astype(float)
rb = np.argsort(np.argsort(y)).astype(float)
print(" %s %12.6f %12.6f" % (pw(nm, 22), pear(x, y), pear(ra, rb)))
print(" 산점도가 보여 주는 것을 두 가지 수치로 흉내 내 봅니다")
print(" 첫째는 점이 판의 어디에 놓이는가입니다. 20 x 20 칸으로 나눠 셉니다")
print(" %s %s %s %s" % (pw("자료", 22), rw("채워진 칸", 12),
rw("가장 붐비는 칸의 몫", 20), rw("전체 400 칸 중", 16)))
for nm, (x, y) in sets:
xi = np.clip(((x - x.min()) / (x.max() - x.min()) * 20).astype(int), 0, 19)
yi = np.clip(((y - y.min()) / (y.max() - y.min()) * 20).astype(int), 0, 19)
cnt = np.zeros((20, 20))
np.add.at(cnt, (xi, yi), 1.0)
print(" %s %12d %20.6f %16.4f"
% (pw(nm, 22), int((cnt > 0).sum()), float(cnt.max() / m1),
float((cnt > 0).sum()) / 400))
print(" 덩어리 둘은 한 칸에 전체의 12 퍼센트가 몰려 있습니다. 뭉쳐 있다는 신호입니다")
print(" 휘어진 곡선은 얇은 띠라서 채워진 칸이 400 중 39 개뿐입니다")
print(" 고르게 흩어진 직선은 채워진 칸이 많고 어느 칸도 붐비지 않습니다")
print(" 둘째는 x 를 토막 내어 그 안에서만 상관을 재는 것입니다")
print(" %s %s %s" % (pw("자료", 22), rw("다섯 토막의 상관", 40), rw("전체 상관", 12)))
for nm, (x, y) in sets:
e = np.quantile(x, np.linspace(0, 1, 6))
loc = []
for i in range(5):
m = (x >= e[i]) & (x <= e[i + 1])
loc.append(pear(x[m], y[m]))
print(" %s %s %12.6f"
% (pw(nm, 22), rw(", ".join("%.2f" % t for t in loc), 40), pear(x, y)))
print(" 덩어리 둘은 토막 안에서 상관이 거의 0 입니다. 전체 상관을 뭉치 배치가 만듭니다")
print(" 휘어진 곡선은 토막마다 상관이 1 입니다. 관계가 완전한데 곡선일 뿐입니다")
print(" 이 두 수치가 산점도를 보면 즉시 아는 것을 숫자로 옮긴 것입니다")
print(" 그래서 관계를 볼 때는 요약값보다 산점도를 먼저 봅니다")
# --- 문제 2: 점이 겹칠 때 무엇을 하는가 ---------------------------------
print(" 점이 많으면 산점도가 검은 덩어리가 됩니다")
print(" 투명도를 주면 겹친 만큼 진해집니다. 진하기는 1 - (1-a)^k 입니다")
print(" %s %s %s %s" % (pw("겹친 점 수 k", 14), rw("a = 0.02", 12),
rw("a = 0.10", 12), rw("a = 0.50", 12)))
for k in [1, 5, 10, 50, 200, 1000]:
print(" %s %12.6f %12.6f %12.6f"
% (pw(str(k), 14), 1 - 0.98 ** k, 1 - 0.90 ** k, 1 - 0.50 ** k))
print(" a = 0.10 이면 50 개만 겹쳐도 0.9948 이라 200 개와 구별되지 않습니다")
print(" 투명도는 밀도를 조금 보여 줄 뿐 어느 선을 넘으면 포화합니다")
print(" %s %s" % (pw("투명도 a", 12), rw("구별되는 겹침의 한계", 24)))
for a in [0.02, 0.05, 0.10, 0.50]:
kk = int(np.ceil(np.log(1 - 0.99) / np.log(1 - a)))
print(" %s %24d" % (pw("%.2f" % a, 12), kk))
print(" 진하기가 0.99 를 넘으면 사실상 구별이 끝납니다. 그 지점을 적었습니다")
print(" 칸으로 세면 겹침이 사라지고 밀도가 정확해집니다")
print(" 칸 모양은 육각형이 낫습니다. 이웃까지의 거리가 모두 같기 때문입니다")
print(" %s %s %s %s" % (pw("칸 모양", 12), rw("이웃 수", 10),
rw("가장 가까운 이웃 거리", 22), rw("가장 먼 이웃 거리", 20)))
print(" %s %10d %22.4f %20.4f" % (pw("사각형", 12), 8, 1.0, np.sqrt(2)))
print(" %s %10d %22.4f %20.4f" % (pw("육각형", 12), 6, 1.0, 1.0))
print(" 사각형은 대각선 이웃이 %.4f 배 멀어 방향에 따라 다르게 뭉칩니다" % np.sqrt(2))
print(" 칸을 몇 개로 나눌지는 169강 문제 1 의 폭 고르기와 같은 문제입니다")
n2 = 200000
xx2 = rng.normal(0, 1, n2)
yy2 = 0.7 * xx2 + np.sqrt(1 - 0.49) * rng.normal(0, 1, n2)
print(" %s %s %s %s" % (pw("한 변의 칸 수", 14), rw("칸 수", 10),
rw("칸당 평균 점", 14), rw("빈 칸의 비율", 14)))
for k in [10, 30, 100, 300]:
xi = np.clip(((xx2 + 4) / 8 * k).astype(int), 0, k - 1)
yi = np.clip(((yy2 + 4) / 8 * k).astype(int), 0, k - 1)
cnt = np.zeros((k, k))
np.add.at(cnt, (xi, yi), 1.0)
print(" %s %10d %14.2f %14.6f"
% (pw(str(k), 14), k * k, n2 / (k * k), float((cnt == 0).mean())))
print(" 칸이 많으면 대부분이 비고 적으면 모양이 뭉갭니다. 같은 맞바꿈입니다")
# --- 문제 3: 관계를 요약하는 선 -----------------------------------------
print(" 점 사이를 지나는 선으로 관계를 요약합니다")
n3 = 3000
x3 = np.sort(rng.uniform(0, 1, n3))
f3 = np.sin(2 * np.pi * x3)
y3 = f3 + rng.normal(0, 0.5, n3)
gx = np.linspace(0.05, 0.95, 181)
ft = np.sin(2 * np.pi * gx)
def loess(h):
out = np.empty(len(gx))
for i, t in enumerate(gx):
w = np.exp(-0.5 * ((x3 - t) / h) ** 2)
sw = w.sum()
mx = (w * x3).sum() / sw
my = (w * y3).sum() / sw
vx = (w * (x3 - mx) ** 2).sum() / sw
cxy = (w * (x3 - mx) * (y3 - my)).sum() / sw
b = cxy / vx if vx > 0 else 0.0
out[i] = my + b * (t - mx)
return out
print(" 참 함수는 sin(2 pi x) 이고 잡음의 표준편차는 0.5 입니다")
print(" %s %s %s %s" % (pw("대역폭", 12), rw("치우침의 제곱 평균", 20),
rw("흔들림", 12), rw("둘의 합", 12)))
for h in [0.01, 0.03, 0.08, 0.20, 0.50]:
fits = np.array([None] * 0)
acc = []
for _ in range(20):
y3 = f3 + rng.normal(0, 0.5, n3)
acc.append(loess(h))
acc = np.array(acc)
bias2 = float(((acc.mean(axis=0) - ft) ** 2).mean())
var = float(acc.var(axis=0).mean())
print(" %s %20.6f %12.6f %12.6f" % (pw("%.2f" % h, 12), bias2, var, bias2 + var))
print(" 대역폭이 좁으면 잡음을 따라가고 넓으면 봉우리를 깎습니다")
print(" 169강 문제 2 의 대역폭 문제가 관계를 요약하는 선에서 그대로 나옵니다")
print(" 선을 그리면 없던 관계도 있어 보입니다")
xr = rng.uniform(0, 1, 300)
yr = rng.normal(0, 1, 300)
x3, y3, f3 = xr, yr, np.zeros(300)
gx2 = np.linspace(0.05, 0.95, 91)
print(" x 와 y 가 완전히 무관한 자료 300 개에 선을 얹어 봅니다")
print(" %s %s" % (pw("대역폭", 12), rw("얹은 선의 오르내림 폭", 24)))
for h in [0.02, 0.05, 0.15, 0.50]:
out = np.empty(len(gx2))
for i, t in enumerate(gx2):
w = np.exp(-0.5 * ((xr - t) / h) ** 2)
out[i] = (w * yr).sum() / w.sum()
print(" %s %24.4f" % (pw("%.2f" % h, 12), float(out.max() - out.min())))
print(" 좁은 대역폭에서는 무관한 자료에서도 오르내리는 곡선이 나옵니다")
print(" 선에는 반드시 신뢰띠를 함께 그려야 합니다")
# --- 문제 4: 축을 바꾸면 무엇이 직선이 되는가 ---------------------------
print(" 관계의 꼴에 따라 직선이 되는 축이 다릅니다")
n4 = 2000
xv = np.exp(rng.uniform(np.log(1), np.log(100), n4))
kinds = [("y = 3 x^1.7", 3.0 * xv ** 1.7),
("y = 2 e^{0.05 x}", 2.0 * np.exp(0.05 * xv)),
("y = 5 + 2 x", 5.0 + 2.0 * xv)]
print(" %s %s %s %s" % (pw("관계", 18), rw("보통 축 R^2", 14),
rw("준로그 축 R^2", 16), rw("로그로그 축 R^2", 18)))
def r2(a, b):
return float(pear(a, b) ** 2)
for nm, yv in kinds:
print(" %s %14.6f %16.6f %18.6f"
% (pw(nm, 18), r2(xv, yv), r2(xv, np.log(yv)), r2(np.log(xv), np.log(yv))))
print(" 거듭제곱 관계는 로그로그에서, 지수 관계는 준로그에서 정확히 직선이 됩니다")
print(" 두 어긋난 칸의 값이 %.6f 로 같습니다. 둘 다 x 와 log x 의 상관이라 그렇습니다"
% r2(xv, np.log(xv)))
print(" 기울기가 곧 지수입니다")
lx, ly = np.log(xv), np.log(3.0 * xv ** 1.7)
sl = float(np.polyfit(lx, ly, 1)[0])
print(" y = 3 x^1.7 을 로그로그로 그리면 기울기가 %.4f 로 지수와 같습니다" % sl)
print(" 절편은 log 3 = %.4f 입니다" % np.log(3.0))
print(" 그래서 로그로그에서 직선이면 거듭제곱 법칙을 의심합니다")
print(" 다만 좁은 범위에서는 거의 모든 것이 직선으로 보입니다")
print(" %s %s %s" % (pw("x 의 범위", 16), rw("자릿수", 10), rw("지수 관계의 로그로그 R^2", 26)))
for lo, hi in [(1, 2), (1, 5), (1, 20), (1, 100)]:
xs = np.exp(rng.uniform(np.log(lo), np.log(hi), n4))
ys = 2.0 * np.exp(0.05 * xs)
print(" %s %10.2f %26.6f"
% (pw("%d 에서 %d" % (lo, hi), 16), np.log10(hi / lo),
r2(np.log(xs), np.log(ys))))
print(" 범위가 0.30 자릿수뿐이면 지수 관계도 로그로그에서 R^2 가 0.9923 입니다")
print(" 거듭제곱 법칙을 주장하려면 여러 자릿수에 걸쳐 봐야 합니다")
# --- 문제 5: 세 번째 변수를 넣기 ----------------------------------------
print(" 166강 문제 4 의 심슨을 산점도에서 봅니다")
n5 = 60000
gg = rng.integers(0, 3, n5)
x5 = gg * 3.0 + rng.normal(0, 0.7, n5)
y5 = -x5 + gg * 6.0 + rng.normal(0, 0.7, n5)
print(" %s %s %s" % (pw("무엇을 보는가", 24), rw("상관", 12), rw("기울기", 12)))
print(" %s %12.6f %12.6f"
% (pw("모든 점을 한 판에", 24), pear(x5, y5), float(np.polyfit(x5, y5, 1)[0])))
for k in range(3):
m = gg == k
print(" %s %12.6f %12.6f"
% (pw("집단 %d 만" % k, 24), pear(x5[m], y5[m]), float(np.polyfit(x5[m], y5[m], 1)[0])))
print(" 한 판에 다 그리면 오른쪽 위로 올라가는 구름으로 보입니다")
print(" 집단으로 나누면 각 구름이 왼쪽 위로 내려갑니다. 부호가 뒤집힙니다")
print(" 세 번째 변수를 넣는 방법이 넷입니다")
print(" %s %s" % (pw("방법", 16), rw("언제 쓰는가", 34)))
for a, b in [("색", "범주가 대여섯 개까지입니다"),
("모양", "범주가 서너 개까지입니다"),
("크기", "순서가 있는 양이고 정확도는 낮습니다"),
("면 나누기", "범주가 많거나 겹침이 심할 때입니다")]:
print(" %s %s" % (pw(a, 16), rw(b, 34)))
print(" 집단을 모르고도 의심할 수 있습니다. 국소 기울기를 재면 됩니다")
print(" %s %s %s" % (pw("토막", 10), rw("그 안의 기울기", 16), rw("점의 수", 12)))
e5 = np.quantile(x5, np.linspace(0, 1, 7))
for i in range(6):
m = (x5 >= e5[i]) & (x5 <= e5[i + 1])
print(" %s %16.4f %12d"
% (pw("%d" % (i + 1), 10), float(np.polyfit(x5[m], y5[m], 1)[0]), int(m.sum())))
print(" 전체 기울기는 양수인데 여섯 토막 중 다섯 토막에서 음수입니다")
print(" 가운데 토막들이 0 에 가까운 것은 집단 경계를 걸쳐 있기 때문입니다")
print(" 토막 기울기와 전체 기울기의 부호가 다르면 숨은 집단을 찾아봐야 합니다")
print(" 168강 문제 5 의 나눠 그리기가 이 자리에서 가장 크게 쓰입니다")
print(" 세 번째 변수를 넣지 않은 산점도는 거짓말을 할 수 있습니다")
# 166강 문제 2 의 세 자료를 다시 봅니다. 상관이 거의 같았습니다
# 자료 상관 스피어만
# 고르게 흩어진 직선 0.900367 0.890824
# 덩어리 둘 0.892831 0.139705
# 휘어진 곡선 0.916022 1.000000
# 산점도가 보여 주는 것을 두 가지 수치로 흉내 내 봅니다
# 첫째는 점이 판의 어디에 놓이는가입니다. 20 x 20 칸으로 나눠 셉니다
# 자료 채워진 칸 가장 붐비는 칸의 몫 전체 400 칸 중
# 고르게 흩어진 직선 129 0.067733 0.3225
# 덩어리 둘 102 0.124217 0.2550
# 휘어진 곡선 39 0.051950 0.0975
# 덩어리 둘은 한 칸에 전체의 12 퍼센트가 몰려 있습니다. 뭉쳐 있다는 신호입니다
# 휘어진 곡선은 얇은 띠라서 채워진 칸이 400 중 39 개뿐입니다
# 고르게 흩어진 직선은 채워진 칸이 많고 어느 칸도 붐비지 않습니다
# 둘째는 x 를 토막 내어 그 안에서만 상관을 재는 것입니다
# 자료 다섯 토막의 상관 전체 상관
# 고르게 흩어진 직선 0.70, 0.32, 0.28, 0.33, 0.70 0.900367
# 덩어리 둘 0.00, 0.02, -0.00, -0.00, 0.98 0.892831
# 휘어진 곡선 0.92, 0.99, 0.99, 1.00, 1.00 0.916022
# 덩어리 둘은 토막 안에서 상관이 거의 0 입니다. 전체 상관을 뭉치 배치가 만듭니다
# 휘어진 곡선은 토막마다 상관이 1 입니다. 관계가 완전한데 곡선일 뿐입니다
# 이 두 수치가 산점도를 보면 즉시 아는 것을 숫자로 옮긴 것입니다
# 그래서 관계를 볼 때는 요약값보다 산점도를 먼저 봅니다
# 점이 많으면 산점도가 검은 덩어리가 됩니다
# 투명도를 주면 겹친 만큼 진해집니다. 진하기는 1 - (1-a)^k 입니다
# 겹친 점 수 k a = 0.02 a = 0.10 a = 0.50
# 1 0.020000 0.100000 0.500000
# 5 0.096079 0.409510 0.968750
# 10 0.182927 0.651322 0.999023
# 50 0.635830 0.994846 1.000000
# 200 0.982412 1.000000 1.000000
# 1000 1.000000 1.000000 1.000000
# a = 0.10 이면 50 개만 겹쳐도 0.9948 이라 200 개와 구별되지 않습니다
# 투명도는 밀도를 조금 보여 줄 뿐 어느 선을 넘으면 포화합니다
# 투명도 a 구별되는 겹침의 한계
# 0.02 228
# 0.05 90
# 0.10 44
# 0.50 7
# 진하기가 0.99 를 넘으면 사실상 구별이 끝납니다. 그 지점을 적었습니다
# 칸으로 세면 겹침이 사라지고 밀도가 정확해집니다
# 칸 모양은 육각형이 낫습니다. 이웃까지의 거리가 모두 같기 때문입니다
# 칸 모양 이웃 수 가장 가까운 이웃 거리 가장 먼 이웃 거리
# 사각형 8 1.0000 1.4142
# 육각형 6 1.0000 1.0000
# 사각형은 대각선 이웃이 1.4142 배 멀어 방향에 따라 다르게 뭉칩니다
# 칸을 몇 개로 나눌지는 169강 문제 1 의 폭 고르기와 같은 문제입니다
# 한 변의 칸 수 칸 수 칸당 평균 점 빈 칸의 비율
# 10 100 2000.00 0.270000
# 30 900 222.22 0.396667
# 100 10000 20.00 0.561000
# 300 90000 2.22 0.716144
# 칸이 많으면 대부분이 비고 적으면 모양이 뭉갭니다. 같은 맞바꿈입니다
# 점 사이를 지나는 선으로 관계를 요약합니다
# 참 함수는 sin(2 pi x) 이고 잡음의 표준편차는 0.5 입니다
# 대역폭 치우침의 제곱 평균 흔들림 둘의 합
# 0.01 0.000152 0.002177 0.002330
# 0.03 0.000228 0.000756 0.000984
# 0.08 0.007004 0.000238 0.007242
# 0.20 0.072367 0.000222 0.072590
# 0.50 0.140890 0.000129 0.141019
# 대역폭이 좁으면 잡음을 따라가고 넓으면 봉우리를 깎습니다
# 169강 문제 2 의 대역폭 문제가 관계를 요약하는 선에서 그대로 나옵니다
# 선을 그리면 없던 관계도 있어 보입니다
# x 와 y 가 완전히 무관한 자료 300 개에 선을 얹어 봅니다
# 대역폭 얹은 선의 오르내림 폭
# 0.02 0.8608
# 0.05 0.4786
# 0.15 0.1974
# 0.50 0.0638
# 좁은 대역폭에서는 무관한 자료에서도 오르내리는 곡선이 나옵니다
# 선에는 반드시 신뢰띠를 함께 그려야 합니다
# 관계의 꼴에 따라 직선이 되는 축이 다릅니다
# 관계 보통 축 R^2 준로그 축 R^2 로그로그 축 R^2
# y = 3 x^1.7 0.946563 0.765662 1.000000
# y = 2 e^{0.05 x} 0.676185 1.000000 0.765662
# y = 5 + 2 x 1.000000 0.847818 0.984171
# 거듭제곱 관계는 로그로그에서, 지수 관계는 준로그에서 정확히 직선이 됩니다
# 두 어긋난 칸의 값이 0.765662 로 같습니다. 둘 다 x 와 log x 의 상관이라 그렇습니다
# 기울기가 곧 지수입니다
# y = 3 x^1.7 을 로그로그로 그리면 기울기가 1.7000 로 지수와 같습니다
# 절편은 log 3 = 1.0986 입니다
# 그래서 로그로그에서 직선이면 거듭제곱 법칙을 의심합니다
# 다만 좁은 범위에서는 거의 모든 것이 직선으로 보입니다
# x 의 범위 자릿수 지수 관계의 로그로그 R^2
# 1 에서 2 0.30 0.992273
# 1 에서 5 0.70 0.960180
# 1 에서 20 1.30 0.877686
# 1 에서 100 2.00 0.758242
# 범위가 0.30 자릿수뿐이면 지수 관계도 로그로그에서 R^2 가 0.9923 입니다
# 거듭제곱 법칙을 주장하려면 여러 자릿수에 걸쳐 봐야 합니다
# 166강 문제 4 의 심슨을 산점도에서 봅니다
# 무엇을 보는가 상관 기울기
# 모든 점을 한 판에 0.817947 0.848521
# 집단 0 만 -0.709856 -0.996908
# 집단 1 만 -0.707654 -1.000759
# 집단 2 만 -0.706400 -1.001581
# 한 판에 다 그리면 오른쪽 위로 올라가는 구름으로 보입니다
# 집단으로 나누면 각 구름이 왼쪽 위로 내려갑니다. 부호가 뒤집힙니다
# 세 번째 변수를 넣는 방법이 넷입니다
# 방법 언제 쓰는가
# 색 범주가 대여섯 개까지입니다
# 모양 범주가 서너 개까지입니다
# 크기 순서가 있는 양이고 정확도는 낮습니다
# 면 나누기 범주가 많거나 겹침이 심할 때입니다
# 집단을 모르고도 의심할 수 있습니다. 국소 기울기를 재면 됩니다
# 토막 그 안의 기울기 점의 수
# 1 -1.0037 10000
# 2 -0.0528 10000
# 3 -0.0821 10000
# 4 -0.2348 10000
# 5 0.0875 10000
# 6 -1.0045 10000
# 전체 기울기는 양수인데 여섯 토막 중 다섯 토막에서 음수입니다
# 가운데 토막들이 0 에 가까운 것은 집단 경계를 걸쳐 있기 때문입니다
# 토막 기울기와 전체 기울기의 부호가 다르면 숨은 집단을 찾아봐야 합니다
# 168강 문제 5 의 나눠 그리기가 이 자리에서 가장 크게 쓰입니다
# 세 번째 변수를 넣지 않은 산점도는 거짓말을 할 수 있습니다