[사전캠프 TIL]#7 통계학

테리·2025년 10월 15일

1. 학습 키워드

분포종류, 검정

2. 학습 내용

정규분포

정규분포

  • 평균을 중심으로 좌우 대칭
  • 데이터가 충분히 많다면 정규 분포를 따름
  • 표준 편차는 분포의 퍼짐 정도

By Inductiveload - 자작 (원문: self-made, Mathematica, Inkscape), 퍼블릭 도메인, https://commons.wikimedia.org/w/index.php?curid=3817954

긴 꼬리 분포

  • 대부분의 데이터가 분포의 한쪽 끝에 몰려있고 반대쪽으로 긴 꼬리가 이어지는 형태
  • 아무리 데이터가 많아져도 정규분포가 되지 않는다.

    ex) 소수의 베스트셀러 도서가 전체 판매량의 대부분을 차지하고, 많은 수의 비인기 도서가 적은 판매를 기록하는 긴 꼬리 분포

스튜던트 t 분포

  • 표본의 크기가 작을 때(30개 미만) 정규분포 대신 사용
  • 정규 분포보다 퍼져있고 꼬리가 두껍다 = 극단값을 가질 확률이 높다
  • 자유도가 커질수록(=표본이 커질수록) 정규분포에 가까워짐
  • 데이터의 수가 적을때 t분포 공식을 사용해서 모집단의 평균을 구함.

    예시
# 스튜던트 t 분포 생성
# 자유도가 10인 t분포를 만들고 거기에서 1000개의 데이터를 뽑는것임.
t_dist = np.random.standard_t(df=10, size=1000)

# 히스토그램으로 시각화
plt.hist(t_dist, bins=30, density=True, alpha=0.6, color='r')

# 스튜던트 t 분포 곡선 추가
x = np.linspace(-4, 4, 100)
p = stats.t.pdf(x, df=10)
plt.plot(x, p, 'k', linewidth=2)
plt.title('student t distribution histogram')
plt.show()

카이제곱 분포

  • 범주형 데이터의 독립성 검정이나 적합도 검정에 사용되는 분포
  • 범주형 데이터 분석에 사용

    k=자유도

독립성 검정

  • 두 범주형 변수 간의 관계가 있는지 확인할 때 사용(성별과 직업 선택 간의 독립성)

적합도 검정

  • 관측한 값들이 특정 분포에 해당하는지 검정할 때 사용(노란색 완두와 녹색완두가 3:1의 비율로 나와야 하는데 실험적으로 측정한 데이터가 그렇게 나오는지)

이항분포

  • 결과가 2개가 나오는 상황일 때 사용하는 분포
  • 특정한 정수값만 가질 수 있음.
  • 데이터수가 많아질수록 정규분포로 근사함.

    p= 확률

푸아송분포

  • 희귀한 사건이 발생할 때 사용하는 분포
  • 평균 발생률 λ가 충분히 크다면 정규분포에 근사
    ex) 한 시간동안 콜센터에 전화오는 건수가 10건이면 λ는 10
  • 푸아송분포는 단위 시간, 단위 면적당 희귀하게 발생하는 사건의 수를 모델링하는데 적합함.

    λ가 작으면 희귀한 사건인 만큼 초반에 발생하면 나중에 발생할 확률은 거의 0이 됨.
    ex)
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson

# 푸아송 분포 파라미터 설정
lambda_value = 4  # 평균 발생률
x = np.arange(0, 15)  # 사건 발생 횟수 범위

# 푸아송 분포 확률 질량 함수 계산
poisson_pmf = poisson.pmf(x, lambda_value)

# 그래프 그리기
plt.figure(figsize=(10, 6))
plt.bar(x, poisson_pmf, alpha=0.6, color='b', label=f'Poisson PMF (lambda={lambda_value})')
plt.xlabel('Number of Events')
plt.ylabel('Probability')
plt.title('Poisson Distribution')
plt.legend()
plt.grid(True)
plt.show()

분포 정리

  1. 데이터 수가 많다 → 정규분포에 근사
  2. 데이터 수가 적다 → 스튜던트 t분포
  3. 일부 데이터가 전체에 큰 영향을 미친다 → 롱테일 분포(*데이터가 아무리 많아져도 정규분포가 안된다)
  4. 범주형 데이터의 독립성 검정이나 적합도 검정 → 카이제곱 분포
  5. 결과가 두개만 나오는 상황 → 이항 분포
  6. 특정 시간이나 공간에서 발생하는 사건 → 푸아송 분포

A/B 테스트

두 버전(A,B) 중 어떤 것이 더 효과적인지 평가하기 위해 사용하는 방법

가설검정

  • 일반적으로 p값이 0.05 미만이면 결과를 통계적으로 유의하다고 판단
  • p-값이 0.03이라면, 3%의 확률로 우연히 이러한 결과가 나올 수 있음

ex)

