본문 바로가기
[업무 지식]/Statistics

[모집단과 표본] 데이터의 분포

by 에디터 윤슬 2024. 11. 11.

왜 표본을 사용하는 걸까?

  • 현실적인 제약
    • 비용과 시간: 자원을 절약하면서도 유의미한 결과 도출 가능
    • 접근성: 접근 가능한 데이터를 활용
  • 대표성
    • 표본의 대표성: 잘 설계된 표본은 모집단의 특성을 반영 / 편향을 최소화하고 모집단의 다양한 특성 포함
  • 데이터 관리
    • 데이터 처리의 용이성: 큰 데이터셋은 분석에 많은 컴퓨팅 자원이 필요
    • 데이터 품질 관리: 오류나 이상값을 식별하여 수정할 수 있다
  • 모델 검증 용이
    • 모델 적합도 테스트: 통계적 모델 검증 가능
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()

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이어야 합니다.

표본오차와 신뢰구간

  • 표본오차
    • 표본에서 계산된 통계량과 모집단의 진짜 값 간의 차이
    • 표본 크기가 클수록 표본오차는 작아짐
    • 표본이 모집단을 완벽하게 대표할 수는 없음
      • 표본의 크기가 클수록 표본오차는 줄어든다
      • 무작위 추출 방법을 사용하여 표본오차를 줄일 수 있다
  • 신뢰구간
    • 신뢰구간은 모집단의 특정 파라미터(예: 평균, 비율)에 대해 추정된 값이 포함될 것으로 기대되는 범위를 나타냄
    • 신뢰구간 계산 방법
      • 신뢰구간 = 표본평균 +- z * 표준오차
      • z: 95% 신뢰수준의 z-값은 1.96

 

파이썬 실습

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-분포를 사용하여 신뢰 구간(confidence interval)을 계산하는 데 사용
  • scipy.stats.t.interval(alpha, df, loc=0, scale=1)
  • alpha
    • 신뢰 수준(confidence level)을 의미. 예를 들어, 95% 신뢰 구간을 원하면 alpha를 0.95로 설정.
  • df
    • 자유도(degrees of freedom). 일반적으로 표본 크기에서 1을 뺀 값으로 설정 (df = n - 1).
  • loc
    • 위치(parameter of location)로, 일반적으로 표본 평균을 설정.
  • scale
    • 스케일(parameter of scale)로, 일반적으로 표본 표준 오차(standard error)를 설정. 표본 표준 오차는 표본 표준편차를 표본 크기의 제곱근으로 나눈 값 (scale = sample_std / sqrt(n)).

 

'[업무 지식] > Statistics' 카테고리의 다른 글

[t검정] 유의성 검정  (0) 2024.11.12
[가설검정] 유의성 검정  (0) 2024.11.11
[A/B 검정] 유의성 검정  (0) 2024.11.11
[분포] 분포 정리하기  (0) 2024.11.11
[분석 방법] 데이터 분석과 통계  (0) 2024.11.11