Linuxias
Developer's Delight
Linuxias
  • Category
    • AI
      • Deep Learning
      • Machine Learning
      • Data Science
      • Framework
      • MLOps
      • Paper-Review
      • Tips
    • Android
      • Kotlin
      • Component
      • Compose
      • Compose UI
      • Material
      • Testing
    • Software Architecture
      • Architecture Pattern
      • Design Pattern
      • Requirement Engineering
    • Linux
      • Compile & Link
      • Command & Tool
      • Container
      • Debugging & Testing
      • Profiling
      • Kernel Analysis
      • Server
      • Shell Script
      • System Programming
    • Language
      • Carbon
      • C,C++
      • C#
      • Java
      • Python
    • ETC
      • Data Struct | Algorithm
      • git
      • Security
    • Book
    • 경제공부
      • 세금
      • 부동산
hELLO · Designed By 정상우.
Linuxias

Developer's Delight

AI/Data Science

[분석통계] 통계적 검정 방법 간단 정리

2023. 5. 27. 14:08
반응형

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)

각 방법의 사용법은 아래 링크를 참고한다.

2023.05.29 - [AI/Data Science (실습)] - [분석통계] 정규성 검정

반응형
저작자표시 비영리 (새창열림)

'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
    'AI/Data Science' 카테고리의 다른 글
    • [결측치 확인] Missingno 이용하기
    • [분석통계] 정규성 검정
    • [ANOVA] 일원 / 이원분산분석 해보기 (상호작용항)
    • [Pandas] 여러 Column 동시에 추가하기 (assign)
    Linuxias
    Linuxias
    I want to be a S/W developer who benefits people.

    티스토리툴바