2-1. 모집단과 표본
모집단 = 전체 / 표본 = 일부
1. 모집단과 표본이란 무엇일까
모집단 → 전수조사 (모집단 전체 조사)
관심의 대상이 되는 전체 집단 ex. 한 국가의 모든 상인
표본 → 표본조사 (표본만 조사. 표본은 대표성을 가져야 함)
모집단에서 추출한 일부 ex. 그 국가의 성인 중 일부를 조사
표본을 사용하는 이유
현실적 제약 비용, 시간, 접근성
대표성 표본의 대표성 - 무작위 추출로 편향 최소화해서 잘 설계된 표본으로 모집단의 특성을 반영하자
데이터 관리 데이터 처리의 용이성, 데이터 품질 관리(오류, 이상값 식별 및 수정)
모델 검증 용이 모델 적합도 테스트
2. 실제로 어떻게 사용되어질까
도시 연구 한 도시의 모든 가구(모집단) 중 100가구 (표본) 조사, 평균 전력 사용량 추정
의료 연구 특정 치료법 효과를 알아보기 위해 전체 환자 조사 대신 표본 추첨
시장 조사 소비자 선호도 파악을 위해 무작위 표본 추출, 전체 시장의 트렌드 추정
정치 여론 조사 유권자의 투표 경향 추정, 선거 결과 예측
파이썬 실습
import numpy as np
import matplotlib.pyplot as plt
# 모집단 생성 (예: 국가의 모든 성인의 키 데이터)
population = np.random.normal(170, 10, 1000)
평균 170, 편차 10, 데이터 1000개를 정규분포(normal)로 하는 모집단
# 표본 추출
sample = np.random.choice(population, 100)
모집단(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 라이브러리 일부, 다양한 확률 분포에 따라 난수 생성 기능 제공. 데이터 분석, 시뮬 등에서 활용.
np.random.normal 정규분포(가우시안 분포)를 따르는 난수 생성
np.random.choice 주어진 배열에서 임의로 샘플링하여 요소 선택. 지정 배열에서 무작위로 선택된 요소 반환 기능 제공.
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, 즉 스칼라 값 반환)
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 라이브러리에서 히스토그램을 그리는 함수. 데이터의 분포 시각화에 유용
plt.hist(population, bins=50, alpha=0.5, label='population', color='blue')
- bins
- 히스토그램의 빈(bins)의 개수 또는 경계입니 (세로축)
- 여기서 빈(bins)은 데이터 몇 개의 구간으로 나눌 것인지에 대한 것이라고 생각하시면 됩니다.
- 정수나 리스트로 입력할 수 있습니다.
- 정수: 빈의 개수를 지정합니다.
- 리스트: 각 빈의 경계를 직접 지정합니다. (140~150, 150~160 … 이렇게 경계를 지정하고 싶으면 리스트로 작성)
- alpha : 히스토그램 막대의 투명도를 지정합니다. 0(투명)에서 1(불투명) 사이의 값입니다.
- label : 히스토그램의 레이블을 지정합니다. 여러 히스토그램을 그릴 때 범례를 추가하는 데 사용됩니다.
- color : 히스토그램 막대의 색상을 지정합니다.
2-2. 표본오차와 신뢰구간
표본이 모집단 대비 얼마나 차이나는지 (신로할 수 있는지) 파악
1. 표본오차와 신뢰구간이란
표본오차 Sampling Error
표본에서 계산된 통계량과 모집단의 진짜 값 간 차이
표본 크기가 클수록 표본오차는 작아짐
표본이 모집단을 완벽하게 대표하지 못 하기 때문에, 표본크기 / 표본 추출 방법에 따라 표본오차 달라질 수 있음
- 표본의 크기 ↑ , 표본오차 ↓
- 표본 추출 방법 무작위 , 표본오차 ↓
신뢰구간 Confidence Interval
모집단의 특정 파라미터 (예: 평균, 비율)에 대해 추정된 값이 포함될 것으로 기대되는 범위
- 계산방법 신뢰구간 = 표본평균 +- z * 표준오차
- z 선택된 신뢰수준에 해당하는 z- 값. 예를 들어, 95% 신뢰수준의 z-값은 1.96
- 일반적으로 95% 신뢰수준 (z = 1.96) 많이 사용
표본오차 , 신뢰구간 그림으로 확인
모집단과 표본 분포 | 신뢰구간 시각화 |
모집단의 평균 붉은색 점선 (거의 겹쳐서 잘 안 보임) 모집단의 분포 넓음 표본의 평균 파란색 점선 표본의 분포 좁아짐 표본 크기 (데이터 개수)가 커질수록 표본 평균이모집단 평균에 더 가까워짐 |
표본의 분포와 95% 신뢰구간을 보여줌 표본의 평균 파란색 점선 95% 신뢰구간의 상한, 하한 녹색 점선 95% 확률로 신뢰구간(초록색 범위) 안에 모집단 평균 포함될 것 |
2. 실제로 어떻게 사용되어질까
파이썬 실습
100명의 학생을 표본으로 추출하여 그들의 평균 수학 점수를 구하고, 이 점수의 신뢰구간을 계산
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}") 170.40
print(f"95% 신뢰구간: {conf_interval}") (168.47 , 172.33)
*** stats.t.interval
scipy.stats SciPy 라이브러리의 일부로, 통계 분석을 위한 다양한 함수와 클래스들을 제공
scipy.stats.t.interval 주어진 신뢰수준에서 t-분포를 사용해 신뢰 구간을 계산하는데 사용
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)).
2-3. 정규분포
1. 정규분포란 ( 가우시안 )
종 모양의 대칭 분포. 대부분 데이터가 평균 주위에 몰려 있는 분포
평균을 중심으로 좌우 대칭 평균에서 멀어질수록 데이터의 빈도 감소
표준편차(시그마) 는 분포의 퍼짐 정도를 나타냄
평균(뮤) = 0 , 분산(시그마^2) = 1 → 표준정규분포
2. 실제로 어떻게 사용되어질까
키와 몸무게, 시험 점수
파이썬 실습
# 정규분포 생성
normal_dist = np.random.normal(170, 10, 1000)
# 히스토그램으로 시각화
plt.hist(normal_dist, bins=30, density=True, alpha=0.6, color='g')
# 정규분포 곡선 추가
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = stats.norm.pdf(x, 170, 10)
plt.plot(x, p, 'k', linewidth=2)
plt.title('normal distribution histogram')
plt.show()
2-4. 긴 꼬리 분포
1. 긴 꼬리 분포란
데이터가 비대칭적으로 꼬리 형태로 분포
대부분 데이터가 분포의 한쪽 끝에 몰려 있고, 반대쪽으로 긴 꼬리가 이어지는 형태의 분포 - 비대칭적
데이터가 많아진다고 해서 정규분포가 되지 않음
특정 하나의 분포를 의미하지 않음, 여러 종류의 분포 (예. 파레토 분포, 지프의 법칙, 멱함수 등)을 포함할 수 있음
2. 실제로 어떻게 사용되어질까
소득 분포, 온라인 쇼핑, 도서 판매
* 아마존과 같은 대형 온라인 쇼핑몰 : 소수의 인기 제품이 많은 판매, 많은 수익을 기록 / 비인기 제품이 작은 판매 기록하는 "롱 테일 현상"이라고 부르는, 긴 꼬리 분포를 보이는 모습 * 도서 판매도 마찬가지
파이썬 실습
# 긴 꼬리 분포 생성 (예: 소득 데이터)
long_tail = np.random.exponential(1, 1000)
# 히스토그램으로 시각화
plt.hist(long_tail, bins=30, density=True, alpha=0.6, color='b')
plt.title('long tail distribution histogram')
plt.show()
2-5. 스튜던트 t 분포
1. 스튜던트 t 분포란
모집단의 표준편차를 알 수 없고 표본의 크기가 작은 경우(일반적으로 30미만)에 사용되는 분포
- 표본의 크기 작을수록 꼬리 두꺼워짐
- 표본 크기가 커지면 = 자유도가 커지면 정규분포에 가까워짐
2. 실제로 어떻게 사용되어질까
데이터가 작은 경우 (30 미만) / 약물 시험 등
# 스튜던트 t 분포 생성
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()
2-6. 카이제곱분포
1. 카이제곱분포란
범주형 데이터의 독립성, 적합도 검정에 사용되는 분포
- 범주형 데이터에 사용
- 자유도 (k값) 에 따라 모양이 달라짐
- 상관관계나 인과관계를 판별하고자 하는 원인의 독립변수가 '완벽하게 서로 다른 질적 자료'일 때 활용
ex. 성별이나 나이에 따른 선거 후보 지지율
2. 실제로 어떻게 사용되어질까
독립성 검정
두 범주형 변수 간의 관계가 있는지 확인 (예) 성별, 직업 선택 간 독립성 검토 / 성별이 후보 지지율에 영향 미치는지 검토
적합도 검정
관측한 값들이 특정 분포에 해당하는지 검정 (예) 주사위 각 면이 동일한 확률로 나오는지 / 노란색 완두와 녹색 완두가 3:1 비율로 나와야 하는데 맞는지
파이썬 실습
# 카이제곱분포 생성
chi2_dist = np.random.chisquare(df=2, size=1000)
# 히스토그램으로 시각화
plt.hist(chi2_dist, bins=30, density=True, alpha=0.6, color='m')
# 카이제곱분포 곡선 추가
x = np.linspace(0, 10, 100)
p = stats.chi2.pdf(x, df=2)
plt.plot(x, p, 'k', linewidth=2)
plt.title('카이제곱 분포 히스토그램')
plt.show()
2-7. 이항분포
1. 이항분포란
성공/실패와 같은 두 가지 결과를 가지는 실험을 여러 번 반복했을 때 성공 횟수의 분포
독립적인 시행이 n번 반복되고, 각 시행에서 성공과 실패 중 하나의 결과만 가능한 경우를 모델링
이산형 분포 = 연속된 값 X , 특정 정수 값만 가질 수 있음
실험 횟수(n)와 성공 확률(p)로 정의 성공 확률을 p라 할 때, 성공의 횟수를 확률적으로 나타냄
2. 실제로 어떻게 사용되어질까
동전 던지기, 품질 관리
파이썬 실습
# 이항분포 생성 (예: 동전 던지기 10번 중 앞면이 나오는 횟수)
binom_dist = np.random.binomial(n=10, p=0.5, size=1000)
# 히스토그램으로 시각화
plt.hist(binom_dist, bins=10, density=True, alpha=0.6, color='y')
plt.title('이항 분포 히스토그램')
plt.show()
2-8. 푸아송분포
1. 푸아송분포란
이산형 분포 = 연속된 값 X , 특정 정수 값만 가질 수 있음
평균 발생률 λ(람다)가 충분히 크다면 정규분포에 근사
- 평균 발생률 λ 주어신 시간이나 공간에서 사건이 몇 번 발생했는지
ex. 한 시간동안 콜센터에 전화오는 건수가 10건이면 λ = 10
단위 시간 / 면적 당 발생하는 사건의 수 모델링할 때 사용되는 분포
(평균 발생률 λ를 가진 사건이 주어진 시간 또는 공간 내에서 몇 번 발생하는지 나타냄)
2. 실제로 어떻게 사용되어질까
콜센터 특정 시간 동안 콜센터에 도착하는 전화 통화의 수
교통사고 특정 도로 구간에서 일정 기간 동안 발생하는 교통사고의 수
문자 메시지 특정 시간 동안 수신되는 문자 메시지의 수
웹사이트 트래픽 특정 시간 동안 웹사이트에 도착하는 방문자의 수
파이썬 실습
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()
2-9. 정리
1. 분포들 간 관계
기준 : Standard Noramal ( N(0,1) ) 표준정규분포 |
|
1) 위 ) Binomial (n, p) 이항분포 2) 우측하단) Student-T 스튜던트T 3) 그 옆 ) Chi-Sqaure 카이제곱 |
n 이 커지면(무한으로 가면) 정규분포에 수렴 = 중심극한정리 |
4) 우측상단 ) Poisson 포아송 | λ (람다)가 커지면(무한으로 가면) 정규분포에 수렴 = 중심극한정리 |
예외 : Long Tail 긴 꼬리 (특히 경제학에서 많이 활용되는 파레토) → 정규분포 안 됨 |
출처 : 친절한 데이터사이언티스트 되기 강좌
2. 분포를 어떻게 고를까
데이터 수가 충분 → 무조건 정규분포
데이터 수가 작다 → 스튜던트 t 분포
일부 데이터가 전체적으로 큰 영향을 미친다 → 롱 테일 분포 (파레토 분포)
범주형 데이터의 독립성 / 적합도 검정 → 카이 제곱 분포
결과가 두 개 (성공 / 실패) 만 나옴 → 이항 분포
특정 시간 / 공간에서 발생하는 사건 → 푸아송 분포
2-10. 연습문제
1. 모집단(population)과 표본(sample)의 차이에 대한 설명으로 옳은 것을 고르세요.
1) 모집단은 연구 대상 전체를 의미하고, 표본은 모집단의 일부를 의미한다.
2) 모집단은 표본의 일부이며, 표본은 모집단 전체를 의미한다.
3) 모집단과 표본은 같은 의미를 가진다.
4) 모집단은 표본보다 항상 작다.
해설 : 1) 모집단은 연구 대상 전체를 의미하고, 표본은 그 모집단에서 선택된 일부를 의미합니다.
2. 어떤 표본의 평균이 50이고, 표본 표준편차가 10인 경우, 95% 신뢰구간을 구하세요. (표본 크기는 25로 가정)
95% 신뢰구간은 표본 평균 ± (1.96 * 표본 표준오차)로 계산됩니다.
표본 표준오차 = 표준편차 / ROOT(표본 크기)
해설 : 95% 신뢰구간 = [46.08,53.92]
- 표본 평균 : 50 - 표본 표준편차 : 10 - 표본 크기 : 25
- 표본 표준오차 : 10 / √25 = 2
- 오차 한계 : 1.96 * 표본 표준오차 = 1.96 * 2 = 3.92
- 신뢰구간 : 50 - 3.92 , 50 + 3.92
의미 : 95%의 확률로 모집단의 평균은 위의 신뢰구간 범위 안의 값을 지님
3. 다음 중 정규분포에 해당하는 데이터의 분포를 나타내는 그래프의 모양은 무엇인가요?
1) U자형 2) 종 모양 3) 지수 감소형 4) 선형
해설 : 2) 정규분포는 종 모양의 분포를 가지며, 평균을 중심으로 대칭적
4. 정규분포에서 평균과 표준편차에 대한 설명으로 옳은 것을 고르세요.
1) 평균은 분포의 중앙값과 항상 다르다.
2) 표준편차는 데이터의 퍼짐 정도를 나타낸다.
3) 평균이 커지면 분포는 좁아진다.
4) 표준편차가 작아지면 분포는 넓어진다.
해설 : 2) 정규분포에서 평균은 분포의 중앙값이며, 표준편차는 데이터의 퍼짐 정도를 나타냅니다. 표준편차가 작아지면 분포는 좁아집니다.
5. 긴 꼬리 분포(Long Tail Distribution)의 특징으로 옳지 않은 것을 고르세요.
1) 데이터의 대부분이 낮은 빈도 값을 갖는다.
2) 꼬리 부분에 많은 데이터가 분포되어 있다.
3) 꼬리가 길어질수록 정규분포에 가까워진다.
4) 일부 항목이 매우 높은 빈도 값을 가진다.
해설 : 3) 긴 꼬리 분포는 데이터의 대부분이 낮은 빈도 값을 가지며, 꼬리 부분에 많은 데이터가 분포되어 있습니다. 긴 꼬리 분포는 꼬리가 길어진다고 해서 정규분포에 가까워지지 않습니다.
6. 스튜던트 t 분포를 사용하는 이유는 무엇인가요?
1) 표본 크기가 작을 때 사용한다.
2) 모집단이 정규분포가 아닐 때 사용한다.
3) 모집단 표준편차를 알 때 사용한다.
4) 모집단 평균을 알 때 사용한다.
해설 : 1) 스튜던트 t 분포는 표본 크기가 작고, 모집단 표준편차를 모를 때 사용됩니다.
7. 카이제곱분포(Chi-Square Distribution)는 주로 어떤 분석에 사용되나요?
1) 두 변수 간의 상관관계 분석
2) 평균 간의 차이 분석
3) 범주형 데이터의 독립성 검정
4) 연속형 데이터의 분포 분석
해설 : 3) 카이제곱분포는 주로 범주형 데이터의 독립성 검정에 사용
8. 동전 던지기를 10번 했을 때, 앞면이 6번 나올 확률을 구할 때 사용하는 분포는 무엇인가요?
1) 정규분포
2) 이항분포
3) 푸아송분포
4) 카이제곱분포
해설 : 2) 이항분포는 2개의 결과가 나오는 상황(동전의 앞면/뒷면)에서 사용
9. 어느 병원에서 1시간 동안 평균 3명의 환자가 도착한다고 할 때, 1시간 동안 5명의 환자가 도착할 확률을 구할 때 사용하는 분포는 무엇인가요?
1) 정규분포
2) 이항분포
3) 푸아송분포
4) 스튜던트 t 분포
해설 : 3) 푸아송분포는 특정 시간 및 공간에 대한 분포를 나타내고자 할 때 사용합니다.
'┤내일배움캠프├ > 통계' 카테고리의 다른 글
[통계학 기초] 4. 회귀 (Regression) (0) | 2025.06.27 |
---|---|
[통계학 기초] 3. 유의성 검정 (6) | 2025.06.26 |
[통계학 기초] 1. 데이터 분석과 통계 (0) | 2025.06.24 |