티스토리 뷰
Q. 요즘같은 빅데이터(?)시대에는 정규성 테스트가 의미 없다는 주장이 있습니다. 맞을까요?
1. 정규성 테스트란?
- 데이터가 정규 분포를 따르는지 여부를 확인하는 것입니다.
2. 왜 하나요?
- 정규성 가정을 필요로 하는 특정 통계 분석이나 모델을 사용하는 경우
- 표본이 작거나 특정 표본의 특성을 분석해야 하는 경우
- 표본이 작고 정규성을 띠지 않으면, 데이터의 중심 경향이나 분포를 평균과 표준편차만으로 설명하기 어렵기 때문에, 정규성 검정을 통해 정규에 가깝다고 확인되어야 신뢰구간이나 가설 검정을 수행할 때 더 높은 신뢰성을 가질 수 있습니다.
- 비모수적 모델이나, 비정규 분포를 처리하는 모델은 생략해도 무방합니다.
- 데이터가 정규성을 띠지 않더라도 표본 크기가 크면 중심극한정리에 따라 데이터의 평균 분포가 정규 분포에 가까워 지기 때문에 굳이 필수적이지 않을 수 있습니다.
- 회귀 분석에서는 잔차(Residuals)가 정규성을 따르는지가 중요한 가정 중 하나입니다. 개별 데이터가 정규 분포를 따르지 않아도, 중심극한정리에 의해 표본 크기가 클수록 잔차의 평균 분포는 정규성에 가까워질 수 있습니다. 이는 모델 예측의 신뢰도를 높이는 데 기여합니다
3. 정규성을 가정하는 통계적 방법
1) 정규성을 가정하는 통계적 방법: t검정, ANOVA, 회귀분석 등
* t검정, ANOVA는 피처의 정규성 검정, 회귀 분석은 잔차의 정규성 검정
2) 샘플 크기가 작을 때: 데이터의 분포 특성을 명확히 이해해야 분석 결과의 신뢰성을 높일 수 있다.
- 월별 매출액을 비교하는 경우, 신생 업체라면 몇개월 혹은 많아야 12개월이니 표본의 수는 12개이다.
- 중심극한정리는 표본을 30개 이상으로 본다.
4. 정규성을 가정하지 않는 통계적 방법
1) 비모수적 가설 검정
- 윌콕슨 부호 순위 검정: 대응 표본 t-검정의 비모수적 대안으로, 두 관련된 그룹 간 차이를 비교
- 맨-휘트니 U검정: 독립 표본 t-검정의 비모수적 대안, 두 독립된 그룹의 차이를 비교
- 크루스칼-월리스 검정: ANOVA의 비모수적 대안으로, 세 개 이상의 독립된 그룹 간 차이를 비교
- 프리드만 검정: 반복 측정 ANOVA의 비모수적 대안으로, 세 개 이상의 관련된 그룹 간 차이를 비교
- 중앙값 검정: 두 그룹 이상 간 중앙 값 차이를 검정
2) 순위 기반 상관 분석
- 스피어만 상관 계수: 두 변수 간 순위 상관 관계를 측정
- 켄달의 타우: 두 변수 간 순위 상관 관계를 측정하는 비모수적인 방법, 표본 크기가 작은 경우 적합
3) 부트스트랩 방법: 데이터의 표본을 여러 번 무작위로 다시 뽑아 각 표본의 통계량을 계산하여 신뢰 구간을 추정, 데이터 분포 가정 없이도 안정적인 추정이 가능
5. 정규성을 가정하지 않는 비모수적 모델
- 랜덤 포레스트, 부스팅 모델, 신경망 등은 데이터의 분포 형태에 크게 영향을 받지 않음
6. 정규성 검정 방법 : Shapiro-Wilk 검정
- p-value가 0.05 이상이면 정규성을 만족한다.(귀무가설: 데이터가 정규 분포를 따른다)
* 회귀분석 시 summary에 나오는 변수들의 p-value는 0.05보다 작을수록 유의미한데, 이때 귀무가설이 회귀계수가 0이다, 즉 영향을 미치지 않는다이다.
* p-value가 유의수준(0.05리고 한다면)보다 작을때 귀무가설을 기각한다.
from scipy.stats import shapiro
data= [4.5, 3.6, 6.8, 2.4, 5.9]
stat, p_value = shapiro(data)
# p-value가 약 0.92로 유의수준(0.05)보다 크므로 정규성을 만족한다.
- stat: 검정 통계량, 데이터가 정규 분포에서 벗어나는 정도를 나타낸다.
- stat이 임계값(t분포는 t.ppf)보다 작아야 정규분포에 가깝다.
- stat을 임계값과 직접 비교하기 보다는 p-value 값을 기준으로 비교하는데, 그 이유는 p-value가 검정통계량을 기반으로 계산되기 때문이다.
* 회귀분석 시 잔차의 정규성 가정
- 잔차가 정규성을 따르지 않는다면 모델을 수정하거나 대체 모델을 고려할 수 있다.
- 모델 적합 후 검토를 통해 모델이 데이터를 충분히 설명하고 있는지 확인한다.
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
from scipy.stats import shapiro
# 예시 데이터
X = np.array([1, 2, 3, 4, 5])
y = np.array([1.2, 1.9, 3.0, 3.8, 5.1])
# 상수 추가 (회귀 분석을 위한 절편 포함)
X = sm.add_constant(X)
# 회귀 모델 적합
model = sm.OLS(y, X)
results = model.fit()
# 잔차 계산
residuals = results.resid
# 잔차의 Q-Q Plot
sm.qqplot(residuals, line='45')
plt.show()
# 잔차의 Shapiro-Wilk 검정
stat, p_value = shapiro(residuals)
print("Shapiro-Wilk 검정 통계량:", stat)
print("p-value:", p_value)
if p_value > 0.05:
print("잔차가 정규성을 만족합니다.")
else:
print("잔차가 정규성을 만족하지 않습니다.")
※ 면접 질문 모음집: https://zzsza.github.io/data/2018/02/17/datascience-interivew-questions/
'AI > 기술면접준비' 카테고리의 다른 글
[기술면접] 정규화(Regularization), Lasso(L1 규제), Ridge(L2 규제) (0) | 2024.12.14 |
---|---|
[기술면접] 오차(Error)와 편향(Bias), 분산(Variance), 정규화(Regularization) (0) | 2024.12.13 |
[기술면접] 엔트로피(entropy)와 Information Gain에 대해 설명해주세요. (0) | 2024.12.11 |
[기술면접] 중심극한정리는 왜 유용한걸까요? (0) | 2024.12.02 |
[기술면접] 정규화(Normalization) (0) | 2024.11.13 |
- Total
- Today
- Yesterday
- 루틴
- 아침운동
- SQL
- 뉴스
- 티스토리챌린지
- 실기
- 30분
- 영어회화
- llm
- 갓생
- Python
- 스크랩
- opic
- 아침
- ChatGPT
- 기초
- 고득점 Kit
- 미라클모닝
- 다이어트
- 경제
- Ai
- 운동
- IH
- 프로그래머스
- 빅데이터 분석기사
- 습관
- 줄넘기
- 오픽
- C언어
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |