통계 실습 | 파이썬으로 중심극한정리(CLT) - 각 분포의 표본의 평균 시각화

2025. 1. 17. 18:14·Python

문제 6.  중심극한정리(CLT) - 각 분포의 표본의 평균 시각화

  1. 출제의도
    • 중심극한 정리를 구현하기 위해 부트스트래핑을 구현할 수 있다.
    • 이론을 시뮬레이션하여 간접 증명을 할 수 있다.
    • matplot을 이용하여 데이터를 시각화 할 수 있다.
  2. 문제
    • numpy.choice 함수를 이용하여 각 분포 평균을 내고 이를 500번 반복하여 표본 평균을 생성해 봅시다. (ex bionmial_data 에서 30개씩 뽑아 500번 반복)
    • 표본의 평균들을 히스토그램으로 시각화여 정규분포를 따르는지 확인해봅시다.
    • 변수
      • num_samples : 표본추출할 횟수
      • sample_means: 딕셔너리 자료형으로 Binomal, Uniform, Normal 의 Key값을 가지며 해당하는 values들은 각 30개씩 복원추출하여 뽑은 샘플의 평균 값을 저장. 이를 총 500번 진행
  3. Skeleton code
num_samples = 500
sample_means = {
    "Binomial": [],
    "Uniform": [],
    "Normal": []
}

'''
여기에 코드를 작성해주세요
'''


#시각화
plt.figure(figsize=(15, 5))
'''
여기에 코드를 작성해주세요.
'''

출력 결과 예시


💡 문제 풀이 

`내 풀이`

## seaborn으로 풀어보자
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

num_samples = 500
sample_means = {
    "Binomial": [],
    "Uniform": [],
    "Normal": []
}

for i in range(num_samples):
    binomial_sample = np.random.choice(binomial_data, 30)
    binomial_mean = binomial_sample.mean()
    sample_means['Binomial'].append(binomial_mean)
    
    uniform_sample = np.random.choice(uniform_data, 30)
    uniform_mean = uniform_sample.mean()
    sample_means['Uniform'].append(uniform_mean)
    
    normal_sample = np.random.choice(normal_data, 30)
    normal_mean = normal_sample.mean()
    sample_means['Normal'].append(normal_mean)

#시각화
plt.figure(figsize=(15, 5)) # figure는 그래프가 그려지는 화면 

# Binomial
plt.subplot(1,3,1) # subplot은 그래프, (1,3)은 화면을 1행 3열로 분류
sns.histplot(data=sample_means['Binomial'], bins=20, color='blue', edgecolor=None)
plt.xlabel('Mean Value')
plt.ylabel('Frequency')
plt.title('Binomial Distribution')

# Uniform
plt.subplot(1,3,2)
sns.histplot(data=sample_means['Uniform'], bins=20, color='green', edgecolor=None)
plt.xlabel('Mean Value')
plt.ylabel('Frequency')
plt.title('Uniform Distribution')

# Normal
plt.subplot(1,3,3)
sns.histplot(data=sample_means['Normal'], bins=20, color='red', edgecolor=None)
plt.xlabel('Mean Value')
plt.ylabel('Frequency')
plt.title('Normal Distribution')

`출력 결과`

'Python' 카테고리의 다른 글
  • Python 실습 | 윤년/평년 구하기
  • Python 실습 | 공공데이터포털 오픈API를 파이썬에 연결하는 방법
  • 통계 실습 | 파이썬으로 중심극한정리(CLT) - 데이터 생성하기
  • 통계 실습 | 파이썬으로 카이제곱검정
초담
초담
4년차 마케터입니다
  • 초담
    그로스마케터의 기록
    초담
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (117)
      • Data Analytics Project (3)
      • SQL (55)
      • Python (43)
      • GA4 (0)
      • Tableau (8)
      • 아티클 스터디 (7)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
초담
통계 실습 | 파이썬으로 중심극한정리(CLT) - 각 분포의 표본의 평균 시각화
상단으로

티스토리툴바