일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 피파온라인 API
- 데이터넥스트레벨챌린지
- NLP
- SBERT
- LDA
- CTM
- 붕괴 스타레일
- Roberta
- 조축회
- 블루 아카이브
- 개체명 인식
- 코사인 유사도
- 구글 스토어 리뷰
- 데이터리안
- 토픽 모델링
- geocoding
- 데벨챌
- 다항분포
- 문맥을 반영한 토픽모델링
- Tableu
- 클래스 분류
- 옵티마이저
- KeyBert
- 포아송분포
- Optimizer
- 원신
- 블루아카이브 토픽모델링
- 트위치
- 자연어 모델
- BERTopic
- Today
- Total
분석하고싶은코코
기초 통계학 - 베르누이 실행, 이항 분포와 초기하 분포 본문
(이번 통계학 포스팅부터는 Python의 scpiy모듈을 통해 구현해 볼 수 있는 부분들은 최대한 구현해보면서 진행해보겠습니다.)
베르누이 시행
베르누이 시행은 단순하게 결과값이 2가지로 나오는 실험이라고 생각하면된다. 동전 던지기가 대표적이다(동전이 서있을 확률이 0이라면!) 또한 이 실험을 동일하게 진행할 수 있는데 각 실험들은 독립적이고 매번 확률이 변하지 않는다는 조건의 실험이 베르누이 시행이라 한다.
정상제품 8개 불량품 2개가 있는 모집단이 있다고 했을때 2번을 뽑았을때 2번 모두 불량품을 뽑을 확률은 얼마일까?
여기서 생각할 수 있는건 복원 추출과 비복원 추출의 경우가있다.
복원추출의 경우 매번 뽑을때마다 2/10의 확률로 불량품이 뽑힌다. 결국 2번 모두 불량품을 뽑을 확률은 0.04(4%)가 나온다. 이는 앞서 이야기한 베르누이 시행의 모든조건에 부합한다. 따라서 복원추출이 베르누이 시행에 해당된다. 그렇다면 비복원 추출의 경우 어떨까? 비복원의 경우 앞서 먼저 뽑은 경우에 대해서 영향을 받게 된다. 이유는 똑같이 불량품을 뽑아야하는데 불량품 한 개가 모집단에서 사라졌기 때문이다. 결국 2/10 * 1/9 = 2/90로 0.0222....(2.22%)가 나온다. 이렇게 보면 확실하게 다른게 보인다.
그런데 여기서 조건을 붙이면 비복원 추출도 베르누이 시행에 근사하게 만들 수 있는데 그 조건이 '모집단이 충분히 크고 시행횟수가 상대적으로 적은 경우'이다. 바로 예로 들어보면 정상제품이 8000개, 불량품이 2000개 이고 이때 2번을뽑고 2번 모두 불량품일 확률을 구해보자 바로 식으로 보면 (2000/10000) * (1999/9999) = 0.039983998....(3.98%)가 나온다. 복원 추출과 근사한 값들이 나오는데 이렇게 모집단이 충분히 크고 시행횟수가 적었을때는 비복원의 경우에도 베르누이 시행에 근사한다고하여 적용할 수 있다.
베르누이 시행은 결과가 항상 성공과 실패와 같은 2가지로 나온다고 하였다. 이럴때 성공할 확률이 p라고 한다면 실패확률은 1-p가 된다. 이럴떄 확률질량함수는 다음과 같이 표현할 수 있고 이를 X ~B(p)로 표현이 가능하게 된다.
이항분포
이항분포는 성공확률이 p인 베르누이 실험을 n번 반복했을때 만들어지는 분포를 이항분포라고 합니다. 여기서 p와 n이 중요한 역할을 하게 되는데 이를 모수(Parameter)라고 합니다. 그 이유는 이 두 변수가 값이 달라짐에따라 분포의 형태가 달라지기 때문입니다. 그 모형을 Python을통해서 구현해보겠습니다. 시행횟수는 8로 고정하고 확률을 0.3, 0.5, 0.8에 대한 확률질량함수를 그려보겠습니다.
코드
import scipy as sp
import matplotlib.pyplot as plt
n = 8 # 시행횟수
p_lst = [0.3, 0.5, 0.8] # 확률 리스트
# 시행횟수와 확률을 전달받아 확률변수와 확률질량함수의 결과를 리턴
def get_binom(n, p):
rv = sp.stats.binom(n, p)
xx = np.arange(n + 1)
return xx, rv.pmf(xx)
# 그래프 그려줄 plot을 3개 만들어줍니다.
fig, ax = plt.subplots(1,3, figsize=(10,6))
# 확률에 따른 확률질량함수 그리기
for idx, p in enumerate(p_lst):
xx, pmf = get_binom(n,p)
ax[idx].bar(xx, pmf, align="center")
ax[idx].set_title('p = ' + str(p))
plt.show()
다음과 같은 문제를 이항분포의 문제로 볼 수 있습니다.
어떤 암에 대한 기존 항암제의 완치율은 50%이다. A제약회사에서 새로운 항암제를 개발하여 항암제의 효과를 확인하기 위해 15명의 환자를 대상으로 임상시험을 진행하였다. 만약 새로운 항암제의 완치율이 기존과 같다면
① 8명이 완치될 확률은?
② 적어도 10명 이상 치유될 확률은?
이러한 문제를 Python으로 해결해보자. 역시 scipy모듈을 활용해 진행해보자. 이항분포를 먼저 구해본다면 확률 p = 0.5 임상실험 횟수(시행횟수) n = 15가 된다. 1번에서 8명이 완치될 확률을 물어보는 질문으로 확률질량함수에서 확률변수가 8일때 값을 알면 될 것이고, 2번 문제의 경우 적어도 10명 이상이 치유될 확률이니 누적질량함수에서 9명까지의 누적 치유 확률을 1에서 빼주면 그 값이 나올 것이다.
import scipy as sp
p = 0.5
n = 15
target1 = 8
target2 = 10
rv = sp.stats.binom(n,p)
print("8명이 완치될 확률 : ", rv.pmf(target1)) # pmf 확률질량함수로
print("적어도 10명이상 완치될 확률 : ", 1-rv.cdf(target2-1)) # cdf 누적질량함수로
8명이 완치될 확률 : 0.19638061523437514
적어도 10명이상 완치될 확률 : 0.15087890625
추가적으로 통계적인 문제로 더 접근을 해본다면 치유 환자가 12명일때 기존약과 대비해서 효과가 좋다고 할 수 있는가?에 대한 물음에 답하려면 통계적 문제인 만큼 숫자로 대답해야한다. 아래 코드로 쉽게 구할 수 있는데 백분율로 보면 약 2%이다. (이후 유의수준을 통해 자세한 분석이 가능한데 그 부분에 대해서는 우선 생략!) p=0.5라는 가정이 있었고 결과는 12명이 완치됐는데 그 확률이 2%로 너무 낮게 나왔는데 정말 신약의 치유확률이 0.5가 맞나요라는 의문을 제시할 수 있는 것이다.
1-rv.cdf(11)
-> 0.017578125
초기하 분포
크기가 N인 모집단에 크기가 A와 N-A인 2개의 부모집단으로 구성되어있을때 A집단에서 비복원추출로 추출되는 표본들의 분포를 초기하 분포라 한다. 즉 비복원추출로 각 추출과정은 독립적이지 않은것!
앞서서 베르누이 시행에서 잠깐 언급하였는데 모집단이 충분히 크고 시행횟수가 충분히 작다면 비복원 추출도 베르누이 시행에 근사하여 활용이 가능하다고 하였다. 초기하 분포 역시 동일한 성질을 갖고 있어서 위 조건에 만족한다면 초기하분포로 보기보다 베르누이 시행을 반복한 이항분포로 처리가 가능하다. 다만 보다 정확한 것은 초기하 분포를 이용하는 것이 미세하지만 정확하다. 그럼 이항분포에서와 마찬가지로 초기하분포를 따르는 예시 문제를 Python을 통해 확인해보겠습니다.
Q)
A회사는 B업체에게서완제품에 들어가는 부품을 구입하려고 하는데 B업체가 제안한 50개의 부품중 10개를 무작위로 선택하여 검사할때 불량 부품의 수가 1개 이하이면 B업체와 계약하려고 합니다. 만약 상자에 5개의 불량품이 들어가 있을때 A회사가 B업체 제품을 구매할 확률은 얼마일까요?
import scipy as sp
N = 50 # 전체 50개의 부품
r = 5 # 불량품의 수
n = 10 # 랜덤하게 뽑아 검사할 부품의 수
x = 1 # 검출 수
hypergeom = sp.stats.hypergeom(N, r, n)
print('1개 이하로 검출될 확률 : ', hypergeom.cdf(x)) # 검출 수가 0~1까지의 누적확률
1개 이하로 검출될 확률 : 0.7418999792331331
'통계' 카테고리의 다른 글
기초통계학 - 정규분포(Normal Distribution) (1) | 2023.09.24 |
---|---|
기초 통계학 - 포아송, 기하, 음이항, 다항분포 (1) | 2023.09.22 |
기초 통계학 - 확률변수와 기댓값 (0) | 2023.09.20 |
기초 통계학 - 확률(2) (0) | 2023.09.19 |
기초 통계학 - 확률(1) (0) | 2023.09.19 |