- 2학기에 수리통계학 배움

- 내용 추가 + 확률 밀도 함수 유도 과정 추가 + 증명 안하고 넘어갔던 부분 추가 예정

- 만약 수리통계학에 없는 내용이라면? . . . . . .

확률 분포란?

- 확률 분포(probability distribution)는 확률 변수가 특정한 값을 가질 확률을 나타내는 함수를 의미한다 ---> 참고: 확률 분포

확률 변수란?

- 확률변수(Random Variable)란 무작위 실험을 했을 때 특정 확률로 발생하는 각각의 결과수치로 맵핑하는 함수

- 무작위 실험 ---> 동전 던지기

- 특정 확률 ---> 앞면이 나올 확률 $\dfrac{1}{2}$, 뒷면이 나올 확률 $\dfrac{1}{2}$

- 각각의 결과 ---> 앞면(H)과 뒷면(T)

- 수치로 맵핑 ---> 앞면(H) : $1$, 뒷면(T) : $2$

연속 확률 분포

- 연속 확률 변수가 가지는 확률 분포

- 이산 확률 변수는 확률을 $P(X=x)$와 같이 표현 가능, 연속 확률 변수는 이런 표현이 무의미 (어차피 $0$)

- 연속 확률 변수는 확률을 $P(A\leq X\leq B)$로 표현 가능

정규 분포

- 정규 분포는 수집된 자료의 분포를 근사하는 데에 자주 사용됨

- 중심극한정리에 의하여 독립적인 확률변수들의 평균은 정규 분포에 가까워지는 성질이 있기 때문임

- 신뢰구간이나 가설검정 등의 모델에서 사용

- 어떤 확률 변수 $X$가 정규분포를 따를 때 기호로 $X \sim N(\mu, \sigma^{2})$과 같이 표기

- 정규 분포의 기댓값, 중앙값, 최빈값은 $\mu$, 분산은 $\sigma^{2}$

- 표준정규분포는 평균이 $0$, 표준편차가 $1$인 경우임 ---> $N(0, 1)$

- 정규 분포에서 $(\mu-2\sigma, \mu+2\sigma)$에 전체 데이터 중 $95\%$가 존재

표준화

- 정규 분포 밀도 함수에서 $Z = \cfrac{X - \mu}{\sigma}$ 를 통해 $X$(원점수)를 $Z$($z$점수) 표준화하여 표준정규분포(z-분포)를 얻을 수 있다

정규 분포의 확률 밀도 함수(PDF)

$f(x) = \dfrac{1}{\sqrt{2\pi\sigma^{2}}}e^{-\dfrac{(x-\mu)^{2}}{2\sigma^{2}}}$

정규 분포 plot

import numpy as np

np.random.normal(loc, scale, size)

- loc는 평균, scale은 표준편차, size는 표본의 수

np.random.normal(loc = 0, scale = 1, size = 1000)

- np.random.normal(loc = 0, scale = 1, size = 1000)을 히스토그램으로 나타내면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.normal(loc = 0, scale = 1, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.normal(loc = 0, scale = 1, size = 1000)')
plt.show()

균일 분포

- 모든 확률 변수에 대하여 구간 내에서 균일한 확률을 가짐

- 임의의 구간 내에서 균일한 확률을 가지기에 난수 생성기로 쓰임

- 이산 확률 변수에서도 가능

균일 분포의 확률 밀도 함수

$f(x) = \begin{cases} \cfrac{1}{b-a} & \text{for $x \in [a,b]$}\\ 0 & \text{otherwise} \end{cases} $

- $f(x)$는 구간 $[a,b]$에서 균등한 확률을 가짐

균일 분포의 기댓값과 분산

- $E(X) = \cfrac{a+b}{2}$

- $Var(X) = \cfrac{(b-a)^{2}}{12}$

균일 분포 plot

import numpy as np

np.random.uniform(low, high, size)

- low는 출력값의 최소 경계, high은 출력값의 최대 경계, size는 표본의 수

np.random.uniform(low = 0, high = 1, size = 1000)

- np.random.uniform(low = 0, high = 1, size = 1000)을 히스토그램으로 나타내면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.uniform(low = 0, high = 1, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.normal(loc = 0, scale = 1, size = 1000)')
plt.show()

연속형 확률변수의 cdf는 $U(0, 1)$을 따른다

  • 증명

$U=F(x)=P(X\leq x)\\ F_{U}(u)=P(U\leq u)=P(F(X)\leq u)=P(X\leq F^{-1}(u))=F(F^{-1}(u))=u\\ f_{U}(u)=1,\;0<u<1\\ \therefore F(X)\sim U(0,1)$

- 역함수가 없는 경우는... 몰라

- 정규분포를 예로 들자

- 정규분포에서 샘플을 뽑고 샘플을 누적분포함수에 input하자

- 그러면 output이 나오고 이를 가지고 확률밀도함수를 그리면 $U(0, 1)$이 된다

- 일단 연속형 확률변수의 cdf 값은 $0$과 $1$ 사이에 있다

- 정규분포에서 $x$를 뽑았는데 $0$이 나왔다고 하자

- 이에 대한 누적분포함수값은 $0.5$이다

- 이를 반복하면 누적분포함수값이 많이 나올것이다

- 이를 가지고 확률밀도함수를 그리면 $U(0, 1)$이라는 것이다

- 즉 누적분포함수값이 $0$과 $1$사이인데 나올 가능성이 모두 같다는 것이다(?)

- 근데 하나의 누적분포함수값에는 하나의 $x$가 대응되는것 아닌가?

- 누적분포함수값이 $0.5$라면 그에 대한 $x$값은 $0$이다

- $0$과 $1$ 사이의 값을 가지는 누적분포함수값이 나올 가능성이 모두 같다면 $x$도 뽑힐 가능성이 같다(?)

- 히스토그램을 그려보면 $x$값이 $0$근처에 몰려있고 $3$이 넘어가면 거의 없는데 뭐가 같지???

- 하지만 이는 잘못됐는데 일단 실수는 무한히 많기에 정규분포에서 특정값이 나올 확률은 $0$이다

- 그러니 특정값에 대한 확률은 같다

- 그렇기에 범위로 비교하는것이 올바르다

- 그러면 $x$값이 $0$과 $1$사이에서 나올 확률이랑 $1$과 $2$사이에서 나올 확률이 같음?

- no 다름

- ??? 위에서 누적분포함수값이 나올 가능성이 모두 같다면 $x$도 뽑힐 가능성이 같다고 했잖음...

- 동일한 누적분포함수값의 범위에 대해서는 같다

- 일단 하나의 실수를 뽑았다고 치자 ---> $x$는 $0$이 나왔고 이에 대한 cdf값은 $0.5$임

- cdf값은 $0$부터 $1$사이에 존재하고 $0$부터 $1$사이의 실수는 무한개이기에 cdf값이 $0.5$일 확률은 $0$이다

- 또한 $x$가 $3$ 이 나왔다고 치고 이에대한 cdf값은 대충 $0.99$라 치자 ---> 이 역시 확률은 $0$이다

- 그럼 범위로 따지면?

- 누적분포함수값이 $0$부터 $0.5$사이일 확률과 $0.5$부터 $1$사이일 확률은 서로 동일하다

- 바꿔말하자면 확률밀도함수 아래의 면적으로 따졌을 때 $-\infty$부터 $0$사이 면적과 $0$부터 $\infty$사이 면적은 동일하다

- 즉 정규분포에서 표본을 뽑았을 때 $x$값이 $-\infty$부터 $0$사이일 확률과 $0$부터 $\infty$사이일 확률은 같다

- 확률밀도함수에 확률은 $y$값이 아니라 면적이다

- $x$값이 $0$과 $1$사이에서 나올 확률이랑 $1$과 $2$사이에서 나올 확률은 다른데 그래프 아래의 면적이 다르다

- 그렇기에 당연히 누적분포함수값의 범위도 다르다

- 정규분포에서 cdf값이 $0.1$과 $0.3$사이일 확률과 $0.5$와 $0.7$사이일 확률은 같음

- 이는 정규분포에서 $x$값을 뽑았을 때 $-1.28\sim -0.52$일 확률과 $0\sim 0.52$일 확률이 같다는 의미

- 즉 $X$를 정규분포에서 생성하고 $X$에 정규분포 cdf를 취하면 이것은 $U(0,1)$을 따른다는 소리

- 직접 구현하여 맞는지 확인해보자

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm ## 연속형 확률변수는 정규분포로 하자
np.random.seed(2021)
x = np.random.normal(loc = 0, scale = 1, size = 10000) ## 표준정규분포

plt.hist(x, bins = 30)
plt.title('Standard Normal Distribution', fontsize = 20)
plt.show()

- $x$는 정규분포에서 뽑은 거니까 이를 가지고 히스토그램을 그리면 당연히 정규분포이다

- $x$축은 정규확률변수가 가질 수 있는 값, $y$축은 빈도수

- 히스토그램의 면적을 $1$로 만들면 $y$축은 $f(x)$(정규분포의 pdf)가 된다

- $f(x) = \dfrac{1}{\sqrt{2\pi\sigma^{2}}}e^{-\dfrac{(x-\mu)^{2}}{2\sigma^{2}}}$

- ex) $f(0) = 0.3989422804014327$

- 정규확률변수가 가질 수 있는 값($x$)의 $99\%$는 $\mu\pm 2\sigma$안에 있고 $\mu$에 가까울 수 록 뽑힐 가능성이 높다

norm.pdf(0)
0.3989422804014327
F_x = norm.cdf(x)
plt.hist(F_x)
plt.show()

- $x$축은 $F(X)$, $y$축은 빈도수, $X$는 정규분포를 따름

- 정말 $U(0, 1)$를 따른다

- 즉 연속형 확률분포(예컨대 정규분포) $f(x)$에서 $x$를 뽑고 이를 동일한 연속형 확률분포의 cdf $F(x)$에 input하여 나온 값으로 히스토그램을 그리면 위와 같이 $U(0,1)$ 된다

  • 뭔가 한번에 와닿지 않는 이유(내 기준)

- 위에 있는 정규분포 히스토그램을 보면 좁은 구간($-1$에서 $1$)에 데이터가 몰려있다

- 그래서 이를 가지고 cdf를 그리면 마찬가지로 cdf도 특정 구간에 값이 몰려있을 것 같은 생각이 든다

- 하지만 그렇지 않은데 아래처럼 생각하면 편하다

- 예컨대 물감통($-1\sim 1$과 $-3\sim -1$)에 동일한 양의 물감이 있음

- 좁고 깊은 물감통에 붓을 푹 담근다((좁은 구간: $-1\sim 1$)에 값이 많이 몰림) ---> 많이 묻힌 만큼 넓은 범위에 칠한다

- 넓고 얕은 물감통에 북을 찍는다((넓은 구간: $-3\sim -1$)에 값이 조금 몰림) ---> 조금 묻힌 만큼 좁은 범위에 칠한다

- 그렇기에 전체적으로 보면 비슷한 수준으로 칠해져있다(균일 분포를 따른다)

- 그럼 특정 연속형 확률분포에서 $x$를 뽑지 않고 그냥 균일분포에서 뽑으면?

X = np.random.uniform(low = -3, high = 3, size = 10000)
plt.hist(norm.cdf(X))
plt.show()

- 균일분포를 따르지 않는다...

- 위와 다른 그림이 나온 이유 $\longrightarrow$ $-1 \sim 1$에는 예상보다 적은 데이터가 있고 $-3 \sim -1$에는 예상보다 많은 데이터가 있음

- 그런데 문득 궁금한점이 있다

x = np.random.normal(loc = 0, scale = 1, size = 10000)

- 위의 코드를 사용하여 정규분포에서 랜덤표본을 뽑았다

- 그런데 랜덤표본은 어떻게 뽑지?(난수 생성기: https://en.wikipedia.org/wiki/Random_number_generation)

- $x$의 pdf를 아는것과 $x$에 대한 샘플링이 가능한것은 다른 문제

- 예컨대 정규분포에서 특정$x$가 뽑힐 확률은 $0$인데 어떻게 뽑을거?

- $U(0,1)$은 생성할 수 있다고 했을 때 랜덤표본을 추출하는 방법을 알아보자

- 위에서 $F(x) = U$라고 했다 ---> 연속형 확률변수의 cdf는 균일분포를 따른다

- 그런데 이를 바꿔 말하자면 $x = F^{-1}(U)$

- 즉 임의의 확률변수에서 $x$를 뽑는것은 $x$의 cdf의 역함수에 $U(0,1)$에서 뽑은 난수를 input하여 구하는것과 동일하다는 것

- 즉 $x$의 cdf의 역함수를 알고 균일분포에서 랜덤표본을 뽑을 수 있으면 임의의 확률변수에서 $x$를 뽑는것과 같은 효과를 얻을 수 있다는 것

- 이를 역변환기법(Inverse CDF Method)이라고 한다

- 단점은 cdf의 역함수를 알아야 한다는 것....

from scipy.stats import uniform 

n = 10000
U = uniform.rvs(size = n)
X1 = norm.ppf(U)
X2 = norm.rvs(size = n)

fig, (ax1, ax2) = plt.subplots(1,2)
ax1.hist(X1, bins = 30)
ax2.hist(X2, bins = 30)
plt.show()

- 정말 둘 다 표준정규분포이다!

카이제곱 분포($\chi^2$분포)

- $k$개의 서로 독립표준 정규 확률변수각각 제곱하여 합해 얻어진 분포

- 이때 $k$는 자유도이며 카이제곱 분포의 매개변수

- 분산의 퍼진 정도를 분포로 보여줌

- 모분산을 구하거나 적합도 검정, 독립성/동질성 검정 등의 모델에서 사용

- $k$개의 독립적이고 표준정규분포를 따르는 확률변수 $Z_1,\dots,Z_k$가 있을 때 자유도 $k$의 카이제곱 분포는

- 확률변수 $Q = \sum\limits^{k}_{i=1}Z{_i}{^2}$의 분포임

- 따라서 $Q \sim \chi{^2}(k)$

- 참고: 카이제곱 분포

카이제곱 분포의 확률 밀도 함수

$f(x; k) = \dfrac{1}{2^\frac{k}{2}\Gamma\big(\frac{k}{2}\big)}x^{\frac{k}{2}-1}e^{-\frac{x}{2}}$

- $\Gamma\big(\frac{k}{2}\big)$는 감마함수이다

카이제곱 분포의 기댓값과 분산

- $E(X) = k$

- $Var(X) = 2k$

카이제곱 분포 plot

import numpy as np

np.random.chisquare(df, size)

- df는 자유도, size는 표본의 수

np.random.chisquare(df = 10, size = 1000)

- np.random.chisquare(df = 10, size = 1000)를 히스토그램으로 나타내면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.chisquare(df = 10, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.chisquare(df = 10, size = 1000)')
plt.show()

- 자유도(df)를 바꿔볼까?

- df = 5

np.random.seed(1)
sample = np.random.chisquare(df = 5, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.chisquare(df = 5 , size = 1000)')
plt.show()

- df = 1

- 표준정규분포의 제곱은 자유도가 1인 카이제곱 분포를 따름

- $V = \bigg(\dfrac{X-\mu}{\sigma}\bigg)^{2} \sim \chi^{2}(1)$

- 표본을 10000개 뽑아 둘을 비교해보자!

np.random.seed(2)
sample = np.random.chisquare(df = 1, size = 10000)

plt.hist(sample, bins = 30)
plt.title('np.random.chisquare(df = 1 , size = 10000)')
plt.show()
np.random.seed(2)
sample = np.random.normal(loc = 0, scale = 1, size = 10000)
sample = sample**2

plt.hist(sample, bins = 30)
plt.title('square of a standard normal distribution')
plt.show()

- 두 분포가 거의 동일하다

- 표준정규분포의 제곱자유도가 1인 카이제곱 분포를 따른다는 것을 확인할 수 있다

지수 분포

- 사건이 서로 독립적일 때, 일정 시간동안 발생하는 사건의 횟수가 포아송 분포를 따른다면, 다음 사건이 일어날 때까지 대기 시간은 지수분포를 따른다(지수 분포)

- 기하 분포에서 베르누이 시행 횟수$n$이 많아지고 성공 확률 $p$가 작아지면 지수 분포로 수렴

- 감마 분포에서 $\alpha = 1$일 때의 특수한 경우임(감마 분포 참고)

지수 분포의 무기억성

- 기하 분포의 무기억성과 같은 내용임

- $P(A\mid B)$ ---> 사건 B가 발생한 상황에서 사건 A가 발생할 확률

- $P(X>s+t\mid X>t) = P(X>s)$

- 핸드폰의 고장률이 지수 분포를 따른다면 내가 핸드폰을 처음 구매하고 1년안에 고장날 확률 = 핸드폰을 5년 사용한 시점에서 1년 안에 고장날 확률

- 물론 현실은 핸드폰을 5년 사용한 후에 고장날 확률이 더 크다

지수 분포의 확률 밀도 함수

$f(x; \beta) = \frac{1}{\beta}e^{-\frac{x}{\beta}},\; x > 0$

- 위의 확률 밀도 함수는 감마 분포의 확률 밀도 함수에서 $\alpha = 1$을 대입한 결과이다

- 여기서 $\beta$는 사건 사이의 평균 시간인데 포아송 분포의 모수인 $\lambda$는 단위 시간당 사건의 평균 발생 횟수이다

- 위의 지수 분포 설명에서 사건의 횟수가 포아송 분포를 따를 때를 전제로 대기 시간은 지수 분포를 따른다고 했다

- 그렇기에 여기서는 위의 확률 밀도 함수 대신 포아송 분포의 모수인 $\lambda = \frac{1}{\beta}$ 를 통해 지수 분포의 확률 밀도 함수를 나타내기로 함

- 위아래 확률 밀도 함수 둘 다 맞는 표현임, 그런데 numpy.random.exponential이 위의 확률 밀도 함수를 사용하므로 위의 확률 밀도 함수를 기억하는 것이 좋을 것 같음

$f(x; \lambda) = \lambda e^{-\lambda x}, \; x>0$

지수 분포의 기댓값과 분산

- $E(X) = \cfrac{1}{\lambda}$

- $Var(X) = \cfrac{1}{\lambda^{2}}$

- 기댓값은 어찌보면 당연한데 단위 시간 동안 사건이 $\lambda$번 발생한다면 대기 시간은 $\cfrac{1}{\lambda}$여야 $\lambda \times \cfrac{1}{\lambda} = 1$(단위 시간)이 성립한다

지수 분포 plot

- 사건이 발생하고 다음 사건이 발생하기 까지의 대기 시간에 대한 확률 분포

- numpy.random.exponential의 확률 밀도 함수는 $f(x; \beta) = \frac{1}{\beta}e^{-\frac{x}{\beta}},\; x > 0$임 (numpy 지수 함수)

import numpy as np

np.random.exponential(scale, size)

- scale은 $\beta$ = 대기 시간, size는 표본의 수

np.random.exponential(scale = 2, size = 1000)

- 우리 집 앞에서 1시간당 평균 0.5명이 넘어진다 ---> $\lambda$(사건의 빈도) $= 0.5$ 이므로 대기 시간 $\beta$(대기 시간) $= 2$

- 다시말하면 우리 집 앞에서 한 명이 넘어지고 다음 사람이 넘어지기 까지 2시간이 걸린다

- 이때 한 사람이 넘어지고 다음 사람이 넘어지기 까지 걸리는 대기 시간에 대한 분포를 그려보자

- np.random.exponential(scale = 2, size = 1000)를 히스토그램으로 나타내보면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.exponential(scale = 2, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.exponential(scale = 2, size = 1000)')
plt.show()

감마 분포

- 감마 분포는 지수 분포나 푸아송 분포 등의 매개변수에 대한 켤레 사전 확률 분포

- 이에 따라 베이즈 확률론에서 사전 확률 분포로 사용

- $\alpha$개의 사건이 일어날 때까지 걸리는 대기 시간에 대한 분포

- 지수 분포를 한 번의 사건이 아닌 여러 개의 사건으로 확장

- 지수 분포의 모수가 $\beta$ ---> $\beta$ = 사건 사이의 평균 시간

- 모수가 $\beta$인 지수 분포를 따르는 확률 변수 X가 $\alpha$개가 있고 각 확률 변수 X는 i.i.d를 따름 ---> 이 확률 변수의 합은 모수가 $\alpha, \beta$인 감마 분포를 따름

- 참고: 감마 분포

감마함수(Gamma Function)

- 복소수 범위까지 일반화 된 팩토리얼(!)

$\Gamma(\alpha) = \int_{0}^{\infty}x^{\alpha-1}e^{-x}dx,\,\alpha \geq 0$

감마함수 성질

- $\Gamma(\alpha+1) = \alpha\Gamma(\alpha)$

- $\Gamma(n) = (n-1)!,\, n \in \mathbb{N}$

- $\Gamma\big(\frac{1}{2}\big) = \sqrt{\pi}$

감마 분포의 확률 밀도 함수

$f(x; \alpha,\beta) = \cfrac{1}{\beta^{\alpha}\Gamma(\alpha)}x^{\alpha - 1}e^{-\frac{x}{\beta}},(x,\alpha, \beta \geq 0)$

- 확률 변수 $X$가 감마 분포를 따른 다면 $X \sim Gamma(\alpha,\beta)$

- 발생하기 까지의 평균$\beta = \cfrac{1}{\lambda}$의 시간이 소요되는 어떤 사건이 $\alpha$번 발생하는데 걸리는 시간 $X$에 대한 확률 분포

- $\lambda$는 포아송 분포의 모수로 단위 시간당 사건의 평균 발생 횟수

- $\alpha = 1$일 때 $\lambda = \cfrac{1}{\beta}$인 지수 분포를 따름

- $X\sim Gamma(1,\beta) \Longleftrightarrow exp\big(\frac{1}{\beta}\big)$

감마 분포의 기댓값과 분산

- $E(X) = \alpha\beta$

- $Var(X) = \alpha\beta^{2}$

감마 분포 plot

- $\alpha$는 형태 모수(shape parameter), $\beta$는 척도 모수(scale parameter)

- 사건이 발생하고 다음 사건이 발생하기 까지의 평균 대기 시간이 $\beta$일 때 $\alpha$번의 사건이 발생하는데 걸리는 시간에 대한 확률 분포

import numpy as np

np.random.gamma(shape, scale, size)

- shape는 $\alpha$, scale은$\beta$, size는 표본의 수

np.random.gamma(shape = 2, scale = 2, size = 1000)

- 우리 집 앞에서 1시간당 평균 0.5명이 넘어진다 ---> $\lambda = 0.5$이므로 $\beta = 2$

- 다시말하면 우리 집 앞에서 한 명이 넘어지고 다음 사람이 넘어지기 까지 평균 2시간이 걸린다

- 이때 2명의 사람이 넘어지기 까지 걸리는 시간에 대한 분포를 그려보자

- np.random.gamma(shape = 2, scale = 2, size = 1000)를 히스토그램으로 나타내보면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.gamma(shape = 2, scale = 2, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.gamma(shape = 2, scale = 2, size = 1000)')
plt.show()

- 위에서 지수 분포는 감마 분포에서 $\alpha = 1$인 특수한 경우라고 했음

- 진짜로 동일한지 $\beta = 4$인 지수 분포와 $\alpha = 1,\beta = 4$인 감마 분포를 히스토그램을 그려 비교하자

np.random.seed(1)
sample1 = np.random.gamma(shape = 1, scale = 4, size = 1000)
sample2 = np.random.exponential(scale = 4, size = 1000)

fig, ax = plt.subplots(1, 2, figsize = (14, 4))

ax[0].hist(sample1, bins = 30)
ax[1].hist(sample2, bins = 30)

ax[0].set_title('np.random.gamma(shape = 2, scale = 4, size = 1000)')
ax[1].set_title('np.random.exponential(scale = 4, size = 1000)')

plt.show()

- 히스토그램을 통해 비교하니 $\alpha = 1$인 감마 분포는 지수 분포와 동일함을 알 수 있다

$\alpha$와$\beta$에 따른 감마 분포 모양

- $\alpha$는 형태 모수로 $\alpha$가 커질수록 그래프의 모양이 종모양에 가까워짐

- $\beta$는 척도 모수로 $\beta$가 커질수록 그래프가 퍼짐

- shape는 $\alpha$, scale은 $\beta$, loc은 위치 매개변수

- scipy.stats.gamma 참고

$\alpha$ 변화 $\beta$ 고정

- $\alpha$(사건 발생 횟수)가 커질수록 그래프가 종모양에 가까워짐

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gamma

loc = 0
scale = 0.5

x = np.linspace(0, 12, 1000)

plt.figure(figsize = (14, 7)) 

for shape in np.arange(2, 11, 2):
    plt.plot(x, gamma(shape, loc, scale).pdf(x), label = 'α = ' + str(shape))

plt.title("Gamma distribution(α = 2, 4, 6, 8, 10, β = 0.5)")
plt.xlabel("$x$")
plt.ylabel("$f(x)$")
plt.grid()
plt.legend()
plt.show()

$\alpha$ 고정 $\beta$ 변화

- $\beta$(대기 시간)가 커질수록 그래프가 넓게 퍼짐

loc = 0
shape = 3

x = np.linspace(0, 16, 1000)

plt.figure(figsize = (14, 7)) 

for scale in np.arange(0.4, 2.1, 0.4):
    plt.plot(x, gamma(shape, loc, scale).pdf(x), label = 'β = ' + str(round(scale, 1)))

plt.title("Gamma distribution(α = 3, β = 0.4, 0.8, 1.2, 1.6, 2.0)")
plt.xlabel("$x$")
plt.ylabel("$f(x)$")
plt.grid()
plt.legend()
plt.show()

t 분포

- 표본평균$\bar{X}$을 이용해 정규분포의 평균을 해석 ---> 모집단이 정규분포를 따를 때

- 표준화한 표본평균의 분포: 모표준편차를 알고 있음$\bigg(\frac{x-\mu}{\sqrt{\frac{\sigma}{n}}}\bigg)$ --> 정규분포, 모표준편차를 모르고 표본표준편차를 알고 있음$\bigg(\frac{x-\bar{x}}{\sqrt{\frac{s}{n}}}\bigg)$ ---> t분포

- 다음의 확률 분포로 정의 ---> $\cfrac{Z}{\sqrt{\frac{V}{\nu}}}$

- $Z$는 표준정규분포, $V$는 자유도$\nu$인 카이제곱 분포

- 자유도커질수록 t분포는 표준정규분포가까워짐 (중심극한정리와 무관) ---> 보통 표본 크기 $n\geq30$이면 표준정규분포와 가깝다고 한다

- [$\star$]표본크기가 커지면 표준정규분포에 가까워짐[$\star$] ---> 표본 크기가 커진다는 것은 모집단에 가까워진다는 의미이므로 표본표준편차도 모표준편차에 가까워짐

- t 분포의 적률생성함수는 정의되지 않음

- 참고: t분포

t 분포의 확률 밀도 함수

$f(x) = \cfrac{\Gamma\big(\frac{\nu + 1}{2}\big)}{\sqrt{\nu\pi}\Gamma\big(\frac{\nu}{2}\big)}\big(1+\frac{x^2}{\nu}\big)^{-\big(\frac{\nu+1}{2}\big)}$

t 분포의 기댓값과 분산

- $E(X) = 0,\; \nu > 1$

- $Var(X) = \cfrac{\nu}{\nu-2}\,(\nu>2),\;\infty\,(1<v\leq2)$

t 분포 plot

import numpy as np
np.random.standard_t(df, size)

- df는 자유도, size는 표본의 수

np.random.standard_t(df = 5, size = 1000)

- np.random.standard_t(df = 5, size = 1000)를 히스토그램으로 나타내보면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.standard_t(df = 5, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.standard_t(df = 5, size = 1000)')
plt.show()

- $x = 0$을 기준으로 대칭임

- 자유도가 5이므로 표본 크기는 6

- 모표준편차 대신 표본표준편차를 알고 표본 크기가 6일 때 표준화한 표본 평균$\bigg(\frac{x-\bar{x}}{\sqrt{\frac{s}{n}}}\bigg)$에 대한 분포

- t분포는 표준정규분포보다 꼬리 부근에 밀도가 높음 ---> 모표준편차 대신 표본표준편차를 사용하기 때문 ---> 표본의 특성상 추출할 때마다 다르므로 변동성이 있음

t분포와 표준정규분포 비교

import numpy as np
import scipy as sp
import scipy.stats
import matplotlib.pyplot as plt
x = np.linspace(-5, 5, 100)

rv_norm = sp.stats.norm(loc=0, scale=1)
rv_t10 = sp.stats.t(df=10)
rv_t5 = sp.stats.t(df=5)
rv_t1 = sp.stats.t(df=1)

norm_pdf = rv_norm.pdf(x)
t10_pdf = rv_t10.pdf(x)
t5_pdf = rv_t5.pdf(x)
t1_pdf = rv_t1.pdf(x)

legend = ['z-dist', 't(df=1)', 't(df=5)', 't(df=10)']

plt.figure(figsize = (10, 6)) 
plt.plot(x, norm_pdf)
plt.plot(x, t1_pdf)
plt.plot(x, t5_pdf)
plt.plot(x, t10_pdf)

plt.title("z-dist, t-dist(df=1, 5, 10)")
plt.xlabel("$x$")
plt.ylabel("$p(x)$")
plt.grid()
plt.legend(legend)
plt.show()

- 위에서 말한대로 t분포가 표준정규분포보다 꼬리가 두껍다

- 하지만 자유도가 커지면 표준정규분포와 비슷해진다

F 분포

- F 검정과 분산분석(ANOVA)등에서 주로 사용됨

- 카이제곱 분포가 한 집단의 분산에 대해 다뤘다면 F 분포는 두 집단의 분산에 대해 다룸

- 두 확률변수 $V_1, V_2$가 각각 자유도가 $\nu_1,\nu_2$이고 서로 독립인 카이제곱 분포를 따를 때 다음의 확률변수 F는 자유도가 ($\nu_1,\nu_2$)인 F-분포를 따름

- 적률생성함수가 존재하지 않음

- $F = \cfrac{\frac{V_1}{\nu_1}}{\frac{V_2}{\nu_2}} \sim F(\nu_1,\nu_2)$

- 참고: F 분포

F 분포 성질

- 분자와 분모의 자유도가 뒤바뀐 F 분포 성질: $F_{\nu_1,\nu_2,\alpha} = \cfrac{1}{F_{\nu_2,\nu_1,\alpha}}$

- t 분포를 제곱하면 분자와 분모의 자유도가 각각 1, $\nu$인 F분포가 된다

- $t = \cfrac{Z}{\sqrt{\frac{U}{\nu}}} \sim t_{\nu}$

F 분포의 확률 밀도 함수

$f(x) = \cfrac{\Gamma\big(\frac{\nu_1+\nu_2}{2}\big)\big(\frac{\nu_1}{\nu_2}\big)^{\frac{\nu_1}{2}}x^{\frac{\nu_1}{2}-1}}{\Gamma\big(\frac{\nu_1}{2}\big)\Gamma\big(\frac{\nu_2}{2}\big)\big(1+\frac{\nu_1}{\nu_2}x\big)^{\frac{\nu_1+\nu_2}{2}}}$

F 분포의 기댓값과 분산

- $E(X)=\cfrac{\nu_2}{\nu_2-2},\;\nu_2>2$

- $Var(X)=\cfrac{2{\nu_{2}}^{2}(\nu_1+\nu_2-2)}{\nu_1(\nu_2-2)^{2}(\nu_2-4)}, \; \nu_2>4$

F 분포 plot

import numpy as np
np.random.f(dfnum, dfden, size)

- dfnum은 분자의 자유도, dfden은 분모의 자유도, size는 표본의 수

np.random.f(dfnum = 1, dfden = 10, size = 1000)

- np.random.f(dfnum = 1, dfden = 5, size = 1000)를 히스토그램으로 나타내보면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.f(dfnum = 1, dfden = 10, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.f(dfnum = 1, dfden = 10, size = 1000)')
plt.show()

베타 분포

- 제한된 범위$[0, 1]$에서 확률적인 모델링에 적합함(ex: 비율)

- 두개의 매개변수 $\alpha, \beta$에 따라 그래프의 모양이 다양함

- 베타 분포는 확률에 대한 확률분포 ---> 베이즈안 통계학에서 이항 분포의 켤레 사전 분포로 사용됨

- 베이지안 방법 ---> 모수를 확률변수로 생각하여 사전 정보를 활용해 모수를 추정함

- 이항 분포에서는 성공 확률 $p$가 고정이고 성공 횟수($n-x=$ 실패횟수)가 확률변수인데 베타 분포에서는 성공 횟수($\alpha-1$)와 실패 횟수($\beta-1$)이 고정이고 성공 확률이 확률변수임

- 베타 분포에서 $\alpha =1,\beta=1$이면 균일분포와 동일함 ---> $\alpha=1,\beta=1$이면 성공 횟수와 실패 횟수 둘다$0$이므로 성공확률을 특정할 수 없어서 균일분포 모양을 띄움

- 참고: 베타 분포

베타 함수

- 베타 분포의 확률 밀도 함수의 적분값을 1로 만드는 상수

- 이항 계수를 실수범위까지 확장한 것

$B(\alpha, \beta)= \int_{0}^{1}x^{\alpha -1}(1-x)^{\beta - 1}dx = \cfrac{\Gamma(\alpha)\Gamma(\beta)}{\Gamma(\alpha + \beta)}$

베타 분포의 확률 밀도 함수

$f(x)=\cfrac{1}{B(\alpha, \beta)}x^{\alpha-1}(1-x)^{\beta-1}, \quad 0\leq x \leq1, \;(\alpha , \beta>0)$

베타 분포의 기댓값과 분산

- $E(X)=\cfrac{\alpha}{\alpha + \beta}$

- $Var(X)=\cfrac{\alpha\beta}{(\alpha+\beta)^{2}(\alpha+\beta+1)}$

- $\underset{x}{\mathrm{argmax}}\, f(x)= \cfrac{\alpha-1}{\alpha +\beta - 2},\; (\alpha, \beta > 1)$

- 최빈값은 성공횟수($\alpha-1$)와 실패횟수($\beta-1$)에 대한 성공률(= 성공횟수($\alpha-1$) / 성공횟수($\alpha-1$) + 실패횟수($\beta-1$))

베타 분포와 이항 분포

- 베타 분포는 확률에 대한 확률분포라고 했음

- 예시를 들어서 설명하자

- 게임을 하는 중임 ---> 동전이 있는데 앞면이 나오면 이김 ---> 그런데 앞면과 뒷면이 나올 확률을 알지 못함

- 연습으로 동전을 10번 던져봤더니 앞면이 3번 뒷면이 7번 나왔음 ---> 앞면이 나와야 이기므로 앞면이 나올 확률이 뒷면이 나올 확률 보다 높으면 좋겠음

- 위에 상황에서 앞면이 나올 확률이 0.5보다 클 확률은 얼마일까? ---> 확률에 대한 확률분포

$$\begin{aligned}P(X>0.5) &= 1-P(X<0.5)\\[10pt] &=1-\int_{0}^{0.5}\cfrac{\Gamma(12)}{\Gamma(4)\Gamma(8)}x^{4-1}(1-x)^{8-1}dx\\[10pt] &=1-\int_{0}^{0.5}\binom{12}{4}x^{4-1}(1-x)^{8-1}dx\\[12pt] &=\,???\end{aligned}$$

- 적분하기가 힘들다

- R의 pbeta() 함수로 구해보자

import rpy2
import os

os.environ['R_HOME']='C:/anaconda3/envs/py38r40/lib/R' 
%load_ext rpy2.ipython
C:\anaconda3\envs\py38r40\lib\site-packages\rpy2\robjects\packages.py:366: UserWarning: The symbol 'quartz' is not in this R namespace/package.
  warnings.warn(
%%R
1 - pbeta(0.5, shape1 = 4, shape2 = 8)
[1] 0.1132812

- 앞면이 3번 뒷면이 7번 나왔을 때 앞면이 나올 확률이 0.5보다 클 확률은 0.1132812이다 ---> 약 11%

- 아무래도 게임에서 이기기는 힘들어 보인다

- 그런데 위의 식에서 3번째 줄을 보면 이항 분포가 보인다

- 성공확률의 거듭제곱과 실패확률의 거듭제곱은 이항분포의 확률 질량 함수에서도 존재함

- 베타 분포에서는 확률변수 $X$가 성공 확률인 반면 이항 분포에서는 확률변수 $X$가 성공 횟수임

- 베타 분포: $\cfrac{1}{B(\alpha, \beta)}x^{\alpha-1}(1-x)^{\beta-1},\;$ $x$는 성공 확률

- 이항 분포: $\binom{n}{x}\,p^{k}\,(1-p)^{n-x},\;$ $x$는 성공 횟수

- 이렇기에 이항 분포의 모수를 추정하는데 베타 분포가 사전 분포로 사용된다

베타 분포 plot

- scipy.stats.beta()를 통해 다양한 베타 분포를 그려보자

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta

x = np.linspace(0, 1, 1000)

beta_pdf1 = beta(a = 0.5, b = 0.5).pdf(x)
beta_pdf2 = beta(a = 5, b = 1).pdf(x)
beta_pdf3 = beta(a = 1, b = 3).pdf(x)
beta_pdf4 = beta(a = 2, b = 2).pdf(x)
beta_pdf5 = beta(a = 2, b = 5).pdf(x)

plt.figure(figsize = (7, 5))

plt.plot(x, beta_pdf1, label = 'α = 0.5, β = 0.5')
plt.plot(x, beta_pdf2, label = 'α = 5, β = 1')
plt.plot(x, beta_pdf3, label = 'α = 1, β = 3')
plt.plot(x, beta_pdf4, label = 'α = 2, β = 2')
plt.plot(x, beta_pdf5, label = 'α = 2, β = 5')

plt.xlabel('rate of success(x)')
plt.ylabel('Beta pdf')
plt.title('Beta distribution')
plt.grid()
plt.legend()
plt.show()

- $x$축은 성공확률이어서 0과 1사이임

- $y$축 자체가 확률이 아니라 $\int_{a}^{b}f(x)dx$가 확률이고 $y$축은 $f(x)$임

- $\alpha = 1, \beta \geq 1$이면 성공횟수는 0인데 실패횟수는 존재하므로 성공확률 $x$가 낮을 수록 함수값이 큼

- $\alpha \geq 1, \beta = 1$이면 성공횟수는 존재하는데 실패횟수는 0이므로 성공확률 $x$가 높을 수록 함수값이 큼

- $\alpha > 1, \beta > 1$이면 기댓값 부근에서 함수값이 크다 + $\alpha+\beta$가 커지고 $\alpha$와 $\beta$가 비슷하면 정규분포에 근사 가능

- $\alpha < 1, \beta < 1$이면 $x$가 0 과 1에 극단적으로 치우침

이산 확률 분포

- 이산 확률 변수가 가지는 확률 분포

베르누이 분포

- 성공 확률이 $p$인 베르누이 시행 결과가 성공이면 $1$, 실패면 $0$의 값을 가지는 확률변수의 분포

베르누이 시행

- 임의의 결과가 성공 또는 실패와 같이 가능한 결과가 2 가지

베르누이 시행 조건

- 각 시행의 결과는 상호 배타적인 두 사건(성공 or 실패)으로 구분

- 성공 확률 $p$, 실패 확률 $q$일 때, $p+q=1$

- 각 시행은 독립적

베르누이 분포의 확률 질량 함수(PMF)

$f(x)=p^x(1-p)^{1-x},\quad x=0,1$

베르누이 분포의 기댓값과 분산

- $E(X) = p$

- $Var(X) = p(1-p)$

이항 분포

- 서로 독립이고 동일한 베르누이 분포를 따르는 확률변수$X_1,\dots,X_n$을 모두 합한 것 ---> $X = \sum\limits_{i=1}^{n}X_i$

- 성공 확률이 $p$인 베르누이 시행을 독립적으로 $n$번 반복했을 때 성공 횟수 $X$는 이항 분포를 따름

- 기호로는 $X \sim B(n,p)$

- 독립적 시행 ---> 각 시행은 서로 영향을 주지 않음

이항 분포의 확률 질량 함수

$f(x) \,=\, _{n}\rm C_{x}\,p^{x}\,(1-p)^{n-x} \,=\, \binom{n}{x}\,p^{k}\,(1-p)^{n-x}$

- 성공 확률 $p$인 베르누이 시행을 $n$번 시행하여 그 중 $x$번을 성공할 확률 질량 함수

- 베르누이 분포는 이항 분포에서 $n=1$일 때이다

이항분포의 기댓값과 분산

- $E(X) = np$

- $Var(X) = np(1-p)$

이항 분포 plot

import numpy as np

np.random.binomial(n, p, size)

- $n$은 표본 크기, $p$는 성공 확률, size는 표본의 수

np.random.binomial(n = 50, p = 0.5, size = 1000)

- 성공 확률이 p = 0.5인 베르누이 시행을 n = 50번 반복하는 것을 표본 하나로 두고 표본을 size = 1000번 추출한다

- 동전 던지기($p=0.5$)를 $n$ = $50$번 시행하여 앞면이 나온 횟수($X=0,1,2,\dots,49,50$)를 하나의 표본이라 할 때 표본을 $size = 1000$번 추출한다

- np.random.binomial(n = 10, p = 0.5, size = 1000)을 히스토그램으로 나타내면?

- $np \geq 5$ 이면 이항분포를 정규분포로 근사할 수 있다

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.binomial(n = 10, p = 0.5, size = 1000)

plt.hist(sample)
plt.title('np.random.binomial(n = 10, p = 0.5, size = 1000)')
plt.show()

포아송 분포

- 단위 시간, 단위 공간 안에 어떤 사건이 몇 번 발생할 것인지를 표현하는 이산 확률 분포

- 이항 분포에서 시행횟수$n$이 매우 크고 성공 확률$p$가 매우 작은 경우 성공횟수는 포아송 분포로 근사 가능 ---> 나중에 증명

- 음이항 분포에서 성공횟수$x$가 매우 크고 실패 확률$p$가 매우 작은 경우 실패횟수는 포아송 분포로 근사 가능 ---> 나중에 증명

- 포아송 분포의 모수($\lambda$)는 단위 시간에서 사건의 평균 발생 횟수

포아송 분포 전제 조건

- 독립성: 1시간 동안 우리 집 앞에서 넘어진 사람 수와 친구 집앞에서 넘어진 사람 수는 독립이다

- 일정성: 1시간 동안 평균 3명이 넘어졌다면 2시간 동안에는 평균 6명이 넘어진다

- 비집락성: 우리 집 앞에서 같은 시간에 두 명 이상이 넘어질 확률은 0이다

포아송 분포의 확률 질량 함수

$f(x) = \cfrac{e^{-\lambda}\lambda^{x}}{x!}$

- $x$는 단위 시간에서 사건의 발생 횟수, $\lambda$는 단위 시간에서 사건의 평균 발생 횟수

- $\lambda = 10$, $x = 7$ ---> 단위 시간에서 사건의 평균 10번 발생할 때 7번 발생할 확률은?

- 우리 집 앞에서 1시간에 사람이 평균적으로 10명이 넘어진다고 한다. 이 때 1시간에 사람이 5명 넘어질 확률은?

- $\lambda = 10,\, x = 5 \longrightarrow f(5) = \cfrac{e^{-10}\,10^5}{5!} = 0.03783327480207071$

포아송 분포의 기댓값과 분산

- $E(X) = \lambda$

- $Var(X) = \lambda$

- 평균분산같으므로 평균이 클수록 그래프더 넓게 퍼진다

포아송 분포 plot

import numpy

np.random.poisson(lam, size)

- $\lambda$는 모수, size는 표본의 수

np.random.poisson(lam = 10, size = 1000)

- 단위 시간에서 사건이 평균 10번 발생할 때 (lam = 10) 단위 시간에서 사건이 몇 번 발생하는지를 하나의 표본이라 할 때 size = 1000번 표본을 추출한다

- 우리 집 앞에서 1시간당 평균 10명이 넘어질 때($\lambda=10$) 1시간당 몇 명 넘어지는지($x = 0,1,2,\dots,10,11,\dots$)를 $size = 1000$번 기록한다

- np.random.poisson(lam = 10, size = 1000)을 히스토그램으로 나타내면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.poisson(lam = 10, size = 1000)

plt.hist(sample, bins = 24)
plt.title('np.random.poisson(lam = 10, size = 1000)')
plt.show()

- $\lambda$를 바꿔볼까? ---> 우리 집 앞에서 1시간당 평균 4명이 넘어진다면??

np.random.seed(1)
sample = np.random.poisson(lam = 4, size = 1000)

plt.hist(sample)
plt.title('np.random.poisson(lam = 4, size = 1000)')
plt.show()

기하 분포

- 어떤 확률변수 $X$가 성공 확률이 $p$인 베르누이 시행에서 처음 성공까지 시도한 횟수라고 할 때 $X$는 성공 확률 $p$인 기하분포를 따른다

- 처음 성공할 때까지 걸린 시도 횟수 X가 확률 변수이다

기하 분포의 무기억성

- $P(X=x+k\mid X>k)=P(X=x)$

- 성공 확률 p인 베르누이 시행을 현재 k번 시도 했다

- 하지만 아직 까지 성공하지 못했다

- 내가 여태까지 k번 실패했으니까 성공확률이 올라갈까?? ---> 답은 No

- 내가 이제껏 시도한 횟수와 관계없이 성공할 확률은 p로 동일하다

- 쉽게 말하자면 내가 순백의 주문서10%를 바르고 있는 중이다

- 여태까지 50장을 발랐는데도 성공하지 못했다

- 하지만 확률은 그대로 10%이고 기댓값도 10번으로 동일하다

- 즉, 처음에 순백의 주문서를 성공시키기 위한 기대되는 시도 횟수는 10번이다

- 50번을 실패했지만 여전히 순백의 주문서를 성공시키기 위한 기대되는 시도 횟수는 10번이다......

기하 분포의 확률 질량 함수

$f(x) = (1-p)^{x-1}p, \; x = 1, 2, 3,\dots$

- 성공 확률이 $p$일 때 $x-1$번 째 시도까지는 모두 실패하고 $x$번 째 시도에 성공할 확률 질량 함수

기하 분포의 기댓값과 분산

- $E(X) = \cfrac{1}{p}$

- $Var(X) = \cfrac{1-p}{p^2}$

기하 분포 plot

import numpy

np.random.geometric(p, size)

- $p$는 베르누이 시행에서 성공 확률, size는 표본의 수

np.random.geometric(p = 0.1, size = 1000)

- 성공 확률이 p = 0.1베르누이 시행성공할 때까지 시도하는 것을 size = 1000번 반복한다

- 순백의 주문서($p=0.1$)를 성공할 때까지 시도하여 순백의 주문서가 적용될 때까지 걸린 시도 횟수($X=1,2,\dots$)를 $size = 1000$번 기록한다

- np.random.geometric(p = 0.1, size = 1000)을 히스토그램으로 나타내면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.geometric(p = 0.1, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.geometric(p = 0.1, size = 1000)')
plt.show()

음이항 분포

- 확률변수 $X$를 성공 확률이 $p$인 베르누이 시행을 반복하여 $k$번째 성공이 나올 때 까지 시행횟수라 하면 확률변수 $X$는 음이항 분포를 따름

- 기하분포는 $k=1$인 음이항 분포

음이항 분포의 확률 질량 함수

$f(x) \,=\, _{x-1}\rm C_{k-1}\,p^{k}\,(1-p)^{x-k} \,=\, \binom{x-1}{k-1}\,p^{k}\,(1-p)^{x-k}$

- $x-1$번째 시도까지 성공횟수 $k-1$번였다가 $x$번째 시도에서 성공하여 성공횟수는 $k$가 되었음

음이항 분포의 기댓값과 분산

- $E(X) = \cfrac{k}{p}$

- $Var(X) = \cfrac{k(1-p)}{p^2}$

음이항 분포 plot

import numpy

np.random.negative_binomial(n, p, size)

- $n$은 성공횟수, $p$는 베르누이 시행에서 성공 확률, size는 표본의 수

np.random.negative_binomial(n = 5, p = 0.1, size = 1000)

- 성공 확률이 p = 0.1베르누이 시행5번 성공할 때까지 시도하는 것을 size = 1000번 반복한다

- 순백의 주문서($p=0.1$)를 5번 성공할 때까지 시도하여 순백의 주문서가 5번 적용될 때까지 걸린 시도 횟수($X=5,6,\dots$)를 $size = 1000$번 기록한다

- np.random.negative_binomial(n = 5, p = 0.1, size = 1000)을 히스토그램으로 나타내면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.negative_binomial(n = 5, p = 0.1, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.negative_binomial(n = 5, p = 0.1, size = 1000)')
plt.show()

- 위에서 기하 분포는 음이항 분포에서 $k = 1$인 특수한 경우라고 했음

- 진짜로 동일한지 $p = 0.4$인 기하 분포와 $p = 0.4, k = 1$인 음이항 분포를 히스토그램을 그려 비교하자

np.random.seed(1)
sample1 = np.random.geometric(p = 0.4, size = 1000)
sample2 = np.random.negative_binomial(n = 1, p = 0.4, size = 1000)

fig, ax = plt.subplots(1, 2, figsize = (14, 4))

ax[0].hist(sample1, bins = 12)
ax[1].hist(sample2, bins = 12)

ax[0].set_title('np.random.geomaric(p = 0.3, size = 1000)')
ax[1].set_title('np.random.negative_binomial(n = 1, p = 0.3, size = 1000)')

plt.show()

- 히스토그램을 통해 비교하니 $k= 1$인 음이항 분포는 기하 분포와 동일함을 알 수 있다

초기하 분포

- $k$개의 성공과 $N-k$개의 실패로 이루어진 크기가 $N$인 유한모집단에서 크기가 $n$인 표본을 뽑고 이 중 성공의 개수를 $X$라 할 때 확률변수$X$는 초기하 분포를 따름

- $N, k\to\infty$이고 $\cfrac{k}{N} \to p$이면 초기하 분포를 이항 분포로 근사 가능

- 비복원추출을 하기에 각각의 시행이 서로 영향을 미치므로 독립적 시행이 아님 ---> 베르누이 시행과의 차이점

- 샘플링 검사 시에 복원추출을 하지 않고 비복원 추출을 하기 때문에 초기하 분포를 주로 사용함

초기하 분포의 확률 질량 함수

$f(x) = \cfrac{_{k}\,\rm C\,_{x}\;\times\; _{N-k}\;\rm C\,_{n-x}}{_{N}\,\rm C\,_{n}} $

- $N$개 중 $n$개를 뽑는 방법 중에서 성공 $k$개에서 $x$개의 성공을 뽑고 실패 $N-k$개에서 $n-x$개의 실패를 뽑을 확률

초기하 분포의 기댓값과 분산

- $E(X)=n\cdot\cfrac{k}{N}$

- $Var(X)= n\cdot\cfrac{k}{N}\cdot\cfrac{N-k}{N}\cdot\cfrac{N-n}{N-1}$

- 이항분포의 기댓값과 분산과 유사함

- n은 표본크기, $\cfrac{k}{N}$은 성공확률, $\cfrac{N-k}{N}$은 실패확률

- $\cfrac{N-n}{N-1}$은 유한모집단수정항으로 $n$는 대체로 1보다 크므로 유한모집단수정항도 1보다 작음 ---> 이항분포보다 분산이 더 작음

초기하 분포 plot

import numpy

np.random.hypergeometric(ngood, nbad, nsample, size)

- $ngood(=k)$은 유한모집단중 성공횟수, $nbad(=N-k)$는 유한모집단중 실패횟수, $nsample(=n)$은 표본크기, size는 표본의 수

np.random.hypergeometric(ngood = 700, nbad = 300, nsample = 100, size = 1000)

- 성공횟수 ngood = 700개와 실패횟수 nbad = 300개로 구성된 크기가 1000인 유한모집단($N$)에서 샘플 nsample = 100개를 비복원추출하여 나온 성공횟수 $x$를 size = 1000번 반복한다

- 당첨용지 700개($ngood = 700$)와 꽝용지 300개($nbad = 300$)로 구성된 로또용지 1000개(유한모집단의 크기$N$)중에서 100개($nsample = 100$)를 비복원추출하여 나온 성공횟수를 $size = 1000$번 기록한다

- np.random.hypergeometric(ngood = 700, nbad = 300, nsample = 100, size = 1000)을 히스토그램으로 나타내면?

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
sample = np.random.hypergeometric(ngood = 700, nbad = 300, nsample = 100, size = 1000)

plt.hist(sample, bins = 30)
plt.title('np.random.hypergeometric(ngood = 700, nbad = 300, nsample = 100, size = 1000)')
plt.show()

- 이항분포와 유사해 보임