1) 현실적인 제약
비용과 시간
접근성
2) 대표성
무작위
로 표본을 추출하면 편향을 최소화하고 모집단의 다양한 특성을 포함할 수 있음3) 데이터 관리
데이터 처리의 용이성
데이터 품질 관리
4) 모델 검증 용이
☑️ 전수조사
☑️ 표본조사
2) 의료 연구
3) 시장 조사
4) 정치 여론 조사
ex)
import numpy as np
import matplotlib.pyplot as plt
# 모집단 생성 (예: 국가의 모든 성인의 키 데이터)
population = np.random.normal(170, 10, 1000)
# 표본 추출
sample = np.random.choice(population, 100)
plt.hist(population, bins=50, alpha=0.5, label='population', color='blue')
plt.hist(sample, bins=50, alpha=0.5, label='sample', color='red')
plt.legend()
plt.title('population and sample distribution')
plt.show()
💡 numpy.random
numpy.random
np.random.normal
numpy.random.normal(loc=0.0, scale=1.0, size=None)
→ loc
(float): 정규분포의 평균 (기본값: 0.0)
→ scale
(float): 정규분포의 표준편차 (기본값: 1.0)
→ size
(int 또는 tuple of ints): 출력 배열의 크기 (기본값: None, 즉 스칼라 값 반환)
np.random.choice
numpy.random.choice(a, size=None, replace=True, p=None)
→ a
(1-D array-like or int): 샘플링할 원본 배열. 정수인 경우 np.arange(a)
와 동일하게 간주
→ size
(int 또는 tuple of ints): 출력 배열의 크기 (기본값: None, 즉 단일 값 반환)
→ replace
(boolean): 복원 추출 여부를 나타냄 / True면 동일한 요소가 여러 번 선택될 수 있음 (기본값: True)
→ p
(1-D array-like, optional): 각 요소가 선택될 확률. 배열의 합은 1이어야 함
💡 plt.hist
Matplotlib 라이브러리에서 히스토그램을 그리는 함수
히스토그램은 데이터의 분포를 시각화하는 데 유용한 도구
bins
alpha
label
color
✔️ 표본이 모집단 대비해서 얼마나 차이나는지, 신뢰할 수 있는지 파악 가능!
<표본오차 (Sampling Error)>
<신뢰구간 (Confidence Interval)>
신뢰구간=표본평균±z×표준오차
<표본오차, 신뢰구간 그림으로 확인>
<수학점수 표본으로부터 모집단의 평균 범위를 계산해보자>
import scipy.stats as stats
# 표본 평균과 표본 표준편차 계산
sample_mean = np.mean(sample)
sample_std = np.std(sample)
# 95% 신뢰구간 계산
conf_interval = stats.t.interval(0.95, len(sample)-1, loc=sample_mean, scale=sample_std/np.sqrt(len(sample)))
print(f"표본 평균: {sample_mean}")
print(f"95% 신뢰구간: {conf_interval}")
💡 stats.t.interval
scipy.stats
는 SciPy 라이브러리의 일부로, 통계 분석을 위한 다양한 함수와 클래스들을 제공하는 모듈scipy.stats.t.interval
함수는 주어진 신뢰 수준에서 t-분포(밑에서 얘기하는 student t 분포)를 사용하여 신뢰 구간(confidence interval)을 계산하는 데 사용scipy.stats.t.interval(alpha, df, loc=0, scale=1)
df = n - 1
)scale = sample_std / sqrt(n)
)