- 정의
- 범주형 독립변수와 범주형 종속변수 간의 관계를 파악하기 위한 검정 방식
예) 표본의 부모학력과 자식 진학여부의 관계
- 정의
- 하나의 집단 내에서 두개의 독립변수를 대상으로 관련성 검정
[ 두 개의 독립변수 사이의 연관성 검정 ]
- 예시
- 하나의 집단 내에서 부모의 학력수준과 자식의 진학여부 사이의 연관성 검정
- 정의
- 두 개 이상의 집단 간의 분포가 동일한지를 검정
[ 두 개 이상의 집단 사이의 분포 동일성 검정 ]
- 예시
- 연령대별로 집단을 나누어 각 집단의 sns 이용현황 분포의 동일성 검정
- 부모학력 수준이 자녀의 진학여부와 관련이 있는가?를 가설검정하시오
- 예제파일 : cleanDescriptive.csv
- 칼럼 중 level - 부모의 학력수준, pass - 자녀의 대학 진학여부
- 조건 : level, pass에 대해 NA가 있는 행은 제외한다.
- 가설 세우기
- 독립변수 : 부모학력 수준
- 종속변수 : 자녀의 진학여부
- 1) 대립가설 세우기 : 부모학력 수준이 자녀의 진학여부와 관련이 있다.
- 2) 귀무가설 자동확정 : 부모학력 수준이 자녀의 진학여부와 관련이 없다.
[ 참고 ] 가설검증은 대립가설 중심으로 흘러간다.
1. 라이브러리 Import
import pandas as pd import scipy.stats as stats
2. 데이터세트 준비 + Null 값 제거
data1 = pd.read_csv("../testdata/cleanDescriptive.csv").dropna(subset=['level', 'pass']) print(data1.head()) # resident gender age level cost ... resident2 gender2 age2 level2 pass2 # 0 1.0 1 50 1.0 5.1 ... 특별시 남자 장년층 고졸 실패 # 1 2.0 1 54 2.0 4.2 ... 광역시 남자 장년층 대졸 실패 # 2 NaN 1 62 2.0 4.7 ... NaN 남자 노년층 대졸 합격 # 4 5.0 1 51 1.0 5.0 ... 시구군 남자 장년층 고졸 합격 # 6 2.0 2 56 1.0 4.1 ... 광역시 여자 장년층 고졸 실패
3. Null값 확인
print(data1.isnull().sum()) # resident 17 # gender 0 # age 0 # level 0 # cost 0 # type 11 # survey 77 # pass 0 # cost2 72 # resident2 17 # gender2 0 # age2 0 # level2 0 # pass2 0 # dtype: int64
4. 유니크값 확인
print(data1['level'].unique()) print(data1['pass'].unique()) # [1. 2. 3.] # [2. 1.]
5. 이원카이제곱 분석을 위한 크로스테이블 생성
ctab = pd.crosstab( index=data1['level'], columns=data1['pass'] ) ctab.columns = ["합격", "불합격"] ctab.index = ["중졸","고졸","대졸"] print(ctab) # 합격 불합격 # 중졸 49 40 # 고졸 55 27 # 대졸 31 23
6. 이원카이제곱 분석
- chi2 : 검정통계량(카이제곱값)
- p-value : 유의확률chi2, p, ddof, _ = stats.chi2_contingency(ctab) print(f'chi2:{chi2}, p:{p}, ddof:{ddof}') # chi2:2.7669512025956684, p:0.25070568406521365, ddof:2 # 분석 결과 # 0.25(p-value) > 0.05(유의수준) # -> 관련이 있다는 대립가설이 유의수준을 넘어서 유의미한 결과를 낼 수 없다고 판단 # -> 대립가설 기각 # -> 귀무가설 채택 ==> 관련이 없다.
- 연령대별 sns 이용률의 동질성 검정
- 20대에서 40대까지 연령대별로 서로 조금씩 그 특성이 다른 SNS 서비스들에 대해 이용 현황을 조사한 자료를 바탕으로 연령대별로 홍보 전략을 세우고자 한다.
- 연령대별로 이용 현황이 서로 동일한지 검정해 보도록 하자.
- 가설 세우기
- 독립변수 : 연령대
- 종속변수 : sns별 이용률
- 1) 대립가설 세우기 : 연령대별 sns별 이용률의 차이가 있다.
- 2) 귀무가설 자동확정 : 연령대별 sns별 이용률의 차이가 없다.
[ 참고 ] 가설검증은 대립가설 중심으로 흘러간다.
1. 라이브러리 Import
import pandas as pd import scipy.stats as stats
2. 데이터세트 준비
data = pd.read_csv("../testdata/snsbyage.csv") print(data.head()) # age service # 0 1 F # 1 1 F # 2 1 F # 3 1 F # 4 1 F
3. 유니크값 확인
print(data['age'].unique()) print(data['service'].unique()) # [1 2 3] # ['F' 'T' 'K' 'C' 'E']
4. 이원카이제곱 분석을 위한 크로스테이블 생성
ctab = pd.crosstab( index=data['age'], columns=data['service'] ) ctab.index = ['10대', '20대', '30대'] print(ctab) # service C E F K T # 10대 81 16 207 111 117 # 20대 109 15 107 236 104 # 30대 32 17 78 133 76
5. 이원카이제곱 분석
- chi2 : 검정통계량(카이제곱값)
- p-value : 유의확률chi2, p, ddof, _ = stats.chi2_contingency(ctab) print(f'chi2:{chi2}, p:{p}, ddof:{ddof}') # chi2:102.75202494484225, p:1.1679064204212775e-18, ddof:8 # 분석 결과 # 1.16e-18(p-value) < 0.05(유의수준) # -> 대립가설[차이가 있다.]의 p-value 값이 유의수준보다 작은 값이므로 유의미한 결과를 도출할 수 있다고 판단 # -> 대립가설 채택 # -> 귀무가설 기각 # 대립가설 선택 : 연령대별 sns 이용률의 차이가 있다.