T-test는 특정한 조건에서 그룹의 평균을 비교하기 위한 가설검정 방법이다.
T-Test를 사용하기 위한 조건
독립성 : 두 그룹이 연결되어 있는 쌍(paired)인지
정규성 : 데이터가 정규성을 나타내는지
등분산성 : 두 그룹이 어느정도 유사한 수준의 분산 값을 가지는지
from scipy.stats import normaltest
sample = np.random.poisson(5, 1000) # normal 분포가 아님
normaltest(sample)
# NormaltestResult(statistic=20.30705116357633, pvalue=3.89385583211646e-05)
# 정규분포가 아니다
Q . 데이터의 등분산성을 확인하는 방법은?
A .
FP : False Positive, 1종오류
FN : False Negative, 2종오류
- 모집단이 특정 확률 분포 (normal과 같은)를 따른다는 전제를 하지 않는 방식
- Parameter estimation이 필요하지 않기에 non-parametric이라고 한다.
- Categorical data를 위한 모델링
- 극단적 outliner가 있는 경우 아주 훌륭한 방식이다.
- distribution free method 라고 부르기도 한다.
from scipy.stats import kruskal
x1 = [1, 3, 4, 8, 9]
y1 = [1, 4, 6, 7, 7]
kruskal(x1, y1) # 약간은 다르지만, "유의한" 차이는 아님
Q . Chi-Square Tests란?
A . 주어진 데이터가 특정 예상되는 분포와 동일한 분포를 나타내는지에 대한 가설검정
통계치를 pvalue로 바꾸는 방법?? stats.chi2.cdf
표준화 : 의미는 비슷하지만 통계치는 다르므로 표준화를 해줘야 한다.
통계치 의 계산식
=
적합도 검정, 관찰되는 분포가 예상되는 분포와 동일한지
from scipy.stats import chisquare
s_obs = np.array([[18, 22, 20, 15, 23, 22]]) # Similar
chisquare(s_obs, axis=None) # One sample chi-square
독립성 검정, 두 표본집단의 분포가 동일한지에 대한 가설검정( 두 표본집단의 연관성을 본다 )
from scipy.stats import chi2_contingency
chi2, pvalue, dof, expected = chi2_contingency(data)
카이제곱검점은 categorical 데이터만 사용할 수 있다.
Type casting
- numerical이지만, continuous하지 않아 바로 category로 사용 할 수 있는 경우
ex) 1, 2, 3 -> 1, 2, 3
Binning
- numerical이지만, continuous 해서 구간별로 나누어 사용 할 수 있는 경우
ex) 1.4, 2, 3.1, 2.8, 1.1, 2.5 -> A : 1~2, B : 2~3, C : 3~4
Q . 자유도( DOF )란?
A . 해당 parameter를 결정짓기 위한 독립적으로 정해질 수 있는 값의 수
ex) 일주일 동안 7 종류의 아이스크림 등