작성일자 : 2023-12-12
Ver 0.1.1
1. 가설 설정 및 필요 module import
(적합도 검정)
H0 : A, B, C, ...는 동일한 비율이다. / A, B, C, ...는 a%, b%, c% , ... 비율로 구성되어 있다.
H1 : A, B, C, ...는 동일한 비율이 아니다. / A, B, C, ...는 a%, b%, c% , ... 비율로 구성되어 있지 않다.
(독립성 검정)
H0 : A와 B는 서로 관련이 없다. ( = 두 변수는 서로 독립이다.)
H1 : A와 B는 서로 관련이 있다. ( = 두 변수는 서로 독립이 아니다.)
H0 : value의 평균이 x 와 같다. (양측) / value의 평균이 x 보다 크지 않다 or 작지 않다. (단측)
H1 : value의 평균이 x 와 같지 않다. (양측) / value의 평균이 x 보다 크다. or 작다. (단측)
import pandas as pd
import numpy as np
from scipy.stats import chisquare
2. 유의 수준 확인
일반적으로 유의 수준을 5%으로 하여 가설 검정을 한다.
3. 검정실시 (검정 통계량, p-value)
2023.12.01 - [Data Analysis/Data & Statistics] - [Statistics] p-value (유의확률)
(적합도 검정)
# 3. 검정실시 (통계량, p-value)
# chisqure(f_obs = f_obs, f_exp = f_exp) # 관측값(관측빈도), 기대값(기대빈도)
# 관측값과 기대값 구하기
f_obs = [30,20,15,35] # 빈도수
# f_obs = df.loc[0]
f_exp = [25,25,25,25]
statistic, pvalue = chisquare(f_obs = f_obs, f_exp = f_exp)
print(statistic)
print(pvalue)
---------------------------------------------------------------------
# 3. 검정실시 (통계량, p-value)
# chisqure(f_obs = f_obs, f_exp = f_exp) # 관측값(관측빈도), 기대값(기대빈도)
# 관측값과 기대값 구하기
f_obs = [50,25,75] # 빈도수
# f_obs = df.loc[0]
a = 150 * 0.3
b = 150 * 0.15
c = 150 * 0.55
f_exp = [a,b,c]
statistic, pvalue = chisquare(f_obs = f_obs, f_exp = f_exp)
print(statistic)
print(pvalue)
(독립성 검정)
# 3. 검정실시(통계량, p-value, 기대값 확인)
from scipy.stats import chi2_contingency #chi2_contingency
statistic, pvalue, dof, expected = chi2_contingency(df)
# 공식문서상에 : statistic(= 통계량), pvalue (유의확률), dof(= degrees of freedom, 자유도), expected_freq(기대값)
# 아래와 같이 입력해도 동일한 결과값
# statistic, pvalue, dof, expected = chi2_contingency([row1, row2])
# statistic, pvalue, dof, expected = chi2_contingency(df.iloc[0],df.iloc[1])
print(statistic)
print(pvalue)
print(dof) # dof = (행-1)*(열-1)
print(np.round(expected,2)) # 반올림하고 싶다면 np.round()
# (참고) print(chi2_contingency([row1, row2]))
4. 귀무가설 기각여부 결정
검정 실시에서 구한 p-value가 유의수준인 0.05보다 크면 귀무가설 채택
검정 실시에서 구한 p-value가 유의수준인 0.05보다 작으면 귀무가설 기각 ( = 대립가설 채택)