확률적 데이터
- 결정론적 데이터(deterministic data): 항상 같은 값이 나오는 데이터
- 확률적 데이터(random data, probabilistic data, stochastic data): 예측할 수 없는 값이 나오는 데이터
- 여러 조건이나 상황에 따라 데이터 값이 영향을 받는다
- 측정 시에 오차가 발생한다
분포
- 확률적 데이터에서 어떠한 값이 자주 나오고 어떠한 값이 드물게 나오는가를 나타내는 정보
- count plot: 범주형 데이터
- histogram: 실수형 데이터
기술통계
- 여러가지 숫자를 계산하여 분포의 특징을 나태내는 방식
- 종류
- 표본평균, 표본중앙값, 표본최빈값
- 표본분산, 표본표준편차
- 표본왜도, 표본첨도
표본평균
- 일반적으로 부르는 평균 (\(m \ or \ \bar x\))
- \[m = \bar x = {1 \over N} \sum_{i=1}^N x_i\]
표본중앙값
- 전체 자료를 크기별로 정렬했을 때 가장 중앙에 위치하는 값
- N이 홀수: 중앙값 = \((N+1)/2\)째 표본
- N이 짝수: 중앙값 = \(N/2\)째 표본과 \(N/2+1\)째 표본의 평균
표본최빈값
- 데이터 값 중 가장 빈번히 나오는 값(most frequent value, sample mode)
- 유한한 종류의 값이 존재하는 데이터에 적합
- 무한한 종류의 값이 존재하는 데이터의 경우, 구간을 나누어 최빈값을 사용한다. 기준에 따라 달라지기 때문에 신뢰도 떨어진다.
단봉분포와 다봉분포
- 단봉(uni-modal)분포: 분포의 모양에서 봉우리가 하나인 경우
- 다봉(multi-modal)분포: 분포의 모양에서 봉우리가 여럿인 경우
대칭분포
- 분포가 표본평군을 기준으로 대칭인 대칭분포
- 표본중앙값 = 표본평균
- 분포가 대칭분포이면서 하나의 최고값만을 가지는 단봉분포
- 표본최빈값 = 표본평균
- 대칭분포를 비대칭으로 만드는 데이터가 더해지면
- 표본평균이 가장 크게 영향을 받음
- 표본최빈값이 가장 적게 영향을 받음
분산과 표준편차
- 데이터가 얼마나 변동하고 있는지 나타내는 방법
- 표본분산(sample variance)
- 표본표준편차(sample standard deviatin)
- \[standard \ deviation = \sqrt {variance}\]
- \[v_{biased} = s_{biased}^2 = {1 \over N} \sum_{i=1}^N (x_i - \bar x)^2\]
-
\[v_{unbiased} = s_{unbiased}^2 = {1 \over N-1} \sum_{i=1}^N (x_i - \bar x)^2\]
- 표본 분산이 모집단 분산에 맞춰서 동일하게 보정된 것
표본비대칭도
- 표본비대칭도(sample skewness): 평균과의 거리의 세제곱을 이용하여 구한 특징값
- 표본비대칭도 = 0: 분포가 대칭
- 표본비대칭도 < 0: 표본평균값을 기준으로 왼쪽에 있는 값을 가진 표본이 나올 가능성이 크다
- \[{ {1 \over N} \sum_{i=1}^N (x_i - \bar x)^3 \over {\sqrt{ {1 \over N-1} \sum_{i=1}^N (x_i - \bar x)^2}^3}}\]
표본첨도
- 표본첨도(sample kurtosis): 평균과의 거리의 네제곱을 이용하여 구한 특징값
- 데이터가 중앙에 몰려있는 정도를 정밀하게 비교하는데 쓰임
- 사람의 눈으로 첨도를 구별하는 것은 어려움
- 첨도 > 정규분포: 표본첨도 양수
- 첨도 < 정규분포: 표본첨도 음수
- \[{ {1 \over N} \sum_{i=1}^N (x_i - \bar x)^4 \over ({1 \over N} \sum_{i=1}^N(x_i - \bar x)^2)^2} - 3\]
표본모멘트
- k차 표본모멘트(sample moment): k제곱을 이용하여 구한 모멘트
- \[{1 \over N} \sum_{i=1}^N x_i^k\]
- 표본 중앙모멘트(sample centered moment): \({1 \over N} \sum_{i=1}^N (x_i - \bar x)^k\) (2차 표본모멘트 이상)
확률변수
- 수학적으로 확률공간의 표본을 입력으로 받아서 실수인 숫자로 바꾸어 출력하는 함수
- \[\omega \in \Omega \rightarrow x \in R\]
- \(X(\omega) = x\) (\(X\): 확률변수)
이산확률변수
- 이산확률변수(discrete random variable): 확률변수값이 연속적이지 않고 떨어져 있도록 정의할 수 있는 경우 (e.g. \(X(a) = 1, X(b) = 2, X(c) = 3\))
- 확률질량함수: 표본이 나올 가능성을 출력하는 함수 (e.g. \(p(a)= {1 \over 4}, p(b)= {2 \over 4}, p(c)= {1 \over 4}\))
- 표본공간의 원소의 갯수가 무한대인 경우도 이산확률변수가 될 수 있음
연속확률변수
- 연속활률변수(continuous random variable): 연속적이고 무한대의 실수 표본값을 가지는 확률변수
- 모든 표본이 실수인 숫자로 변환되면 모든 사건은 구간사건의 조합으로 표시됨 (확률분포를 수학적인 확률밀도함수로 나타낼 수 있음)
확률변수와 실제 데이터
- 확률변수는 실수인 데이터를 생성하는 데이터생성기
- 주사위에서 나오는 숫자는 1부터 6까지이고, 균일분포 확률분포함수를 가진 이산확률변수
- 정상인의 최고혈압은 실수가 나오고, 120 mmHg 근처에서 기댓값을 가지는 단봉분포 모양의 확률분포함수를 가진 연속확률변수
- 표본화
- 확률분포함수에 따라 표본공간의 표본이 현실 세계의 데이터로 선택되는 것 (= 실현, realization)
- 데이터 집합에서 일부 데이터만 선택하는 과정
- 확률변수와 실제 데이터의 관계
- 확률변수로부터 데이터를 여러 번 생성하는 경우 실제 데이터값은 매번 달라질 수 있지만 확률변수 자체는 변하지 않음
- 확률변수의 확률분포함수는 직접 관찰할 수 없고, 확률변수에서 만들어지는 실제 데이터값을 이용하여 확률분포함수를 추정하는 것
- 확률변수에서 만들어지는 실제 데이터값은 확률변수가 가진 특성을 반영하고 있음
- 데이터 개수가 많을수록 확률분포함수를 정확하게 묘사할 수 있음
연습문제
- 7.1.1
- 1
df['petal length (cm)'].hist() plt.title("petal") plt.show()
- 다봉분포
- 2
df[df['species']=='setosa']['petal length (cm)'].hist() plt.title("petal") plt.show()
- 단봉분포
- 1
- 7.1.2
- 1
x = df[df['species']=='virginica']['petal length (cm)'] bins = np.linspace(0, 10, 11) ns, _ = np.histogram(x, bins=bins) sample_mean = np.mean(x) sample_median = np.median(x) mode_index = np.argmax(ns) sample_mode = 0.5 * (bins[mode_index] + bins[mode_index + 1]) print(sample_mean) print(sample_median) sns.displot(x, bins=bins) plt.axvline(sample_mean, c='k', ls=":", label="mean") plt.axvline(sample_median, c='k', ls="--", label="median") plt.axvline(sample_mode, c='k', ls="-", label="most frequent value") plt.title("mean, median, most frequent value") plt.xlabel("petal length") plt.legend() plt.show()
- 2
범위가 더 세분화되어 분포가 달라진다
x = df[df['species']=='virginica']['petal length (cm)'] bins = np.linspace(0, 10, 101) ns, _ = np.histogram(x, bins=bins) sample_mean = np.mean(x) sample_median = np.median(x) mode_index = np.argmax(ns) sample_mode = 0.5 * (bins[mode_index] + bins[mode_index + 1]) print(sample_mean) print(sample_median) sns.displot(x, bins=bins) plt.axvline(sample_mean, c='k', ls=":", label="mean") plt.axvline(sample_median, c='k', ls="--", label="median") plt.axvline(sample_mode, c='k', ls="-", label="most frequent value") plt.title("mean, median, most frequent value") plt.xlabel("petal length") plt.legend() plt.show()
- 1
- 7.1.3
- 1
np.mean(r), np.var(r), np.std(r) # (0.0004713634116751941, 0.0001517048092072256, 0.012316850620480286)
- 2
av = np.std(r) * 0.16 av # 0.001970696099276846
- 1
이 글은 ‘데이터 사이언스 스쿨 수학편’을 정리한 것입니다.
질문이나 오류가 있다면 댓글 남겨주세요.