반응형
1개의 모집단에 관한 검정
1개의 샘플 내에서의 모집단의 평균에 관한 검정 (One-sampel T-test)
- scipy.stat.ttest_1sample() 사용
- alternative 변수에 greater(우측검정), less(좌측검정), two-sided(양측검정) 입력
from scipy import stats
stats.ttest_1sample(data, popmean = mu, alternative = 'two-sided')
1개의 샘플 내에서의 모집단의 비율에 관한 검정
- 모집단의 데이터가 범주형인 경우
- 특정 범주의 발생비율이 모수이며 해당 모수를 검정하고자 한다.
- 비율은 근사적 정규분포를 따르기에 Z-test를 사용한다.
from statsmodels.stats.proportion import sms
sms.proportions_ztest(count, nobs=n,
value = 귀무가설의 p,
prop_value = 분산계산에 사용된 p,
alternative='larger')
1개의 샘플 내에서의 모집단의 분산에 관한 검정
- 모집단이 정규분포를 따르는 경우
- 모집단 $\sigma^2$ 에 관한 검정
- 분산에 관한 검정은 카이제곱 검정을 사용한다.
import scipy.stats as stats
# 임계값 계산
stats.chi2.ppf(0.95, df)
# p-value 계산 (우측검정인 경우)
1 - stats.chi2.cdf(검정통계량, df)
# 검정통계량 = (n - 1) * (표준편차^2 / 분산)
2개의 모집단에 관한 검정
두 모집단의 모평균 검정 (모집단이 등분산인 경우)
- 두 개의 모집단의 각 모평균$\mu_{1}, \mu_{2}$ 차이에 관한 검정
- 두 분산이 동일한 경우에 사용한다 (등분산) -> 서로 독립
- $\mu_{1} - \mu_{2}$에 관한 추론을 추정량 ($\overline{X_{1}} - \overline{X_{2}}$)의 표본분포를 이용
- T = $\frac{( \overline{X_{1}} - \overline{X_{2}})}{\ \sqrt{S^2_{p}(\frac{1}{n_{1}} + \frac{1}{n_{2}})}} $
- 여기서 $S^2_{p} = \frac{(n_{1} - 1)S^2_{1}+(n_{2} - 1)S^2_{2}}{n_{1} + n_{2} - 2}$
import pandas as pd
import numpy as np
import statsmodels.stats.api as sms
import scipy.stats as stats
df1.mean()
df1.var()
n1 = len(df1)
n2 = len(df2)
Sp = ((n1 - 1) * df1.var() + (n2 - 1) * df2.var()) / (n1 + n2 - 2)
t = (df1.mean() - df2.mean()) / np.sqrt(Sq * (1/n1 + 1/n2))
# p -value
2 * (1-stats.t.cdf(0.9273, df = n1 + n2 -2)
# 임계값
stats.t.ppf(0.975, df = n1 + n2 - 2)
# 또는
stats.ttest_ind(df1, df2, equal_var = True, alternative='two-sided')
두 모집단의 모평균 검정 (모집단이 이분산인 경우)
- 두 개의 모집단의 각 모평균$\mu_{1}, \mu_{2}$ 차이에 관한 검정
- 두 분산이 동일하지 않은 경우에 사용한다 (이분산)
- 두 모집단이 정규분포이고, 모분산 $\sigma_{0}^2, \sigma_{1}^2$이 알려지지 않고 서로 다른 경우이다.
- 비교할 두 표본의 값의 크기가 다르고, 결측치가 있는 경우 nan_policy 파라미터 사용하여 처리
stats.ttest_ind(df1, df2, equal_var=False, alternative='less', nan_policy='omit')
등분산 검정
- 모집단 평균 검정 시 등분산, 이분산 여부를 모르기에 등분산 검정 시행 후에 나온 결과로 등산분 또는 이분산 모집단 평균 검정을 시행하자.
- $H_{0} : \frac{\sigma^2_{1}}{\sigma^2_{2}} = 1$ (등분산)
- 귀무가설 채택 시, 모집단이 등분산인 경우의 모평균 검정
- $H_{1} : \frac{\sigma^2_{1}}{\sigma^2_{2}} \neq 1$ (이분산)
- 대립가설 채택 시, 모집단이 이분산인 경우의 모평균 검정
- F-검정을 사용, $F = \frac{S^2_{1}}{S^2_{2}}$
- 자유도 $v_{1} = n_{1} - 1, v_{2} = n_{2} - 1 $
f = data['A'].var() / data['B'].var()
df1 = data['A'].count() - 1
df2 = data['B'].count() - 1
stats.f.cdf(f, df1, df2)
정규성 검정
위의 모든 모델들은 모집단이 정규분포 라는 가정 하에 진행이 된다. 하지만 실제 정규분포인지 아닌지는 모르는 상황이다. 실제로 정규분포인지 확인하기 위한 정규성 검정을 진행한다.
정규성 검정은 아래와 같이 몇 가지 방법을 사용하여 확인할 수 있다.
- Q-Q plot
- Shapiro-Wilks Test
- Kolmogorov-Smirnov Test (KS-Test)
각 방법의 사용법은 아래 링크를 참고한다.
반응형
'AI > Data Science' 카테고리의 다른 글
[결측치 확인] Missingno 이용하기 (0) | 2023.11.30 |
---|---|
[분석통계] 정규성 검정 (0) | 2023.05.29 |
[ANOVA] 일원 / 이원분산분석 해보기 (상호작용항) (0) | 2023.04.20 |
[Pandas] 여러 Column 동시에 추가하기 (assign) (0) | 2023.04.19 |
가설과 P-Value의 의미 (0) | 2023.04.11 |