통계 실습 | 파이썬으로 카이제곱검정

2025. 1. 17. 17:52·Python

문제 4.  카이제곱검정

  1. 출제의도
    • 귀무가설과 대립가설을 설정할 수 있다.
    • 카이제곱 검정을 이해하고 올바르게 해석할 수 있다.
    • 카이제곱 검정 함수에 적절한 전달인자를 넣을 수 있다.
  2. 문제
    • 다음 click_rate 데이터는 헤드라인별 클릭과 클릭하지 않은 수 에 대한 데이터입니다.
    • 귀무가설과 대립가설을 설정하세요.
    • 카이제곱 검정 수행하여 실제로 클릭률에 대한 차이가 있는지 유의수준 0.05 에서 검정해보세요.
  3. Skeleton code
import pandas as pd
from scipy import stats
# URL 로 데이터 가져오기
url = "https://raw.githubusercontent.com/gedeck/practical-statistics-for-data-scientists/master/data/click_rates.csv"
click_rate  = pd.read_csv(url)
clicks = click_rate.pivot(index='Click', columns='Headline', values='Rate')
display(clicks)

'''
여기에 코드를 작성하세요.
'''

# 결론
alpha = 0.05  # 유의수준
if pvalue < alpha:
    print("귀무가설 기각: 헤드라인과 페이지 클릭율에는 관련이 있다..")
else:
    print("귀무가설 채택: 헤드라인과 페이지 클릭율에는 관련이 없다.")

출력 결과 예시

'''
H0: 귀무가설은 ~~ 이다
H1: 대립가설은 ~~ 이다.
chisq:1.666
pvalue:0.435
귀무가설 채택: 헤드라인과 페이지 클릭율에는 관련이 없다.
'''

💡 문제 풀이 

`내 풀이`

#문제4
# 카이제곱검정
import pandas as pd
from scipy import stats
# URL 로 데이터 가져오기
url = "https://raw.githubusercontent.com/gedeck/practical-statistics-for-data-scientists/master/data/click_rates.csv"
click_rate  = pd.read_csv(url)
clicks = click_rate.pivot(index='Click', columns='Headline', values='Rate')
display(clicks)

# 독립성 검정
chisq, pvalue, dof, expeted = stats.chi2_contingency(clicks)

H0 =f"헤드라인과 페이지 클릭율에는 관련이 없다."
H1 =f"헤드라인과 페이지 클릭율에는 관련이 있다."
print(f"H0(귀무가설):{H0} \nH1(대립가설):{H1} \nchisq:{chisq:.3f} \npvalue:{pvalue:.3f}")

# 결론
alpha = 0.05  # 유의수준
if pvalue < alpha:
    print("귀무가설 기각: 헤드라인과 페이지 클릭율에는 관련이 있다.")
else:
    print("귀무가설 채택: 헤드라인과 페이지 클릭율에는 관련이 없다.")

`출력 결과`

`오답노트`

  • 참고) 독립성 검정 `scipy.stats.chi2_contingency` : 반환하는 변수 4개
    • chisq, pvalue, dof, expeted = stats.chi2_contingency(clicks)
 

chi2_contingency — SciPy v1.15.1 Manual

A two-way example (2 x 3): >>> import numpy as np >>> from scipy.stats import chi2_contingency >>> obs = np.array([[10, 10, 20], [20, 20, 20]]) >>> res = chi2_contingency(obs) >>> res.statistic 2.7777777777777777 >>> res.pvalue 0.24935220877729619 >>> res.

docs.scipy.org

  • 참고) 피벗테이블 `pandas.DataFrame.pivot(index= , columns= , values= )`
    • click_rate.pivot(index='Click', columns='Headline', values='Rate')
 

pandas.DataFrame.pivot — pandas 2.2.3 documentation

Column(s) to use for populating new frame’s values. If not specified, all remaining columns will be used and the result will have hierarchically indexed columns.

pandas.pydata.org

 

'Python' 카테고리의 다른 글
  • 통계 실습 | 파이썬으로 중심극한정리(CLT) - 각 분포의 표본의 평균 시각화
  • 통계 실습 | 파이썬으로 중심극한정리(CLT) - 데이터 생성하기
  • 통계 실습 | 파이썬으로 이표본 t 검정
  • 통계 실습 | 파이썬으로 신뢰구간 구하기
초담
초담
4년차 마케터입니다
  • 초담
    그로스마케터의 기록
    초담
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (117)
      • Data Analytics Project (3)
      • SQL (55)
      • Python (43)
      • GA4 (0)
      • Tableau (8)
      • 아티클 스터디 (7)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
초담
통계 실습 | 파이썬으로 카이제곱검정
상단으로

티스토리툴바