250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] ꡐ차 뢄석 (카이제곱 κ²€μ •) λ³Έλ¬Έ

πŸ›  Machine Learning/기초 톡계

[Python] ꡐ차 뢄석 (카이제곱 κ²€μ •)

γ…… γ…œ γ…” γ…‡ 2022. 8. 21. 03:36
728x90

2022.08.20 - [Python] 이원 배치 λΆ„μ‚° 뢄석 (Two-way ANOVA)

 

[Python] 이원 배치 λΆ„μ‚° 뢄석 (Two-way ANOVA)

Two - way ANOVA λΆ„μ‚° λΆ„μ„μ—μ„œ ν•˜λ‚˜μ˜ μ’…μ†λ³€μˆ˜μ— λŒ€ν•œ 두 개의 λ…λ¦½λ³€μˆ˜ A, B의 영ν–₯을 μ•Œμ•„λ³΄κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” 검증 방법 두 λ…λ¦½λ³€μˆ˜ 사이에 상관관계가 μžˆλŠ” 지λ₯Ό μ‚΄νŽ΄λ³΄λŠ” κ΅ν˜Έμž‘μš©μ— λŒ€ν•œ κ²€

suhye.tistory.com

 

μ•žμ„œ ν¬μŠ€νŒ… ν–ˆλ˜ ANOVA 뢄석은 μ’…μ†λ³€μˆ˜κ°€ μ—°μ†ν˜• λ³€μˆ˜μ˜€μ§€λ§Œ, 카이제곱 검정은 μ’…μ†λ³€μˆ˜κ°€ λ²”μ£Όν˜• λ³€μˆ˜μΈ κ²½μš°μ— μ‚¬μš©ν•˜λŠ” 톡계 기법이닀. 

ꡐ차 뢄석은 κ΅μ°¨ν‘œλ₯Ό 톡해 각 μ…€μ˜ κ΄€μ°° λΉˆλ„μ™€ κΈ°λŒ€ λΉˆλ„κ°„μ˜ 차이λ₯Ό κ²€μ •ν•˜λŠ” 기법이닀.

 

1. 적합성 κ²€μ •

: 각 범주에 λ”°λ₯Έ λ°μ΄ν„°μ˜ λΉˆλ„ 뢄포가 이둠적으둜 κΈ°λŒ€ν•˜λŠ” 뢄포λ₯Ό λ”°λ₯΄λŠ” 지λ₯Ό κ²€μ •

scipy.stats.chisquare(f_obs(λ°μ΄ν„°νƒ€μž…), f_exp (κΈ°λŒ€λΉˆλ„) = None, ddof=0, axis=0)
- 귀무가섀 : 타이타닉 μƒμ‘΄μž 쀑 λ‚¨μžμ˜ λΉ„μœ¨μ΄ 50%, μ—¬μžμ˜ λΉ„μœ¨μ΄ 50%이닀.
- λŒ€λ¦½κ°€μ„€ : 타이타닉 μƒμ‘΄μž 쀑 λ‚¨μžμ˜ λΉ„μœ¨μ΄ 50%, μ—¬μžμ˜ λΉ„μœ¨μ΄ 50%κ°€ μ•„λ‹ˆλ‹€.

 

import pandas as pd

df = pd.read_csv('../data/titanic.csv')
df.head()

df_t  = df[df['survived'] == 1]
table = df_t[['sex']].value_counts()
table

μƒμ‘΄μž 쀑 λ‚¨μžκ°€ 109λͺ…, μ—¬μžκ°€ 233λͺ…인 것을 확인

-> κΈ°λŒ€λ„μˆ˜ : λ‚¨μž 171 / μ—¬μž 171 (총합 342λͺ…)

from scipy.stats import chisquare

chi = chisquare(table, f_exp=[171,171])
print('적합도 κ²€μ • \n', chi)

# 적합도 κ²€μ • 
# Power_divergenceResult(statistic=44.95906432748538, pvalue=2.0119672574477235e-11)

카이제곱 ν†΅κ³„λŸ‰μ€ 44.96, p-value값은 0.05보닀 μž‘μœΌλ―€λ‘œ κ·€λ¬΄κ°€μ„€ κΈ°κ° -> νƒ€μ΄νƒ€λ‹‰ν˜Έμ— μƒμ‘΄ν•œ λ‚¨μžμ™€ μ—¬μžμ˜ λΉ„μœ¨μ€ 50:50이라고 ν•  μˆ˜ μ—†μŒ

 

 

 

2. 독립성 κ²€μ •

λͺ¨μ§‘단이 두 λ³€μˆ˜ A, B에 μ˜ν•΄ λ²”μ£Όν™” λ˜μ—ˆμ„ λ•Œ, 이 λ³€μˆ˜λ“€ μ‚¬μ΄μ˜ 관계가 독립인 지λ₯Ό κ²€μ •

scipy.stats.chi2_contingency((observed(κ΄€μ°°λΉˆλ„), correection=True, lambda_=None)
타이타닉 λ°μ΄ν„°μ—μ„œ μ’Œμ„ λ“±κΈ‰(class)와 생쑴여뢀(survived)κ°€ μ„œλ‘œ 독립인지 κ²€μ •
- 귀무가섀 : classλ³€μˆ˜μ™€ survived λ³€μˆ˜λŠ” 독립
- λŒ€λ¦½κ°€μ„€ : classλ³€μˆ˜μ™€ survived λ³€μˆ˜λŠ” 독립이 μ•„λ‹˜

 

table = pd.crosstab(df['class'], df['survived'])
table

 

from scipy.stats import chi2_contingency

chi, p, df, expect = chi2_contingency(table)
print('Statics : ', chi)
print('p-value', p)
print('df : ',df)
print('expect : \n', expect)

p-valueκ°€ 0.05보닀 μž‘μ•„ κ·€λ¬΄κ°€μ„€ κΈ°κ° -> λ…립이 μ•„λ‹ˆλΌκ³  ν•  μˆ˜ μ—†μŒ

 

 

 

3. λ™μ§ˆμ„± κ²€μ •
λͺ¨μ§‘단이 μž„μ˜μ˜ λ³€μˆ˜μ— 따라 R개의 μ†μ„±μœΌλ‘œ λ²”μ£Όν™”λ˜μ—ˆμ„ λ•Œ, R개의 λΆ€λΆ„ λͺ¨μ§‘λ‹¨μ—μ„œ μΆ”μΆœν•œ C개의 λ²”μ£Όν™”λœ μ§‘λ‹¨μ˜ 뢄포가 μ„œλ‘œ λ™μΌν•œ 지 κ²€μ •ν•œλ‹€. 계산 방법은 독립성 κ²€μ •κ³Ό κ°™λ‹€.
 
- 귀무가섀 : class의 λΆ„ν¬λŠ” survived에 관계없이 λ™μΌν•˜λ‹€.
- λŒ€λ¦½κ°€μ„€ : class의 λΆ„ν¬λŠ” survived에 관계없이 λ™μΌν•˜μ§€ μ•Šλ‹€.

 

 

728x90
Comments