# 기존 약물(A)와 새로운 약물(B) 효과 데이터 생성
A = np.random.normal(50, 10, 100) # 약물의 효과를 수치화
B = np.random.normal(55, 10, 100)

# 평균 효과 계산
mean_A = np.mean(A)
mean_B = np.mean(B)

# t-검정 수행
t_stat, p_value = stats.ttest_ind(A, B)

print(f"A 평균 효과: {mean_A}")
print(f"B 평균 효과: {mean_B}")
print(f"t-검정 통계량: {t_stat}")
print(f"p-값: {p_value}")

# t-검정의 p-값 확인 (위 예시에서 계산된 p-값 사용)
print(f"p-값: {p_value}")
if p_value < 0.05:
    print("귀무가설을 기각합니다. 통계적으로 유의미한 차이가 있습니다.")
else:
    print("귀무가설을 기각하지 않습니다. 통계적으로 유의미한 차이가 없습니다.")

t 검정

가설 검정의 대표적인 검정
두 집단간의 평균 차이가 통계적으로 유의미한지 확인하는 방법

  • 가설 검정에서 했던 것 처럼 p-value 값이 0.05 미만이면 귀무가설 기각 = 변화가 있다 = 의미가 있다
  • 독립표본 t검정: 두 클래스의 시험 성적 비교
  • 대응표본 t검정: 다이어트 전후 체중 비교(실험 대상 사람은 동일함)

t_stat, p_value = stats.ttest_ind(A, B) 사용함.

다중검정

여러 가설을 동시에 검정

  • 각 검정마다 유의수준을 조정하지 않으면 1종 오류(귀무가설이 참인데 기각하는 오류) 발생 확률이 증가
  • 본페로니 보정을 사용해서 오류를 방지할 수 있음.
    유의 수준 0.05를 t검정 수행하는 그룹의 개수로 나눠서 이걸 기준 값으로 사용함.

카이제곱 검정

범주형 데이터의 분석에 사용한다는 것!

  • 적합도 검정: 범주형 데이터의 표본 분포가 모집단 분포와 일치하는지 검정
  • 독립성 검정: 두 범주형 변수 간의 독립성을 검정

☑️ 적합도 검정

  • 관찰된 분포와 기대된 분포가 일치하는지 검정
  • p값이 높으면(유의수준 0.05 이상) 데이터가 귀무 가설에 잘 맞음. 즉, 관찰된 데이터와 귀무 가설이 적합
  • p값이 낮으면(유의수준 0.05 이하) 데이터가 귀무 가설에 잘 맞지 않음. 즉, 관찰된 데이터와 귀무 가설이 부적합. 귀무 가설 기각.

scipy.stats.chisquare 함수는 카이제곱 적합도 검정을 수행하여 관찰된 빈도 분포가 기대된 빈도 분포와 일치하는지 평가. 이 검정은 단일 표본에 대해 관찰된 빈도가 특정 이론적 분포에 일치하는지 확인함.

☑️ 독립성 검정

  • 두 범주형 변수 간의 독립성을 검정
  • p값이 높으면 두 변수 간의 관계가 연관성이 없음 → 독립성이 있음
  • p값이 낮으면 두 변수 간의 관계가 연관성이 있음 → 독립성이 없음

ex)

  • 주사위의 각 면이 동일한 확률로 나오는지 검정(적합도 검정)
  • 성별과 직업 만족도 간의 독립성 검정(독립성 검정)

scipy.stats.chi2_contingency 함수는 카이제곱 검정을 수행하여 두 개 이상의 범주형 변수 간의 독립성을 검정함. 관측 빈도를 담고 있는 교차표(contingency table)를 입력으로 받아 카이제곱 통계량, p-값, 자유도, 그리고 기대 빈도(expected frequencies)를 반환.

제 1종 오류

귀무가설이 참인데 기각하는 경우

  • 만약 유의 수준이 0.05라면 100번중 5번 정도 일어나는 제 1종 오류는 감수하겠다는 것.

제 2종오류

귀무가설이 거짓인데 기각하지 않는 경우

  • 2종 오류가 일어날 확률은 '베타'로 정의. 베타를 직접 통제할수는 없는데 표본 크기 n이 커질수록 베타값이 작아짐.

ex)

  • 새로운 약물이 효과가 없는데 있다고 결론 내리는 것(제 1종 오류).
  • 효과가 있는데 없다고 결론 내리는 것(제 2종 오류).

3. 배운점

  • 데이터수가 많아지면 결국 정규분포를 따른다.
  • 분포에 대해서 한번 살펴보긴 했지만 실제로 업무적으로 어떤 상황에서 사용하는지 아직 감이 잘 잡히지 않는다.
  • 우선 분포와 검정에 대해 살펴본 내용을 정리해 놓긴 했지만 모든 것들을 원리부터 완벽히 이해하고 있지는 않다. 사용할 상황이 있을 때 다시 이 내용들을 참고 하면서 점차 익혀가는 것이 좋을것 같다는 생각이 든다.

0개의 댓글