반응형
통계 공부한 지 오래되어 <통계학 개론> 책을 하나 사서 쭉 읽었다.
확률분포 vs. 표본분포 개념이 헷갈린다.
통계량(표본의 특성)은 표본분포를 갖는다.
ChatGPT는 확률분포는 모집단, 표본분포는 표본 이라고 하는데
이 책에서 통계량(statistics): 다른 표본이 추출되면 다른 값을 갖게 되는 확률변수로서 확률분포를 가진다 라고 나온다.
ChatGPT가 잘못 설명한 듯 하다.
아래에 온라인 강의로 배운 내용과 함께 정리했다.
정규분포: 평균과 표준편차로 결정된다
중심극한정리: 표본의 크기가 커질수록 표본평균의 분포는 모집단의 분포 모양과는 관계없이 정규분포에 가까워진다
카이제곱분포
- 모분산을 구하는 것
- 분산의 특징을 확률 분포로 만든 것(따라서 마이너스가 없다)
- 자유도가 높을수록 정규분포에 근접
Student-t 분포
- 모분산을 모르고 표본크기가 30이하인 경우 모평균을 구하는 것
t검정: t분포를 이용한 검정
- 표본으로부터 추정된 분산이나 표준편차를 가지고 검정
- 귀무: 두 모집단의 평균 간의 차이는 없다
- 대립: 두 모집단의 평균 간에 차이가 있다
- 독립표본 t-test vs. 대응표본 t-test
- 독립표본 t-test: 서로 독립인 두 집단 비교
- e.g. 수동권과 지방의 집값 비교
- 대응표본 t-test: 동일 그룹에 어떤 처리 전/후를 비교
- e.g. 대출 규제 시작 전/후의 집값 비교
- 독립표본 t-test: 서로 독립인 두 집단 비교
- 검정순서
- 표본 크기가 30 미만: 정규성 검정
- 표본 크기가 30 이상: 등분산 검정
- → 등분산이라면: 등분산 가정 독립표본 t-test
- → 아니라면: 이분산 가정 독립표본 t-test
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import scipy.stats as stats
house_a = np.random.normal(6, 5, 40) # 수도권 (평균, 분산, 데이터갯수)
house_b = np.random.normal(3, 5, 40) # 지방
tmp1 = pd.concat([pd.DataFrame(['A']*40), pd.DataFrame(house_a.tolist())], axis=1)
tmp2 = pd.concat([pd.DataFrame(['B']*40), pd.DataFrame(house_b.tolist())], axis=1)
# tolist(): array -> list로 변경
# pd.DataFrame(house_b.tolist()): list로 변경한 후 이를 DataFrame 포맷으로
# axis=1: concat 할 때, 옆으로 붙인다
df = pd.concat([tmp1, tmp2], axis=0)
df.columns = ['grp', 'value'] # 그룹명 붙여준다
sns.boxplot(x='grp', y='value', data=df)
# 등분산 검정
#>> 귀무가설: 수도권 vs. 지방 집값의 분산이 같다
#>> 대립가설: 수도권 vs. 지방 집값의 분산이 다르다
stats.levene(np.array(df[df['grp'] == 'A']['value']), np.array(df[df['grp'] == 'B']['value']))
# levene 검정으로 등분산 여부 확인
#>> LeveneResult(statistic=0.10826930019434791, pvalue=0.7430050515652757)
#>> p-value=0.9 > 0.05: 귀무가설 채택(대립가설 기각). 즉 둘의 분산이 같다
# t-test(t-검정)
#>> 두 개의 독립적인 그룹 간의 평균 비교를 위한 독립표본 t-검정(t-test)을 수행
#>> stats.ttest_ind 함수: 두 그룹 간의 평균 차이가 통계적으로 유의한지를 검정
stats.ttest_ind(np.array(df[df['grp']=='A']['value']),
np.array(df[df['grp']=='B']['value']),
equal_var=True)
#>> Ttest_indResult(statistic=3.3017809842701085, pvalue=0.0014510874559529386)
# equal_var=True: 등분산성 유지
#>> 여기서도 pvalue=0.268 > 0.05 : 귀무가설을 기각할 수 없다
#>> statistic=-1.114: t-value가 0에 가까울 수록 유의미한 차이가 없다
#>> 지방 집값 = 3억으로 설정
#>> pvalue=0.00145
#>> 해석: 수도권과 지방의 집값에 유의한 차이가 존재
#>> statistic=3.30178
#>> 해석: t-검정 통계량
#>> 두 그룹 간의 평균 차이가 표준오차에 비해 얼마나 큰지를 나타내는 값
#>> 이 값이 커질수록 두 그룹 간의 차이가 통계적으로 유의하다는 증거
F분포
- 3개 이상의 집단에 대하여 검정할 때
- 카이제곱분포처럼 분산을 다루지만, 집단간의 분산을 다룬다
반응형