168강이 문법을 세웠습니다. 이제 그 문법으로 한 변수의 분포를 그립니다.
165강 문제 3이 남긴 숙제부터 시작합니다. 다섯 수가 같은 자료 셋을 상자그림이 구별하지 못했는데, 다른 그림들은 구별하는지가 이 강의의 마지막 문제입니다.
그런데 그림에도 선택이 들어 있습니다.
| 그림 | 골라야 하는 것 |
|---|---|
| 히스토그램 | 구간의 폭과 시작점 |
| 밀도 | 대역폭과 커널 |
| 경험분포 | 없습니다 |
| 분위수 대조 | 위치 규약 |
셋째 줄이 특별합니다. 경험분포는 자료가 정하면 그대로 정해져 고를 것이 없습니다. 그 대신 모양을 잘 보여 주지 못합니다.
선택이 결과를 얼마나 바꾸는지가 이 강의의 주제입니다. 검산에서 같은 자료 같은 폭인데 시작점만 옮기면 봉우리가 하나로도 둘로도 보입니다.
문제. 봉우리가 둘인 자료 개를 히스토그램으로 그립니다.
(1) 구간의 폭을 바꿔 가며 보이는 봉우리를 세세요.
(2) 폭을 그대로 두고 시작점만 옮겨 보세요.
(3) 폭을 자료에서 정하는 규칙 셋을 비교하세요.
생각의 실마리. 히스토그램은 자료를 그대로 보여 주는 그림처럼 보입니다. 그런데 자료를 구간에 넣어 세려면 구간이 먼저 있어야 하고, 그 구간은 자료가 정한 것이 아닙니다.
풀이. (1) 참 봉우리는 와 입니다.
| 구간 폭 | 구간 개수 | 칸당 평균 도수 | 칸 도수의 상대 잡음 | 보이는 봉우리 |
|---|---|---|---|---|
폭이 좁으면 칸당 자료가 적어 잡음이 커지고 없던 봉우리가 개까지 생깁니다. 폭이 넓으면 흔들림은 사라지지만 진짜 봉우리까지 뭉갭니다.
가운데 넓은 구간에서만 참값 가 나옵니다. 폭을 고르는 일이 곧 잡음과 뭉갬 사이의 맞바꿈입니다.
(2) 폭을 으로 고정하고 시작점만 옮겨 봅니다.
| 시작점 | 보이는 봉우리 | 가장 높은 칸의 도수 | 가장 높은 칸의 가운데 |
|---|---|---|---|
같은 자료 같은 폭인데 시작점에 따라 봉우리가 하나로도 둘로도 보입니다.
시작점은 대개 아무도 고르지 않습니다. 도구가 기본값으로 정하며, 그 기본값이 결론을 바꿉니다.
(3) 폭을 자료에서 정하는 규칙이 셋 있습니다.
| 규칙 | 식 | 폭 | 구간 개수 | 보이는 봉우리 |
|---|---|---|---|---|
| 스터지스 | 범위 | |||
| 스콧 | 3.49\,\sigma n^ | |||
| 프리드먼-디아코니스 | 2\,\text{IQR}\,n^ |
스터지스는 구간 개수를 으로 늘립니다. 이 만이어도 구간이 개뿐이라 큰 자료에서 뭉갭니다.
스콧과 프리드먼-디아코니스는 으로 줄입니다. 표본이 커지면 폭이 좁아지므로 잡음과 뭉갬이 함께 줄어듭니다.
둘의 차이는 퍼짐을 무엇으로 재느냐입니다. 163강 문제 2 그대로이며, IQR을 쓰는 프리드먼-디아코니스가 꼬리가 두꺼운 자료에 강합니다.
이 문제에서 배우는 것. 히스토그램은 자료를 보여 주는 것이 아니라 자료를 요약한 결과입니다. 폭과 시작점이라는 두 개의 선택이 이미 들어 있고, 그 선택이 봉우리 개수를 바꿉니다. 그래서 히스토그램 하나를 보고 "봉우리가 둘이다"라고 말하려면 폭을 여러 개 바꿔 봐야 합니다. 162강 문제 1에서 파이프라인 단계의 선택을 고정하고 기록해야 한다고 한 것과 같은 이야기이며, 폭과 시작점도 기록할 선택입니다.
바로 확인 1.
확인 1-1. 히스토그램이 고르는 두 가지를 쓰세요.
답. 구간의 폭과 시작점입니다.
확인 1-2. 검산에서 폭 일 때 보이는 봉우리와 그 이유를 쓰세요.
답. 개이며 칸당 도수가 뿐이라 상대 잡음이 이기 때문입니다.
확인 1-3. 스터지스 규칙이 큰 자료에 나쁜 이유를 쓰세요.
답. 구간 개수를 으로만 늘려 표본이 커져도 거의 안 늘기 때문입니다.
문제. 각 점에 작은 산을 얹어 더합니다.
(1) 대역폭을 바꿔 가며 봉우리를 세세요.
(2) 봉우리 개수가 대역폭에 어떻게 반응하는지 보세요.
(3) 경계가 있는 자료에서 무엇이 잘못되는지 확인하세요.
생각의 실마리. 히스토그램의 시작점 문제는 칸의 경계가 임의로 정해지기 때문입니다. 그러면 각 점을 중심으로 작은 산을 얹으면 그 문제가 사라집니다. 대신 산의 폭을 정해야 합니다.
풀이. (1) 정규 커널을 쓰고 대역폭을 바꿔 봅니다.
| 대역폭 | 보이는 봉우리 | 최댓값 | 실버만 규칙 대비 |
|---|---|---|---|
실버만 규칙이 주는 폭은 입니다.
실버만은 봉우리가 하나라고 가정하고 만든 규칙이라, 봉우리가 둘이면 퍼짐이 크게 잡혀 필요보다 넓은 폭을 줍니다. 이 자료에서는 그래도 봉우리 둘이 살아남았습니다.
대역폭이 커지면 최댓값이 줄어듭니다. 에서 이던 것이 에서 이 되며, 넓게 펴 놓으면 낮아지는 것이 밀도의 성질입니다.
(2) 대역폭을 키우면 봉우리 개수가 단조로 줄어듭니다.
| 대역폭 | 보이는 봉우리 |
|---|---|
정규 커널에서는 봉우리 개수가 대역폭에 대해 절대 늘지 않습니다. 이 성질 덕분에 봉우리가 하나가 되는 가장 작은 폭이 유일하게 정해지며, 그것을 임계 대역폭이라 하고 봉우리가 정말 둘인지 검정하는 데 씁니다.
(3) 경계가 있으면 밀도가 밖으로 샙니다. 값이 이상인 지수 자료입니다.
| 대역폭 | 아래로 샌 질량 | 에서의 밀도 |
|---|---|---|
참 밀도는 에서 인데 절반도 안 나옵니다. 근처의 점들이 얹은 산의 절반이 자료가 있을 수 없는 쪽으로 넘어가기 때문입니다.
대역폭이 넓을수록 심합니다. 이면 퍼센트가 새어 나갑니다.
대책은 두 가지입니다. 경계에서 반사시켜 되접거나, 로그를 씌워 경계를 없앤 뒤 밀도를 구하고 되돌립니다. 162강 문제 3의 변환이 여기서도 쓰입니다.
이 문제에서 배우는 것. 밀도 그림은 히스토그램의 시작점 문제를 없애는 대신 대역폭 문제를 남깁니다. 선택이 하나로 줄었을 뿐 사라지지 않았습니다. 그리고 매끄럽다는 것이 정확하다는 뜻이 아닙니다. 매끄러운 곡선은 자료가 그만큼 매끄럽다는 인상을 주는데, 실제로는 그리는 사람이 매끄럽게 만든 것입니다. 경계에서 새어 나가는 것이 그 인상이 틀렸다는 가장 분명한 증거입니다.
바로 확인 2.
확인 2-1. 커널 밀도 추정의 식을 쓰세요.
답. 입니다.
확인 2-2. 임계 대역폭이 무엇인지 쓰세요.
답. 봉우리가 하나가 되는 가장 작은 대역폭이며 봉우리 검정에 씁니다.
확인 2-3. 검산에서 일 때 경계 밖으로 샌 질량을 쓰세요.
답. 이며 에서의 밀도가 참값 의 밖에 안 됩니다.
문제. 경험분포함수를 봅니다.
(1) 이론분포와의 최대 차이를 구하세요.
(2) 그 차이의 상한을 표본 크기로 계산하세요.
(3) 경험분포가 못 보여 주는 것을 확인하세요.
생각의 실마리. 문제 1과 문제 2의 골칫거리는 전부 자료를 구간이나 커널로 뭉개는 데서 나왔습니다. 그러면 뭉개지 않는 그림을 생각해 봅니다.
풀이. (1) 경험분포함수는 이하인 자료의 비율입니다.
자료가 정하면 그대로 정해집니다. 고를 것이 하나도 없으며, 표본 개에서 참 분포와의 가장 큰 차이가 이었습니다.
(2) 그 차이의 상한이 표본 크기만으로 정해집니다.
| 표본 크기 | 퍼센트 띠의 반폭 | 실제 벗어난 비율 |
|---|---|---|
분포가 무엇이든 상관없이 성립합니다. 정규든 지수든 파레토든 같은 띠를 씁니다. 146강의 집중 부등식이 그대로 쓰인 것입니다.
실제로 벗어나는 비율이 보다 작습니다. 부등식이 넉넉하기 때문이며, 보수적이라는 대가로 분포에 무관한 보장을 얻은 것입니다.
그래서 경험분포에는 신뢰대를 그릴 수 있습니다. 밀도 그림에는 이런 간단한 띠가 없습니다.
(3) 대신 경험분포는 봉우리를 잘 안 보여 줍니다.
봉우리는 기울기의 최댓값으로 나타나는데, 눈으로 기울기를 읽는 것이 어렵습니다.
| 보는 방법 | 봉우리 개수 |
|---|---|
| 경험분포의 기울기 그대로 | |
| 기울기를 평활한 뒤 | |
| 밀도로 바로 그리면 |
계단함수의 기울기를 그대로 세면 개가 나옵니다. 평활해야 참값 가 나오는데, 평활하는 순간 문제 2의 대역폭 선택이 돌아옵니다.
두 봉우리 사이는 기울기가 잠깐 완만해지는 구간으로 나타납니다. 밀도 그림의 골짜기가 여기서는 덜 가파른 구간이라, 있는지 알고 봐야 겨우 보입니다.
이 문제에서 배우는 것. 선택이 없다는 것은 공짜가 아닙니다. 경험분포는 고를 것이 없고 신뢰대가 분포에 무관하지만, 대신 사람이 읽기 어려운 표현입니다. 분위수는 정확히 읽히는데 모양은 안 보입니다. 그래서 값을 읽을 때는 경험분포, 모양을 볼 때는 밀도로 나눠 쓰며, 둘을 함께 그리는 것이 가장 낫습니다.
바로 확인 3.
확인 3-1. 경험분포함수의 정의를 쓰세요.
답. 는 이하인 자료의 비율입니다.
확인 3-2. 균일 신뢰대의 근거가 되는 부등식을 쓰세요.
답. 이며 분포에 무관합니다.
확인 3-3. 경험분포가 봉우리를 잘 못 보여 주는 이유를 쓰세요.
답. 봉우리가 기울기의 최댓값으로 나타나는데 기울기를 눈으로 읽기 어렵기 때문입니다.
문제. 표본 분위수와 이론 분위수를 짝지어 봅니다.
(1) 네 분포에서 아래 꼬리, 가운데, 위 꼬리의 기울기를 구하세요.
(2) 그림의 모양이 무엇을 뜻하는지 정리하세요.
(3) 양끝의 흔들림을 계산하세요.
생각의 실마리. 164강 문제 4에서 상관만 보면 넷을 구별 못 한다고 했습니다. 어디가 어긋났는지를 보려면 그림 전체를 세 토막으로 나눠 봐야 합니다.
풀이. (1) 표본 개를 표준화해 이론 분위수와 짝지었습니다.
| 표본이 나온 분포 | 아래 꼬리 기울기 | 가운데 기울기 | 위 꼬리 기울기 |
|---|---|---|---|
| 표준정규 | |||
| 자유도 인 | |||
| 지수 | |||
| 균등 |
기울기가 이면 이론과 같습니다. 표준정규는 셋 다 근처입니다.
은 양끝이 둘 다 가 넘습니다. 양쪽 꼬리가 정규보다 두껍다는 뜻이며, 가운데 기울기가 으로 작은 것은 표준화 때문에 가운데가 상대적으로 눌린 것입니다.
지수는 좌우가 완전히 다릅니다. 아래 꼬리 , 위 꼬리 이며 오른쪽으로만 긴 분포의 특징입니다.
균등은 양끝이 둘 다 입니다. 꼬리가 아예 없어 끝에서 눕는 모양이 됩니다.
(2) 모양을 읽는 법을 정리합니다.
| 그림의 모양 | 무엇을 뜻하는가 |
|---|---|
| 직선 | 이론분포와 같습니다 |
| 양끝이 위로 휨 | 오른쪽으로 치우쳤습니다 |
| 양끝이 아래로 휨 | 왼쪽으로 치우쳤습니다 |
| 자로 눕는 모양 | 꼬리가 얇습니다 |
| 자로 서는 모양 | 꼬리가 두껍습니다 |
| 끝의 몇 점만 벗어남 | 이상치입니다 |
마지막 줄과 다섯째 줄을 구별하는 것이 어렵습니다. 꼬리가 두꺼운 것과 이상치 몇 개가 있는 것이 같은 모양으로 보입니다.
(3) 그런데 양끝은 원래 크게 흔들립니다.
| 순서 | 표준오차 | 가운데 대비 |
|---|---|---|
가장 바깥 점의 표준오차가 가운데의 배입니다. 165강 문제 4에서 본 밀도에 반비례하는 표준오차가 그대로 나타납니다.
그래서 끝의 몇 점이 벗어난 것만으로 판단하면 안 됩니다. 참으로 정규인 자료에서도 양끝은 늘 벗어나 보이며, 신뢰대를 함께 그려야 판단할 수 있습니다.
이 문제에서 배우는 것. 분위수 대조 그림은 어디가 어긋났는지를 보여 주는 유일한 그림입니다. 히스토그램이나 밀도는 가운데가 눈에 들어오고 꼬리가 눌리는데, 이 그림은 꼬리를 펴서 보여 줍니다. 그런데 바로 그 이유로 꼬리의 흔들림도 함께 커져 보이므로, 신뢰대 없이 양끝을 읽는 것은 위험합니다. 펴서 보는 것과 정확히 보는 것은 다릅니다.
바로 확인 4.
확인 4-1. 분위수 대조 그림에서 기울기가 보다 크면 무엇을 뜻하는지 쓰세요.
답. 그쪽 꼬리가 이론분포보다 두껍다는 뜻입니다.
확인 4-2. 검산에서 지수분포의 양끝 기울기를 쓰세요.
답. 아래가 이고 위가 로 오른쪽으로만 긴 분포입니다.
확인 4-3. 양끝의 점을 함부로 읽으면 안 되는 이유를 검산 값과 함께 쓰세요.
답. 가장 바깥 점의 표준오차가 가운데의 배이기 때문입니다.
문제. 165강 문제 3의 자료 셋을 다시 봅니다.
(1) 다섯 수가 같은지 확인하세요.
(2) 밀도와 경험분포가 셋을 구별하는지 보세요.
(3) 그림마다 무엇을 보이고 무엇을 감추는지 정리하세요.
생각의 실마리. 165강에서 상자그림이 셋을 구별하지 못했습니다. 그러면 이 강의에서 배운 그림들은 구별하는지 확인해야 합니다.
풀이. (1) 다섯 수를 다시 잽니다.
| 자료 | Q_ | 중앙값 | Q_ |
|---|---|---|---|
| 균등 | |||
| 봉우리 둘 | |||
| 정규를 잘라 냄 |
상자그림으로는 셋이 같아 보입니다.
(2) 밀도와 경험분포로 봅니다.
| 자료 | 밀도의 봉우리 | 균등과의 최대 분포 차이 |
|---|---|---|
| 균등 | ||
| 봉우리 둘 | ||
| 정규를 잘라 냄 |
밀도의 봉우리 개수가 봉우리 둘인 자료를 잡아냅니다. 그런데 균등과 정규 절단은 둘 다 이라 구별하지 못합니다.
경험분포의 차이가 셋을 모두 구별합니다. , , 로 전부 다르며, 문제 3의 신뢰대와 견주면 **표본 개에서 퍼센트 반폭이 **이므로 두 차이가 모두 압도적으로 큽니다.
두 그림이 서로의 약점을 메웁니다. 밀도는 봉우리를 보고 경험분포는 전체 차이를 봅니다.
(3) 그림마다 성격이 다릅니다.
| 그림 | 봉우리 | 분위수 | 개별 자료 |
|---|---|---|---|
| 상자그림 | 안 보임 | 보임 | 이상치만 |
| 바이올린 | 보임 | 겹치면 보임 | 안 보임 |
| 히스토그램 | 보임 | 안 보임 | 안 보임 |
| 경험분포 | 겨우 보임 | 정확히 보임 | 계단으로 보임 |
| 점 다 찍기 | 보임 | 안 보임 | 전부 보임 |
어느 하나도 셋을 다 보여 주지 못합니다.
표본 크기에 따라 권하는 것이 달라집니다.
| 표본 크기 | 권하는 그림 |
|---|---|
| 미만 | 점을 다 찍습니다 |
| 부터 | 점과 상자그림을 겹칩니다 |
| 부터 | 밀도나 히스토그램을 씁니다 |
| 이상 | 밀도에 경험분포를 곁들입니다 |
자료가 적으면 점을 다 찍는 것이 가장 정직합니다. 짜리 상자그림은 다섯 수를 계산하느라 열다섯 개를 버린 것이며, 165강 심화 4에서 본 이야기 그대로입니다.
이 문제에서 배우는 것. 하나를 고르는 것이 아니라 두 개를 겹쳐 서로의 약점을 메웁니다. 그림도 요약이므로 168강의 결론이 그대로 적용되며, 한 장으로 다 보이게 하려는 시도는 대개 실패합니다. 그리고 겹칠 때는 성격이 다른 둘을 고릅니다. 상자그림과 바이올린을 겹치는 것은 둘 다 요약이라 얻는 것이 적고, 요약 하나와 자료 그 자체 하나를 겹치는 것이 가장 많은 것을 보여 줍니다.
바로 확인 5.
확인 5-1. 검산에서 다섯 수가 같은 셋을 무엇이 구별했는지 쓰세요.
답. 밀도의 봉우리 개수와 경험분포의 최대 차이입니다.
확인 5-2. 밀도가 구별하지 못한 짝을 쓰세요.
답. 균등과 정규를 잘라 낸 자료이며 둘 다 봉우리가 입니다.
확인 5-3. 표본이 개 미만일 때 권하는 그림과 이유를 쓰세요.
답. 점을 다 찍는 것이며 요약하면 버리는 것이 남는 것보다 많기 때문입니다.
| 그림 | 고르는 것 | 잘 보이는 것 | 안 보이는 것 |
|---|---|---|---|
| 히스토그램 | 폭, 시작점 | 봉우리 | 정확한 분위수 |
| 밀도 | 대역폭, 커널 | 봉우리, 모양 | 개별 자료, 경계 |
| 경험분포 | 없음 | 분위수, 전체 차이 | 봉우리 |
| 분위수 대조 | 위치 규약 | 꼬리와 치우침 | 봉우리 |
| 점 다 찍기 | 흔들기 정도 | 개별 자료 | 큰 표본에서 밀도 |
| 폭과 대역폭 규칙 | 식 |
|---|---|
| 스터지스 | 구간 개 |
| 스콧 | h=3.49\,\sigma n^ |
| 프리드먼-디아코니스 | h=2\,\text{IQR}\,n^ |
| 실버만 | h=0.9\min(\sigma,\text{IQR}/1.34)n^ |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 히스토그램 하나로 봉우리를 판정합니다 | 폭을 여러 개 바꿔 봅니다 |
| 시작점 기본값을 그대로 씁니다 | 봉우리 개수가 뒤집힐 수 있습니다 |
| 매끄러운 곡선을 정확한 것으로 읽습니다 | 그리는 사람이 매끄럽게 만든 것입니다 |
| 경계가 있는 자료에 그냥 밀도를 씁니다 | 퍼센트까지 밖으로 샙니다 |
| 분위수 대조의 양끝 몇 점을 읽습니다 | 표준오차가 가운데의 배입니다 |
| 작은 표본에 상자그림을 씁니다 | 점을 다 찍는 편이 낫습니다 |
| 그림 하나로 전부 보이려 합니다 | 성격이 다른 둘을 겹칩니다 |
문제 6. 히스토그램이 고르는 두 가지를 쓰세요.
답. 구간의 폭과 시작점입니다.
문제 7. 검산에서 폭 일 때 보이는 봉우리와 상대 잡음을 쓰세요.
답. 봉우리 개이고 상대 잡음이 입니다.
문제 8. 칸당 도수와 상대 잡음의 관계를 쓰세요.
답. 칸당 도수가 이면 상대 잡음이 입니다.
문제 9. 검산에서 시작점만 옮겼을 때 무엇이 달라졌는지 쓰세요.
답. 폭 에서 봉우리가 개로도 개로도 보였습니다.
문제 10. 세 가지 폭 규칙의 식을 쓰세요.
답. 구간 개, , 입니다.
문제 11. 커널 밀도 추정의 식을 쓰세요.
답. 입니다.
문제 12. 임계 대역폭이 유일하게 정해지는 이유를 쓰세요.
답. 정규 커널에서 봉우리 개수가 대역폭에 대해 늘지 않기 때문입니다.
문제 13. 검산에서 일 때 경계 밖으로 샌 질량을 쓰세요.
답. 입니다.
문제 14. 경험분포의 균일 신뢰대의 근거를 쓰세요.
답. 이며 분포에 무관합니다.
문제 15. 검산에서 일 때 퍼센트 띠의 반폭을 쓰세요.
답. 입니다.
문제 16. 검산에서 의 양끝 기울기를 쓰세요.
답. 과 로 양쪽 꼬리가 두껍습니다.
문제 17. 검산에서 가장 바깥 점의 표준오차가 가운데의 몇 배인지 쓰세요.
답. 배입니다.
문제 18. 검산에서 다섯 수가 같은 자료 셋을 무엇이 구별했는지 쓰세요.
답. 밀도의 봉우리 개수와 경험분포의 최대 차이 , , 입니다.
심화 1. 대역폭을 자료에서 고르는 방법을 정리하세요.
실버만 규칙은 정규를 가정하고 만든 규칙이라 다른 모양에서 나쁩니다. 자료에서 직접 고르는 방법이 있습니다.
적분한 제곱오차의 기댓값을 가장 작게 하는 를 찾습니다. 이것을 펼치면 익숙한 맞바꿈이 나옵니다.
| 항 | 에 대한 거동 |
|---|---|
| 편향의 제곱 | 에 비례해 커집니다 |
| 분산 | 에 비례해 작아집니다 |
둘을 더해 최소로 만들면 가 나옵니다. 실버만 규칙의 지수가 여기서 옵니다.
교차검증이 실용적인 방법입니다. 한 점을 빼고 나머지로 밀도를 구한 뒤 그 점에서의 값을 평가하는 것을 모든 점에 반복합니다.
162강 문제 2의 규칙이 그대로 적용됩니다. 빼는 점을 밀도 계산에 넣으면 그 점이 자기를 평가하게 되어 대역폭이 으로 갑니다.
적응적 대역폭도 있습니다. 자료가 빽빽한 곳은 좁게, 성긴 곳은 넓게 두는 것인데, 꼬리에서 울퉁불퉁해지는 문제를 고칩니다.
심화 2. 히스토그램의 시작점 문제를 없애는 방법을 정리하세요.
문제 1에서 시작점이 결과를 바꿨습니다. 평균 이동 히스토그램이 그 문제를 없앱니다.
시작점을 조금씩 옮겨 가며 여러 개를 만들고 평균을 냅니다.
| 옮기는 횟수 | 결과 |
|---|---|
| 보통 히스토그램입니다 | |
| 계단이 단으로 잘게 나뉩니다 | |
| 무한 | 삼각 커널의 밀도와 같아집니다 |
셋째 줄이 요점입니다. 시작점을 없애려고 평균을 내면 커널 밀도 추정으로 수렴합니다. 두 방법이 다른 것이 아니라 하나가 다른 하나의 극한입니다.
폭이 일정하지 않아도 됩니다. 자료가 성긴 곳에서 칸을 넓게 두면 잡음이 줄어드는데, 그러면 높이를 도수가 아니라 밀도로 그려야 합니다.
폭이 다른데 높이를 도수로 그리면 넓은 칸이 실제보다 커 보입니다. 168강 문제 1의 넓이 인코딩 문제가 히스토그램에서 나타난 모습입니다.
심화 3. 봉우리가 정말 있는지 검정하는 방법을 정리하세요.
문제 2에서 임계 대역폭을 보았습니다. 그것으로 검정을 만듭니다.
| 단계 | 내용 |
|---|---|
| 봉우리가 하나가 되는 가장 작은 폭 을 찾습니다 | |
| 로 만든 밀도에서 표본을 다시 뽑습니다 | |
| 그 표본의 임계 대역폭 분포와 견줍니다 |
귀무가설이 봉우리 하나입니다. 이 크다는 것은 봉우리 둘을 없애려면 아주 많이 뭉개야 한다는 뜻이라 봉우리가 진짜라는 증거가 됩니다.
딥 검정도 있습니다. 경험분포와 가장 가까운 단봉 분포 사이의 최대 거리를 재는 것인데, 문제 3의 경험분포를 쓰므로 대역폭을 고를 필요가 없습니다.
봉우리 검정은 힘이 약합니다. 두 봉우리가 가까우면 표본이 아주 많아야 구별되며, 정규 혼합에서 두 중심이 보다 가까우면 밀도 자체가 봉우리 하나가 됩니다. 그때는 자료가 아무리 많아도 봉우리 둘로 보이지 않습니다.
그래서 봉우리가 안 보이는 것이 집단이 하나라는 뜻은 아닙니다.
심화 4. 로그 척도와 분포 그림을 정리하세요.
오른쪽 꼬리가 긴 자료는 그대로 그리면 왼쪽 끝에 다 뭉칩니다.
| 방법 | 무엇이 달라지는가 |
|---|---|
| 가로축만 로그 | 뭉침이 풀리지만 넓이가 밀도가 아니게 됩니다 |
| 로그를 씌운 뒤 밀도 | 정확하지만 세로축의 뜻이 바뀝니다 |
| 로그 구간 히스토그램 | 칸 폭이 달라 높이를 밀도로 고쳐야 합니다 |
둘째 줄이 정확한 방법입니다. 의 밀도를 구한 뒤 되돌리려면 변환의 야코비안을 곱해야 합니다.
이 보정을 빠뜨리면 꼬리가 실제보다 두꺼워 보입니다.
로그를 씌우면 경계 문제도 사라집니다. 문제 2에서 아래로 새던 것이, 로그를 씌우면 경계가 음의 무한대로 밀려나 새어 나갈 곳이 없어집니다.
다만 인 값이 있으면 못 씁니다. 162강 문제 3의 문제가 그대로 돌아오며, 의 선택이 그림의 모양을 바꿉니다.
심화 5. 여러 집단의 분포를 겹쳐 그리는 방법을 정리하세요.
168강 문제 5에서 집단이 많으면 겹쳐 그릴 수 없다고 했습니다. 분포 그림에서는 대안이 몇 가지 있습니다.
| 방법 | 성격 |
|---|---|
| 능선 그림 | 밀도를 조금씩 어긋나게 쌓습니다 |
| 상자그림 나열 | 요약만 나열합니다 |
| 벌떼 그림 | 점을 겹치지 않게 흩습니다 |
| 경험분포 겹치기 | 여러 계단을 한 판에 그립니다 |
넷째 줄이 가장 적게 감춥니다. 경험분포는 단조증가라 서로 교차하는 자리가 분명히 보이고, 문제 3의 신뢰대를 함께 그릴 수 있습니다.
첫째 줄이 가장 많이 보이지만 겹칩니다. 능선 그림은 밀도를 다 보여 주는 대신 뒤쪽이 앞쪽에 가려집니다.
순서를 정하는 것이 중요합니다. 집단에 자연스러운 순서가 없으면 중앙값 순으로 정렬하는 것이 낫습니다. 알파벳 순으로 두면 읽는 사람이 순서에서 아무 정보도 못 얻습니다.
그리고 축을 반드시 공유합니다. 168강 문제 5에서 본 대로, 판마다 축이 다르면 정확도가 한 단계 내려갑니다.
심화 6. 이 강의가 어디에 쓰이는지 정리하세요.
| 분야 | 쓰임 | 이어지는 강의 |
|---|---|---|
| 관계 그림 | 두 변수의 분포를 함께 봅니다 | 170강 |
| 다변량 | 변수마다 분포를 늘어놓습니다 | 171강 |
| 진단 | 잔차의 분포를 봅니다 | S8 |
| 모형 검사 | 예측분포와 실제를 견줍니다 | S9 |
셋째 줄이 회귀에서 매일 쓰입니다. 잔차가 정규인지 보려면 문제 4의 분위수 대조를 쓰고, 등분산인지 보려면 잔차의 퍼짐을 봅니다. 164강 심화 3에서 정규성 검정보다 그림이 낫다고 한 이유가 여기 있습니다.
넷째 줄이 현대적인 쓰임입니다. 모형이 만든 예측분포에서 표본을 뽑아 실제 자료와 겹쳐 그리면, 모형이 무엇을 못 맞히는지가 보입니다. 검정통계량 하나로는 알 수 없는 것을 그림이 알려 주며, 이 강의의 도구가 그대로 쓰입니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| F_ | 경험분포함수 | 이하인 자료의 비율입니다 |
| \hat | 추정한 밀도 | 커널을 더해 만든 밀도입니다 |
| 대역폭 | 얹는 산의 폭입니다 | |
| 커널 | 각 점에 얹는 함수입니다 | |
| 스터지스 규칙 | Sturges' rule | 구간을 으로 늘립니다 |
| 스콧 규칙 | Scott's rule | 표준편차로 폭을 정합니다 |
| 프리드먼-디아코니스 | Freedman-Diaconis | IQR로 폭을 정합니다 |
| 실버만 규칙 | Silverman's rule | 대역폭의 기본 규칙입니다 |
| 임계 대역폭 | critical bandwidth | 봉우리가 하나가 되는 가장 작은 폭입니다 |
| 드보레츠키 부등식 | DKW inequality | 경험분포의 균일 상한입니다 |
| 분위수 대조 그림 | Q-Q plot | 표본과 이론 분위수를 짝짓습니다 |
| 능선 그림 | ridgeline plot | 밀도를 어긋나게 쌓습니다 |
| 벌떼 그림 | beeswarm plot | 점을 겹치지 않게 흩습니다 |
| 평균 이동 히스토그램 | ASH | 시작점을 옮겨 평균 냅니다 |
| 딥 검정 | dip test | 가장 가까운 단봉 분포와의 거리를 잽니다 |
다음은 170강 관계를 보는 그림입니다. 여기까지가 한 변수의 분포였고, 다음은 두 변수 사이를 그립니다.
166강 문제 2가 남긴 숙제가 그것입니다. 상관이 인데 완전히 결정된 관계, 상관이 거의 같은데 전혀 다른 세 자료를 산점도는 한눈에 구별합니다.
그런데 여기서도 선택이 돌아옵니다. 168강 문제 5에서 점 만 개의 퍼센트가 겹쳐 사라진다고 했는데, 큰 자료의 산점도가 정확히 그 문제를 안고 있습니다. 그리고 관계를 요약하는 매끄러운 선에는 이 강의의 대역폭 선택이 그대로 다시 나옵니다.
import numpy as np
rng = np.random.default_rng(20260906)
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 peaks(c, rel=0.05):
c = np.asarray(c, dtype=float)
m = float(c.max())
if m <= 0:
return 0
out = 0
for i in range(1, len(c) - 1):
if not (c[i] > c[i - 1] and c[i] >= c[i + 1]):
continue
j, lv = i, c[i]
while j > 0 and c[j - 1] <= c[i]:
j -= 1
lv = min(lv, c[j])
k, rv = i, c[i]
while k < len(c) - 1 and c[k + 1] <= c[i]:
k += 1
rv = min(rv, c[k])
if c[i] - max(lv, rv) >= rel * m:
out += 1
return out
def kde(x, g, h):
z = (g[:, None] - x[None, :]) / h
return np.exp(-0.5 * z * z).sum(axis=1) / (len(x) * h * np.sqrt(2 * np.pi))
# --- 문제 1: 히스토그램은 무엇을 고르는가 -------------------------------
print(" 히스토그램은 구간의 폭과 시작점을 정해야 그려집니다")
n1 = 40000
b1 = np.concatenate([rng.normal(-1.2, 0.5, n1 // 2), rng.normal(1.2, 0.5, n1 // 2)])
print(" 봉우리가 둘인 자료 %d 개입니다. 참 봉우리는 -1.2 와 1.2 입니다" % n1)
print(" %s %s %s %s %s" % (pw("구간 폭", 10), rw("구간 개수", 10),
rw("칸당 평균 도수", 16),
rw("칸 도수의 상대 잡음", 20), rw("보이는 봉우리", 14)))
for w in [0.01, 0.05, 0.15, 0.80, 1.50, 3.00]:
e = np.arange(-5, 5 + w, w)
c, _ = np.histogram(b1, bins=e)
print(" %s %10d %16.1f %20.4f %14d"
% (pw("%.2f" % w, 10), len(c), float(c.mean()),
1.0 / np.sqrt(float(c.mean())), peaks(c)))
print(" 칸당 도수가 m 이면 그 칸의 상대 잡음이 1/sqrt(m) 입니다")
print(" 폭이 좁으면 칸당 자료가 적어 잡음이 커지고 없던 봉우리가 95 개까지 생깁니다")
print(" 폭이 넓으면 흔들림은 사라지지만 진짜 봉우리까지 뭉갭니다")
print(" 폭을 그대로 두고 시작점만 옮겨도 결과가 뒤집힙니다")
print(" %s %s %s %s" % (pw("시작점", 12), rw("보이는 봉우리", 16),
rw("가장 높은 칸의 도수", 20), rw("가장 높은 칸의 가운데", 24)))
w0 = 1.60
for s0 in [-5.00, -4.60, -4.20, -3.80]:
e = np.arange(s0, s0 + 12 + w0, w0)
c, _ = np.histogram(b1, bins=e)
m = int(np.argmax(c))
print(" %s %16d %20d %24.4f"
% (pw("%.2f" % s0, 12), peaks(c), int(c.max()), (e[m] + e[m + 1]) / 2))
print(" 폭 1.60 에서는 시작점에 따라 봉우리가 하나로도 둘로도 보입니다")
print(" 폭을 자료에서 정하는 규칙이 셋 있습니다")
sd1 = float(b1.std())
iqr1 = float(np.quantile(b1, 0.75) - np.quantile(b1, 0.25))
rules = [("스터지스", (b1.max() - b1.min()) / (np.ceil(np.log2(n1)) + 1)),
("스콧", 3.49 * sd1 * n1 ** (-1 / 3)),
("프리드먼-디아코니스", 2 * iqr1 * n1 ** (-1 / 3))]
print(" %s %s %s %s" % (pw("규칙", 22), rw("폭", 12), rw("구간 개수", 12),
rw("보이는 봉우리", 16)))
for nm, w in rules:
e = np.arange(b1.min(), b1.max() + w, w)
c, _ = np.histogram(b1, bins=e)
print(" %s %12.4f %12d %16d"
% (pw(nm, 22), w, len(c), peaks(c)))
print(" 스터지스는 표본이 커도 구간을 거의 안 늘려 큰 자료에서 뭉갭니다")
print(" 프리드먼-디아코니스는 IQR 을 써서 꼬리가 두꺼운 자료에 강합니다")
print(" 히스토그램은 자료를 보여 준다고 하지만 두 번의 선택이 이미 들어 있습니다")
# --- 문제 2: 매끄럽게 그리면 무엇이 달라지는가 --------------------------
print(" 각 점에 작은 산을 얹어 더하면 매끄러운 밀도가 됩니다")
g2 = np.linspace(-5, 5, 1001)
sub = rng.permutation(b1)[:4000]
print(" 대역폭이 히스토그램의 폭과 같은 자리를 차지합니다")
print(" %s %s %s %s" % (pw("대역폭", 12), rw("보이는 봉우리", 16),
rw("최댓값", 12), rw("실버만 규칙 대비", 18)))
sil = 0.9 * min(float(sub.std()), float(np.quantile(sub, 0.75)
- np.quantile(sub, 0.25)) / 1.34) * len(sub) ** (-0.2)
for h in [0.05, 0.15, sil, 0.60, 1.20]:
d = kde(sub, g2, h)
print(" %s %16d %12.4f %18.4f"
% (pw("%.4f" % h, 12), peaks(d), float(d.max()), h / sil))
print(" 실버만 규칙이 주는 폭은 %.4f 입니다" % sil)
print(" 실버만은 하나의 봉우리를 가정하고 만든 규칙이라 봉우리가 둘이면 넓게 잡습니다")
print(" 대역폭을 키우면 봉우리 개수가 단조로 줄어듭니다")
print(" %s %s" % (pw("대역폭", 12), rw("보이는 봉우리", 16)))
prev = None
for h in [0.05, 0.10, 0.20, 0.40, 0.80, 1.60]:
k = peaks(kde(sub, g2, h))
print(" %s %16d" % (pw("%.2f" % h, 12), k))
print(" 봉우리가 하나가 되는 가장 작은 폭을 임계 대역폭이라 하고 봉우리 검정에 씁니다")
print(" 경계가 있는 자료에서는 밀도가 밖으로 새어 나갑니다")
ex = rng.exponential(1.0, 20000)
g3 = np.linspace(-2, 8, 1001)
print(" 값이 0 이상인 지수 자료입니다. 0 아래에는 자료가 하나도 없습니다")
print(" %s %s %s" % (pw("대역폭", 12), rw("0 아래로 샌 질량", 20),
rw("0 에서의 밀도", 16)))
for h in [0.05, 0.15, 0.40]:
d = kde(ex, g3, h)
below = float(np.trapezoid(d[g3 < 0], g3[g3 < 0]))
print(" %s %20.6f %16.4f" % (pw("%.2f" % h, 12), below,
float(np.interp(0.0, g3, d))))
print(" 참 밀도는 0 에서 1 인데 새어 나가는 만큼 낮게 나옵니다")
print(" 경계가 있으면 반사시키거나 로그를 씌운 뒤 되돌리는 방법을 씁니다")
# --- 문제 3: 고를 것이 없는 그림 ----------------------------------------
print(" 경험분포함수는 폭도 대역폭도 고르지 않습니다")
print(" F_n(x) 는 x 이하인 자료의 비율이고 자료가 정하면 그대로 정해집니다")
n3 = 200
s3 = np.sort(rng.normal(0, 1, n3))
gz = (np.arange(200001) - 100000) * 1e-4
phi = np.exp(-gz * gz / 2) / np.sqrt(2 * np.pi)
cdf = (np.cumsum(phi) - 0.5 * phi) * 1e-4
cdf = cdf - cdf[100000] + 0.5
gg = np.linspace(-4, 4, 801)
Fn = np.searchsorted(s3, gg, side="right") / n3
Ft = np.interp(gg, gz, cdf)
print(" 표본 %d 개에서 가장 큰 차이는 %.6f 입니다" % (n3, float(np.max(np.abs(Fn - Ft)))))
print(" 이 차이의 상한이 표본 크기만으로 정해집니다")
print(" P(sup|F_n - F| > eps) <= 2 exp(-2 n eps^2) 이 드보레츠키 부등식입니다")
print(" %s %s %s" % (pw("표본 크기", 12), rw("95 퍼센트 띠의 반폭", 22),
rw("실제 벗어난 비율", 20)))
for n in [50, 200, 1000, 10000]:
eps = np.sqrt(np.log(2 / 0.05) / (2 * n))
out = 0
for _ in range(1000):
v = np.sort(rng.normal(0, 1, n))
Fv = np.searchsorted(v, gg, side="right") / n
if np.max(np.abs(Fv - Ft)) > eps:
out += 1
print(" %s %22.6f %20.4f" % (pw(str(n), 12), eps, out / 1000))
print(" 실제로 벗어나는 비율이 0.05 보다 훨씬 작습니다. 부등식이 넉넉하기 때문입니다")
print(" 대신 경험분포함수는 봉우리를 잘 안 보여 줍니다")
print(" 봉우리는 기울기의 최댓값으로 나타나는데 눈으로 기울기를 읽기 어렵습니다")
sm = np.sort(rng.permutation(b1)[:4000])
Fb = np.searchsorted(sm, gg, side="right") / 4000
sl = np.diff(Fb) / (gg[1] - gg[0])
sls = np.convolve(sl, np.ones(41) / 41, mode="same")
print(" 기울기를 그대로 세면 봉우리가 %d 개로 잡음이 섞입니다" % peaks(sl))
print(" 41 칸씩 평활한 뒤 세면 %d 개로 참값과 맞습니다" % peaks(sls))
print(" 기울기가 잠깐 완만해지는 구간이 두 봉우리 사이입니다")
print(" %s %s" % (pw("보는 방법", 26), rw("봉우리 개수", 14)))
print(" %s %14d" % (pw("경험분포의 기울기 그대로", 26), peaks(sl)))
print(" %s %14d" % (pw("기울기를 평활한 뒤", 26), peaks(sls)))
print(" %s %14d" % (pw("밀도로 바로 그리면", 26), peaks(kde(sm, gg, 0.20))))
print(" 그래서 분포의 모양을 보려면 밀도를 쓰고 값을 읽으려면 경험분포를 씁니다")
# --- 문제 4: 이론분포와 맞대어 보기 -------------------------------------
print(" 표본 분위수와 이론 분위수를 짝지어 그리면 어긋난 자리가 드러납니다")
n4 = 2000
pp = (np.arange(1, n4 + 1) - 0.5) / n4
th = np.interp(pp, cdf, gz)
print(" %s %s %s %s" % (pw("표본이 나온 분포", 18), rw("아래 꼬리 기울기", 18),
rw("가운데 기울기", 16), rw("위 꼬리 기울기", 16)))
lo, mid, hi = slice(0, 200), slice(900, 1100), slice(1800, 2000)
for nm, v in [("표준정규", rng.normal(0, 1, n4)),
("자유도 3 인 t", rng.standard_t(3, n4)),
("지수", rng.exponential(1.0, n4)),
("균등", rng.uniform(0, 1, n4))]:
s = np.sort((v - v.mean()) / v.std())
out = []
for sl2 in [lo, mid, hi]:
A = np.stack([np.ones(len(th[sl2])), th[sl2]], axis=1)
out.append(float(np.linalg.lstsq(A, s[sl2], rcond=None)[0][1]))
print(" %s %18.4f %16.4f %16.4f" % (pw(nm, 18), out[0], out[1], out[2]))
print(" 기울기가 1 이면 이론과 같고 크면 그쪽 꼬리가 두꺼운 것입니다")
print(" %s %s" % (pw("그림의 모양", 24), rw("무엇을 뜻하는가", 26)))
for a, b in [("직선", "이론분포와 같습니다"),
("양끝이 위로 휨", "오른쪽으로 치우쳤습니다"),
("양끝이 아래로 휨", "왼쪽으로 치우쳤습니다"),
("S 자로 눕는 모양", "꼬리가 얇습니다"),
("S 자로 서는 모양", "꼬리가 두껍습니다"),
("끝의 몇 점만 벗어남", "이상치입니다")]:
print(" %s %s" % (pw(a, 24), rw(b, 26)))
print(" 양끝은 원래 크게 흔들리므로 몇 점이 벗어난 것만으로 판단하면 안 됩니다")
print(" %s %s %s" % (pw("순서", 12), rw("표준오차", 14), rw("가운데 대비", 14)))
for k in [1, 10, 100, 1000]:
q = (k - 0.5) / n4
zq = float(np.interp(q, cdf, gz))
f = float(np.exp(-zq * zq / 2) / np.sqrt(2 * np.pi))
se = np.sqrt(q * (1 - q) / n4) / f
q0 = 0.5
se0 = np.sqrt(0.25 / n4) / float(1 / np.sqrt(2 * np.pi))
print(" %s %14.6f %14.4f" % (pw(str(k), 12), se, se / se0))
print(" 가장 바깥 점의 표준오차가 가운데의 여러 배입니다. 165강 문제 4 그대로입니다")
# --- 문제 5: 여러 분포를 나란히 놓기 ------------------------------------
print(" 165강 문제 3 의 자료 셋을 다시 봅니다. 다섯 수가 모두 같았습니다")
n5 = 200000
uu = rng.random(n5)
uni = 4.0 * uu - 2.0
bim = np.interp(uu, np.array([0.0, 0.25, 0.49, 0.51, 0.75, 1.0]),
np.array([-2.0, -1.0, -0.9, 0.9, 1.0, 2.0]))
nor = np.clip(rng.normal(0, 1.0 / 0.6744897502, n5), -2.0, 2.0)
sets = [("균등", uni), ("봉우리 둘", bim), ("정규를 잘라 냄", nor)]
print(" %s %s %s %s" % (pw("자료", 16), rw("Q1", 10), rw("중앙값", 10), rw("Q3", 10)))
for nm, v in sets:
a, b, c = np.quantile(v, [0.25, 0.5, 0.75])
print(" %s %10.4f %10.4f %10.4f" % (pw(nm, 16), a, b, c))
print(" 상자그림으로는 셋이 같아 보입니다")
print(" 밀도와 경험분포는 셋을 구별합니다")
g5 = np.linspace(-2, 2, 401)
print(" %s %s %s" % (pw("자료", 16), rw("밀도의 봉우리", 16),
rw("균등과의 최대 분포 차이", 26)))
Fu = np.searchsorted(np.sort(uni), g5, side="right") / n5
for nm, v in sets:
d = kde(v[:40000], g5, 0.12)
Fv = np.searchsorted(np.sort(v), g5, side="right") / n5
print(" %s %16d %26.6f" % (pw(nm, 16), peaks(d), float(np.max(np.abs(Fv - Fu)))))
print(" 봉우리 둘인 자료는 균등과 분포 차이가 0.2 를 넘습니다. 전혀 다른 자료입니다")
print(" 그림마다 보이는 것과 감추는 것이 다릅니다")
print(" %s %s %s %s" % (pw("그림", 16), rw("봉우리", 10), rw("분위수", 10),
rw("개별 자료", 12)))
for nm, a, b, c in [("상자그림", "안 보임", "보임", "이상치만"),
("바이올린", "보임", "겹치면 보임", "안 보임"),
("히스토그램", "보임", "안 보임", "안 보임"),
("경험분포", "겨우 보임", "정확히 보임", "계단으로 보임"),
("점 다 찍기", "보임", "안 보임", "전부 보임")]:
print(" %s %10s %10s %12s" % (pw(nm, 16), rw(a, 10), rw(b, 10), rw(c, 12)))
print(" 자료가 적으면 점을 다 찍는 것이 가장 정직합니다")
print(" %s %s" % (pw("표본 크기", 14), rw("권하는 그림", 30)))
for a, b in [("20 미만", "점을 다 찍습니다"),
("20 부터 200", "점과 상자그림을 겹칩니다"),
("200 부터 10000", "밀도나 히스토그램을 씁니다"),
("10000 이상", "밀도에 경험분포를 곁들입니다")]:
print(" %s %s" % (pw(a, 14), rw(b, 30)))
print(" 하나를 고르는 것이 아니라 두 개를 겹쳐 서로의 약점을 메우는 편이 낫습니다")
# 히스토그램은 구간의 폭과 시작점을 정해야 그려집니다
# 봉우리가 둘인 자료 40000 개입니다. 참 봉우리는 -1.2 와 1.2 입니다
# 구간 폭 구간 개수 칸당 평균 도수 칸 도수의 상대 잡음 보이는 봉우리
# 0.01 1000 40.0 0.1581 95
# 0.05 200 200.0 0.0707 2
# 0.15 67 597.0 0.0409 2
# 0.80 13 3076.9 0.0180 2
# 1.50 7 5714.3 0.0132 2
# 3.00 4 10000.0 0.0100 1
# 칸당 도수가 m 이면 그 칸의 상대 잡음이 1/sqrt(m) 입니다
# 폭이 좁으면 칸당 자료가 적어 잡음이 커지고 없던 봉우리가 95 개까지 생깁니다
# 폭이 넓으면 흔들림은 사라지지만 진짜 봉우리까지 뭉갭니다
# 폭을 그대로 두고 시작점만 옮겨도 결과가 뒤집힙니다
# 시작점 보이는 봉우리 가장 높은 칸의 도수 가장 높은 칸의 가운데
# -5.00 1 17370 -1.0000
# -4.60 1 17314 1.0000
# -4.20 2 17231 1.4000
# -3.80 2 17222 -1.4000
# 폭 1.60 에서는 시작점에 따라 봉우리가 하나로도 둘로도 보입니다
# 폭을 자료에서 정하는 규칙이 셋 있습니다
# 규칙 폭 구간 개수 보이는 봉우리
# 스터지스 0.3793 17 2
# 스콧 0.1323 49 2
# 프리드먼-디아코니스 0.1398 47 2
# 스터지스는 표본이 커도 구간을 거의 안 늘려 큰 자료에서 뭉갭니다
# 프리드먼-디아코니스는 IQR 을 써서 꼬리가 두꺼운 자료에 강합니다
# 히스토그램은 자료를 보여 준다고 하지만 두 번의 선택이 이미 들어 있습니다
# 각 점에 작은 산을 얹어 더하면 매끄러운 밀도가 됩니다
# 대역폭이 히스토그램의 폭과 같은 자리를 차지합니다
# 대역폭 보이는 봉우리 최댓값 실버만 규칙 대비
# 0.0500 2 0.4280 0.2247
# 0.1500 2 0.3950 0.6741
# 0.2225 2 0.3740 1.0000
# 0.6000 2 0.2604 2.6964
# 1.2000 1 0.2003 5.3927
# 실버만 규칙이 주는 폭은 0.2225 입니다
# 실버만은 하나의 봉우리를 가정하고 만든 규칙이라 봉우리가 둘이면 넓게 잡습니다
# 대역폭을 키우면 봉우리 개수가 단조로 줄어듭니다
# 대역폭 보이는 봉우리
# 0.05 2
# 0.10 2
# 0.20 2
# 0.40 2
# 0.80 2
# 1.60 1
# 봉우리가 하나가 되는 가장 작은 폭을 임계 대역폭이라 하고 봉우리 검정에 씁니다
# 경계가 있는 자료에서는 밀도가 밖으로 새어 나갑니다
# 값이 0 이상인 지수 자료입니다. 0 아래에는 자료가 하나도 없습니다
# 대역폭 0 아래로 샌 질량 0 에서의 밀도
# 0.05 0.015058 0.4832
# 0.15 0.050243 0.4426
# 0.40 0.121169 0.3667
# 참 밀도는 0 에서 1 인데 새어 나가는 만큼 낮게 나옵니다
# 경계가 있으면 반사시키거나 로그를 씌운 뒤 되돌리는 방법을 씁니다
# 경험분포함수는 폭도 대역폭도 고르지 않습니다
# F_n(x) 는 x 이하인 자료의 비율이고 자료가 정하면 그대로 정해집니다
# 표본 200 개에서 가장 큰 차이는 0.027903 입니다
# 이 차이의 상한이 표본 크기만으로 정해집니다
# P(sup|F_n - F| > eps) <= 2 exp(-2 n eps^2) 이 드보레츠키 부등식입니다
# 표본 크기 95 퍼센트 띠의 반폭 실제 벗어난 비율
# 50 0.192065 0.0280
# 200 0.096032 0.0470
# 1000 0.042947 0.0270
# 10000 0.013581 0.0420
# 실제로 벗어나는 비율이 0.05 보다 훨씬 작습니다. 부등식이 넉넉하기 때문입니다
# 대신 경험분포함수는 봉우리를 잘 안 보여 줍니다
# 봉우리는 기울기의 최댓값으로 나타나는데 눈으로 기울기를 읽기 어렵습니다
# 기울기를 그대로 세면 봉우리가 126 개로 잡음이 섞입니다
# 41 칸씩 평활한 뒤 세면 2 개로 참값과 맞습니다
# 기울기가 잠깐 완만해지는 구간이 두 봉우리 사이입니다
# 보는 방법 봉우리 개수
# 경험분포의 기울기 그대로 126
# 기울기를 평활한 뒤 2
# 밀도로 바로 그리면 2
# 그래서 분포의 모양을 보려면 밀도를 쓰고 값을 읽으려면 경험분포를 씁니다
# 표본 분위수와 이론 분위수를 짝지어 그리면 어긋난 자리가 드러납니다
# 표본이 나온 분포 아래 꼬리 기울기 가운데 기울기 위 꼬리 기울기
# 표준정규 0.8570 0.9710 1.0228
# 자유도 3 인 t 2.3621 0.6290 2.1025
# 지수 0.0702 0.8653 2.1067
# 균등 0.2244 1.2703 0.2369
# 기울기가 1 이면 이론과 같고 크면 그쪽 꼬리가 두꺼운 것입니다
# 그림의 모양 무엇을 뜻하는가
# 직선 이론분포와 같습니다
# 양끝이 위로 휨 오른쪽으로 치우쳤습니다
# 양끝이 아래로 휨 왼쪽으로 치우쳤습니다
# S 자로 눕는 모양 꼬리가 얇습니다
# S 자로 서는 모양 꼬리가 두껍습니다
# 끝의 몇 점만 벗어남 이상치입니다
# 양끝은 원래 크게 흔들리므로 몇 점이 벗어난 것만으로 판단하면 안 됩니다
# 순서 표준오차 가운데 대비
# 1 0.378769 13.5154
# 10 0.111299 3.9714
# 100 0.047329 1.6888
# 1000 0.028025 1.0000
# 가장 바깥 점의 표준오차가 가운데의 여러 배입니다. 165강 문제 4 그대로입니다
# 165강 문제 3 의 자료 셋을 다시 봅니다. 다섯 수가 모두 같았습니다
# 자료 Q1 중앙값 Q3
# 균등 -1.0034 -0.0000 0.9981
# 봉우리 둘 -1.0034 -0.0007 0.9998
# 정규를 잘라 냄 -1.0067 -0.0121 0.9966
# 상자그림으로는 셋이 같아 보입니다
# 밀도와 경험분포는 셋을 구별합니다
# 자료 밀도의 봉우리 균등과의 최대 분포 차이
# 균등 1 0.000000
# 봉우리 둘 2 0.214620
# 정규를 잘라 냄 1 0.089835
# 봉우리 둘인 자료는 균등과 분포 차이가 0.2 를 넘습니다. 전혀 다른 자료입니다
# 그림마다 보이는 것과 감추는 것이 다릅니다
# 그림 봉우리 분위수 개별 자료
# 상자그림 안 보임 보임 이상치만
# 바이올린 보임 겹치면 보임 안 보임
# 히스토그램 보임 안 보임 안 보임
# 경험분포 겨우 보임 정확히 보임 계단으로 보임
# 점 다 찍기 보임 안 보임 전부 보임
# 자료가 적으면 점을 다 찍는 것이 가장 정직합니다
# 표본 크기 권하는 그림
# 20 미만 점을 다 찍습니다
# 20 부터 200 점과 상자그림을 겹칩니다
# 200 부터 10000 밀도나 히스토그램을 씁니다
# 10000 이상 밀도에 경험분포를 곁들입니다
# 하나를 고르는 것이 아니라 두 개를 겹쳐 서로의 약점을 메우는 편이 낫습니다