통계
고친 사람 github-actions[bot]
통계는 많은 값을 몇 개의 수로 줄여 읽게 해 줍니다. 일부만 재고도 전체가 어떨지 짐작하게 해 줍니다. 데이터베이스에서는 뜻이 좁습니다. 행을 찾는 방법을 고르려고 테이블마다 모아 두는 요약값을 가리킵니다.
쉽고 빠른 이해
통계는 값 무더기를 수 몇 개로 줄여 줍니다. 요청 백만 건의 응답 시간을 「평균 0.2초」 한 마디로 말하게 해 줍니다.
이게 없으면 두 가지가 막힙니다. 백만 건을 눈으로 다 읽을 수 없습니다. 모든 사용자에게 다 물어볼 수도 없습니다.
- 알고 싶은 대상 전체를 정합니다
- 그중 일부를 고르게 뽑아 값을 잽니다
- 잰 값으로 수를 계산해 전체가 어떨지 짐작합니다
대가는 둘입니다. 짐작에는 늘 틀릴 여지가 남습니다. 수 몇 개로 줄이는 동안 버린 값의 모양도 안 보이게 됩니다.
그래서 결제 합계처럼 한 건도 틀리면 안 되는 값은 통계로 짐작하지 않고 전부 셉니다.
상세
냄비에 끓인 국이 싱거운지 알려고 냄비를 다 비우는 사람은 없습니다. 잘 저은 뒤 한 숟갈만 떠서 맛을 봅니다. 그 한 숟갈이 냄비 전체의 맛을 알려 줍니다.
통계는 값을 모아 수 몇 개로 요약하는 방법입니다. 그 수로 아직 못 본 전체까지 짐작합니다. 오늘 들어온 요청 가운데 천 건의 응답 시간을 모아 평균을 내는 일이 통계입니다. 그 평균으로 오늘 들어온 요청 전체가 얼마나 빨랐는지 말하는 일도 통계입니다.
통계가 필요한 까닭은 둘입니다. 값이 수천 개를 넘으면 사람은 목록을 읽어서 아무것도 알아내지 못합니다. 알고 싶은 대상을 전부 재는 일이 불가능하거나 너무 비쌀 때도 많습니다.
모든 사용자에게 설문을 돌릴 수는 없습니다. 내일 들어올 요청은 아직 잴 수조차 없습니다. 이럴 때 손에 쥔 일부로 전체를 말하게 해 주는 것이 통계입니다. 이 방법을 다루는 학문을 통계학이라고 부릅니다.
통계라는 말이 가리키는 세 가지
「통계」라는 한 낱말은 맥락마다 가리키는 것이 다릅니다. 세 뜻을 표 하나에 나란히 놓습니다.
| 맥락 | 가리키는 것 | 예 |
|---|---|---|
| 방법 · 학문 | 값을 모아 요약하고 전체를 짐작하는 방법 | 「통계를 공부한다」 |
| 계산해 낸 수 | 값 묶음에서 뽑아낸 수 하나하나 | 「이번 달 접속 통계」 · 평균 응답 시간 |
| 데이터베이스 | 행을 찾는 방법을 고르려고 테이블마다 모아 둔 요약값 | 테이블의 행 수 · 열마다 서로 다른 값의 개수 |
셋은 따로 노는 뜻이 아닙니다. 방법이 만들어 내는 것이 수입니다. 데이터베이스가 모아 두는 요약값도 그런 수의 한 가지입니다. 이 편은 방법으로서의 통계를 먼저 풉니다. 데이터베이스의 통계는 끝에서 따로 봅니다.
모집단과 표본
통계의 짐작은 언제나 두 묶음 사이에서 일어납니다. 알고 싶은 묶음과 손에 쥔 묶음입니다. 응답 시간을 재는 서비스 하나를 예로 따라갑니다.
모집단은 알고 싶은 대상 전체입니다. 「이 서비스로 오늘 들어온 모든 요청」이 모집단이 됩니다. 무엇을 알고 싶은지 정해야 모집단이 정해집니다.
표본은 모집단에서 뽑아 잰 일부입니다. 요청마다 기록을 남기면 저장 공간이 모자라서 백 건에 한 건만 골라 남기기도 합니다. 그렇게 남은 요청들이 표본입니다.
이렇게 일부를 골라 뽑는 일이 샘플링입니다. 전부 재지 않아도 되니 저장 공간과 시간을 아낄 수 있습니다.
표본의 값으로 계산한 수가 통계량입니다. 표본에 든 요청들의 평균 응답 시간이 통계량입니다.
모집단 전체로 계산했을 때 나올 값은 모수입니다. 오늘 들어온 모든 요청의 평균 응답 시간이 모수입니다. 모수는 대개 알 수 없습니다. 그래서 통계량으로 짐작합니다.
모집단 · 표본 · 통계량 · 모수 네 낱말의 관계를 그림 하나로 봅니다.
flowchart TD
P["모집단 · 오늘 들어온 모든 요청"]
S["표본 · 골라 남긴 요청"]
T["통계량 · 표본의 평균 응답 시간"]
M["모수 · 모든 요청의 평균 응답 시간"]
P -->|일부를 뽑는다| S
S -->|계산한다| T
T -.->|짐작한다| M
모집단에서 모수로 바로 가는 화살표는 없습니다. 표본을 뽑고 통계량을 계산한 뒤 그 통계량으로 모수를 짐작하는 길을 돌아갑니다.
표본에 든 요청을 재면 여러 가지 값이 나옵니다. 대상마다 값이 달라지는 이런 특성이 변수입니다. 응답 시간, 상태 코드, 요청한 경로가 모두 변수입니다. 표로 적으면 변수 하나가 열 하나입니다. 요청 하나는 행 하나입니다.
표본마다 달라지는 통계량
표본으로 모수를 짐작하면 틀릴 여지가 남습니다. 그 까닭을 값 다섯 개로 봅니다. 모집단을 아주 작게 잡아서 모수까지 아는 상태로 만든 뒤 표본을 여러 번 뽑습니다.
from statistics import mean
pop = [10, 20, 30, 40, 50]
mean(pop) # 30 모수
mean([10, 20]) # 15
mean([40, 50]) # 45
mean([20, 40]) # 30
모집단 다섯 값의 평균, 곧 모수는 30 입니다. 두 개씩 뽑은 표본의 평균은 15, 45, 30 으로 제각각입니다. 어느 표본을 뽑았느냐에 따라 통계량이 흔들립니다.
표본에서 얻은 통계량과 모수 사이의 이 차이가 표본 오차입니다. 표본을 크게 뽑을수록 표본 오차는 줄어듭니다. 값 다섯 가운데 넷을 뽑으면 어느 넷을 골라도 평균이 25 에서 35 사이에 듭니다.
뽑는 방식의 치우침
표본을 키워도 줄지 않는 오차가 있습니다. 뽑는 방식이 한쪽으로 기울었을 때 생기는 편향입니다.
기록을 아끼려고 한가한 새벽에 들어온 요청만 골라 남겼다고 해 봅시다. 새벽에는 서버가 한가해서 응답이 빠릅니다. 그러면 표본을 천 건에서 백만 건으로 늘려도 평균은 계속 모수보다 빠르게 나옵니다.
편향을 막는 기본 방법은 모든 대상이 같은 확률로 뽑히게 하는 것입니다. 이 방법이 무작위 추출입니다. 어떤 요청이 표본에 들지를 들어온 시각이나 요청의 성질과 상관없이 정하는 것이 핵심입니다. 국을 잘 저은 뒤 한 숟갈 뜨는 것과 같습니다.
기술 통계와 추론 통계
통계가 하는 일은 둘로 나뉩니다. 손에 쥔 값을 설명하는 일과 손에 없는 값을 짐작하는 일입니다.
기술 통계는 가진 값을 설명합니다. 값을 수 몇 개로 줄이거나 그림으로 그립니다. 가진 값 밖의 이야기는 하지 않습니다.
값을 수 몇 개로 줄인 것이 요약 통계입니다. 가장 흔한 요약이 평균입니다. 값을 크기순으로 세웠을 때 한가운데 선 값인 중앙값도 자주 씁니다. 이런 요약 통계를 표본에서 계산하면 그것이 앞에서 본 통계량입니다.
추론 통계는 표본으로 모집단을 짐작합니다. 오늘 뽑은 요청 천 건으로 오늘 들어온 요청 전체를 말합니다. 지금까지 잰 값으로 새 버전에서 응답 시간이 줄었는지를 말하기도 합니다.
짐작은 틀릴 수 있습니다. 그래서 추론 통계는 틀릴 여지까지 함께 적습니다. 「평균 응답 시간은 0.19초에서 0.21초 사이일 것이다」처럼 범위로 답하는 방식이 신뢰 구간입니다.
배포 전과 후의 평균 응답 시간이 다르게 나왔다고 해 봅시다. 앞에서 본 것처럼 통계량은 표본마다 흔들립니다. 그 차이가 이 흔들림만으로도 생길 만한 크기인지 따지는 절차가 가설 검정입니다.
흔들림만으로는 생기기 어려울 만큼 큰 차이에는 통계적 유의성이 있다고 말합니다. 그래야 「새 버전이 정말 빨라졌다」고 말할 근거가 생깁니다.
기술 통계와 추론 통계를 표 하나에 나란히 놓습니다.
| 기술 통계 | 추론 통계 | |
|---|---|---|
| 묻는 것 | 가진 값이 어떤가 | 가진 적 없는 값이 어떤가 |
| 대표 도구 | 평균 · 중앙값 | 신뢰 구간 · 가설 검정 |
| 예 | 어제 기록의 평균 응답 시간 | 새 버전에서 응답 시간이 줄었나 |
| 틀릴 여지 | 계산만 맞으면 없다 | 늘 남는다 |
데이터베이스가 모아 두는 통계
데이터베이스 분야에서 통계는 좁은 뜻으로 쓰입니다. 행을 찾는 방법을 고르려고 테이블마다 모아 두는 요약값입니다. 이 뜻의 통계를 통계 정보라고 따로 부르기도 합니다.
데이터베이스에서 행을 찾아 달라는 요청이 질의입니다. 「응답 시간이 1초를 넘은 기록을 찾아라」가 질의 하나입니다. 같은 질의라도 행을 찾아가는 방법은 여럿입니다.
인덱스는 값으로 행을 빨리 찾게 해 주는 목차입니다. 인덱스가 있으면 조건에 맞는 몇 행만 골라 찾아갈 수 있습니다. 인덱스를 안 쓰고 테이블을 처음부터 끝까지 읽는 방법도 늘 남아 있습니다.
이 방법들 가운데 하나를 고르는 부품이 질의 옵티마이저입니다. 사람이 방법을 적어 주지 않아도 데이터베이스가 스스로 고르게 해 줍니다.
옵티마이저가 고른 방법이 실행 계획입니다. 어느 인덱스를 탈지, 테이블을 전부 읽을지가 여기에 담깁니다.
고르려면 「조건에 맞는 행이 몇 개일까」를 먼저 어림해야 합니다. 몇 행뿐이면 인덱스를 타는 편이 빠릅니다. 테이블의 절반이 맞으면 전부 읽는 편이 빠를 때가 많습니다. 이 어림의 바탕이 통계입니다.
데이터베이스마다 모으는 값은 조금씩 다릅니다. 흔히 담는 값을 표로 봅니다.
| 담는 값 | 어림에 쓰는 곳 |
|---|---|
| 테이블의 행 수 | 테이블을 전부 읽는 비용 |
| 열마다 서로 다른 값의 개수 | 「이 값과 같다」 조건에 맞을 행 수 |
| 자주 나오는 값과 그 빈도 | 흔한 값을 찾는 조건에 맞을 행 수 |
| 값을 구간으로 나눠 구간마다 센 개수 | 「이 값보다 크다」 같은 범위 조건에 맞을 행 수 |
표의 둘째 줄, 열마다 서로 다른 값의 개수가 카디널리티입니다. 상태 코드 열은 값이 몇 가지뿐이라 카디널리티가 작습니다. 이런 열에서는 값 하나에 맞는 행이 많습니다.
표의 넷째 줄처럼 값을 구간으로 나눠 구간마다 개수를 센 것은 히스토그램입니다. 범위 조건이 걸치는 구간의 개수를 더하면 맞을 행 수를 어림할 수 있습니다.
조건에 맞는 행이 전체에서 차지하는 비율이 선택도입니다. 옵티마이저는 통계로 선택도를 어림합니다. 어림한 선택도에 행 수를 곱해 조건에 맞을 행 수를 얻습니다.
통계는 행이 바뀔 때마다 새로 계산되지 않습니다. 따로 모으는 시점이 있습니다. 그 사이 행이 크게 늘거나 줄면 통계가 낡습니다.
낡은 통계로 어림한 행 수는 실제와 어긋납니다. 열 행쯤이라고 보고 인덱스를 골랐다고 해 봅시다. 실제로 십만 행이 맞으면 한 행씩 따로 찾아가는 일이 십만 번 일어납니다. 테이블을 한 번 쭉 읽는 편보다 훨씬 느려집니다.
그래서 데이터베이스는 통계를 다시 모으는 명령을 둡니다. 변경이 많이 쌓이면 스스로 다시 모으기도 합니다.
큰 테이블의 통계를 모을 때는 모든 행을 읽지 않는 경우가 많습니다. 일부 행만 뽑아 읽고 전체를 짐작합니다. 앞에서 본 표본과 모집단의 관계가 여기에도 똑같이 쓰입니다.
쓰는 때와 안 쓰는 때
통계는 값이 너무 많거나 전부 잴 수 없을 때 꺼내는 도구입니다. 전부 셀 수 있고 한 건도 틀리면 안 되는 값이라면 통계로 짐작할 까닭이 없습니다.
성능을 견줄 때 씁니다. 배포 전과 후의 응답 시간을 표본으로 모아 통계량끼리 견줍니다. 차이가 표본마다 흔들리는 폭보다 큰지를 가설 검정으로 따집니다.
모니터링 화면도 통계를 그립니다. 초마다 쏟아지는 값을 평균 같은 수 하나로 줄여 선 하나로 보여 줍니다.
정산처럼 한 건도 틀리면 안 되는 값에는 쓰지 않습니다. 결제 금액의 합은 표본으로 짐작하지 않고 전부 더합니다.
통계를 읽을 때 조심할 것
통계가 내놓은 수를 읽을 때 자주 걸려 넘어지는 곳이 둘입니다. 요약이 값의 모양을 가리는 일과 함께 움직이는 것을 원인으로 읽는 일입니다.
요약은 값의 모양을 가립니다. [29, 30, 31] 과 [10, 30, 50] 은 평균이 둘 다 30 입니다. 그런데 값이 퍼진 정도는 전혀 다릅니다. 수를 낼 때 그림을 함께 그려 보는 까닭입니다.
한 변수가 달라질 때 다른 변수도 함께 달라지는 관계가 상관관계입니다. 요청이 많은 날 오류도 많았다면 요청 수와 오류 수 사이에 상관관계가 있습니다.
한 변수가 다른 변수를 바꾸는 관계는 인과관계입니다. 상관관계가 있어도 인과관계가 있다는 보장은 없습니다. 요청과 오류가 둘 다 행사 날이라는 세 번째 원인에서 왔을 수 있습니다.
관련 항목
통계를 이루는 기본 개념
모집단 · 표본 · 변수 · 통계량 · 모수 · 확률 변수 · 분포
통계가 나뉘는 하위 분야
기술 통계 · 추론 통계 · 베이즈 통계 · 빈도주의 통계 · 탐색적 자료 분석
가진 값을 요약하는 통계량
요약 통계 · 평균 · 중앙값 · 최빈값 · 분산 · 표준편차 · 분위수 · 백분위수
표본으로 모집단을 짐작하는 도구
신뢰 구간 · 가설 검정 · 통계적 유의성 · p값 · 귀무가설 · 표본 오차 · 대수의 법칙 · 중심 극한 정리
표본을 뽑는 방법과 그 치우침
샘플링 · 무작위 추출 · 층화 추출 · 편향 · 선택 편향 · 표본 크기
통계를 그림으로 보이는 도구
두 변수의 관계를 재는 개념
상관관계 · 인과관계 · 공분산 · 회귀 분석
데이터베이스가 통계를 쓰는 질의 처리 단계
통계 정보 · 질의 옵티마이저 · 실행 계획 · 카디널리티 · 선택도 · 카디널리티 추정 · 비용 모델
통계를 도구로 쓰는 분야
데이터 분석 · 머신러닝 · 모니터링 · A/B 테스트 · 벤치마크 · 성능 회귀
통계의 바탕이 되는 수학 분야
확률론 · 수학 · 선형대수 · 미적분
다른 이름: statistics · 통계학