😀 Probability
- 통계에서 가장 근본이 되는 확률에 대해서 알아볼계획이고, 파이썬을 통해서 간단한 예제문제를 다뤄볼 생각입니다.
문제
공정한
동전을 던졌을 때, 앞(Head) 또는 뒤(Tail)가 나올 확률을 구하는 함수를 작성해보세요. 베이스라인
의 code here
을 채우세요.
베이스라인
def pmf_coin(outcome):
'''
본 함수는 동전을 던졌을 때 나오는 결과(Head 혹은 Tail)를 입력값으로 받는다.
입력값 outcome이 Head와 Tail 둘 중 하나일 때는 0.5, 그 외에는 0이 확률이 된다.
확률 변수의 형식으로, 주어진 outcome에 대한 확률을 출력한다.
'''
if outcome in # code here
'''
code here
'''
else:
'''
code here
'''
print(f"P(X = x) = {p:.2f}")
입력(Input)
pmf_coin('Head')
pmf_coin('Tail')
pmf_coin('etc')
출력(Output)
P(X = x) = 0.50
P(X = x) = 0.50
P(X = x) = 0.00
입력 코드 정답
정답 코드(스포주의)
def pmf_coin(outcome):
'''
본 함수는 동전을 던졌을 때 나오는 결과(Head 혹은 Tail)를 입력값으로 받는다.
입력값 outcome이 Head와 Tail 둘 중 하나일 때는 0.5, 그 외에는 0이 확률이 된다.
확률 변수의 형식으로, 주어진 outcome에 대한 확률을 출력한다.
'''
if outcome in ["Head", "Tail"]:
p = 0.5
else:
p = 0
print(f"P(X = x) = {p:.2f}")
개인적으로 확인해본 큰수의 법칙
import random
random.seed(12345)
count_num = [1000, 10000, 100000]
choices = ["tail", "head"]
# 결과를 확인하려면 예를 들어, 각 선택의 빈도를 계산할 수 있습니다.
from collections import Counter
for Number in count_num:
results = [random.choice(choices) for _ in range(Number)]
counter = Counter(results)
print(f'{Number}번 toss 했을 때 Head가 나올 확률은 :',round(counter['head']/(counter['head']+counter['tail']) * 100, 2))
print(f'{Number}번 toss 했을 때 Tail이 나올 확률은 :',round(counter['tail']/(counter['head']+counter['tail']) * 100, 2))
코인토스를 1000번, 10000번, 100000번 했을때, 앞면과 뒷면이 나올 확률을 확인 해본 결과 시행의 횟수가 많아 질 수록 head와 tail이 거의 비슷하게 나오는 것을 확인 할 수 있었습니다.
확률 분포, 왜 알아야 할까요?
통계와 머신러닝의 핵심, 확률 분포!
우리가 앞으로 배우게 될 통계 및 머신러닝 모델들은 확률 분포에 기반하고 있습니다. 따라서 확률 분포를 제대로 이해하는 것은 모델의 유용성과 한계를 파악하고, 적절한 상황에 맞는 모델을 선택하는 데 필수적입니다.
다양한 모델과 확률 분포의 관계
- t-test: t분포 사용
- 베르누이 분포: 전환율, 사망률 등 이항 분류 문제 (Logistic regression과 연관)
- 선형 회귀: 잔차의 일관된 분산과 독립성 가정 (ANOVA 포함)
- K-means: 클러스터별 독립적인 정규 분포 가정 (GMM으로 확장 가능)
- 잠재 디리클레 할당(LDA): 디리클레 분포와 다항 분포 사용
위 예시들을 당장 이해하지 못해도 괜찮습니다. 중요한 것은 많은 모델들이 확률 분포를 활용하며, 이를 이해해야 모델을 제대로 활용할 수 있다는 점입니다. 앞으로 각 분포가 어떻게 사용되는지 자세히 살펴볼 예정이니, 지금은 확률 분포의 개념과 중요성에 집중해 주세요.
확률 분포란 무엇일까요?
확률 분포, 확률 변수, 확률 세 가지 용어를 정확히 구분하는 것이 중요합니다.
확률 분포란 확률 변수가 특정한 값을 가질 확률을 나타내는 함수입니다.
- 확률 변수: 확률적으로 값이 결정되는 변수 (예: 동전 던지기의 윗면)
- 확률 분포: 확률 변수가 특정 값일 확률을 나타내는 함수 (예: 앞면일 확률)
- 확률: 특정 사건이 일어날 가능성을 0~1 사이의 숫자로 표현한 값 (예: 동전 던지기에서 앞면이 나올 확률)
동전 던지기 예시 👀
동전 던지기에서 윗면은 확률 변수입니다. 앞면 또는 뒷면이 나올 수 있으며, 각각의 가능성 값이 확률입니다. 윗면이 앞면 또는 뒷면일 때 확률을 알려주는 함수가 확률 분포입니다. 동전을 던져 실제로 앞면이나 뒷면이 나오는 것을 실현이라고 합니다.
추가 용어 정리
- 사건(사상): 확률 변수에서 관측될 수 있는 결과의 집합 (예: 동전 던지기에서 앞면)
- 표본 공간: 가능한 모든 사건의 집합 (예: 동전 던지기의 표본 공간은 {앞면, 뒷면})
수식으로 표현하기 ✍️
P(X=head) = p
- P: 확률 분포
- X: 확률 변수
- head: 사건
- p: 동전의 앞면이 나올 확률
(통계학에서 "공정(fair)하다"는 것은 각 사건의 확률이 동일하다는 의미입니다.)
다음 내용
다음 포스팅에서는 Probability Distribution에 대한 코드 및 설명에 대해서 포스팅을 하도록 하겠습니다.
'공부 > 파이썬을 통한 기초통계학' 카테고리의 다른 글
Poisson Distribution, 포아송 분포 (0) | 2025.02.20 |
---|---|
Binomial distribution, 이항 분포 (0) | 2025.02.19 |
Normal distribution, 정규 분포 (0) | 2025.02.18 |
확률 질량 함수(Probability Mass Function, PDF) 확률 밀도 함수(Probability Density Function) (0) | 2025.02.13 |
Probability Distribution, 확률 분포 (0) | 2025.02.11 |