카이제곱 검정 분석
[수업 목표]
- 카이제곱 검정을 통해 범주형 변수 간 독립성에 대한 가설 검정과 p-value 해석 방법을 익힌다.
- 독립성 검정, 적합도 검정, 동질성 검정 등 다양한 카이제곱 검정 방법을 이해한다.
- Python의 scipy.stats를 활용하여 카이제곱 통계량과 p-value를 계산하고, Cramer’s V를 활용한 연관성 강도 측정 방법을 이해한다.
- 제조 품질 데이터를 활용하여 생산라인과 불량률의 연관성, 개선 전후 품질 변화 등을 통계적으로 분석하는 방법을 이해한다.
📕
- 카이제곱 (χ2) 분석 개요
(1) 기본 개념 카이제곱 검정 (Chi-square test) 은 📊 범주형 자료 간의 관계나 분포 적합도를 검정하는 데 사용되는 통계 기법입니다. (2) 범주형 자료 예시
- 성별 (남/여), 혈액형 (A/B/O/AB), 지역 (서울/경기/인천/…),
- 제품 만족도 (매우 만족/만족/보통/불만족/매우 불만족) 등 (3) 데이터에서 교차표로 변환
📕 데이터 → 교차표 변환
1. 데이터 예시: 일반 레이블 형태
한 제조업체에서
생산 라인(A, B, C)과 제품 상태(양품/불량) 데이터를 수집했다고 가정합니다.
제품 ID 생산 라인 제품 상태 1 A 양품 2 A 불량 3 B 양품 4 C 양품 5 B 불량 6 C 양품 7 A 양품 8 B 불량 9 A 양품 10 C 불량
2. 교차표 생성
교차표(Pivot Table) 형태로 데이터를 변환하면 다음과 같이 정리됩니다:
양품 불량 합계 A 3 1 4 B 1 2 3 C 2 1 3 합계 6 4 10 해당 범주의 빈도를 나타냅니다.
3. Python Code로 변환 예시
import pandas as pd # 1. 데이터 생성 data = \{ "제품 ID": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "생산 라인": ["A", "A", "B", "C", "B", "C", "A", "B", "A", "C"], "제품 상태": ["양품", "불량", "양품", "양품", "불량", "양품", "양품", "불량", "양품", "불량"], \} df = pd.DataFrame(data) # 2. 교차표 생성 cross_tab = pd.crosstab(df["생산 라인"], df["제품 상태"], margins=True, margins_name="합계") # 3. 출력 print(cross_tab)
4. 출력 결과
제품 상태 불량 양품 합계 생산 라인 A 1 3 4 B 2 1 3 C 1 2 3 합계 4 6 10
📕
- 카이제곱 검정의 주요 유형
- 적합도 검정(Goodness-of-fit test)
- 하나의 범주형 변수에 대해 ‘이론적으로 기대되는 분포(기댓값)’가 있고, 이것이 실제 관찰된 분포(관측값)와 유의미하게 다른지를 검정합니다.
- 예) “5종류 사탕이 균등하게(각각 20%) 섞여 있다”는 가정과, 실제 뽑힌 사탕 빈도를 비교하는 문제.
- 교차분석(Cross tabulation analysis) : 독립성 동질성 검정
- 두 개 이상의 범주형 변수가 서로 관련(독립이 아님)되어 있는지 분석합니다.
- 예) “남학생과 여학생”이 “메뉴(짜장면, 짬뽕, 마라탕)”를 선택하는 빈도가 유의하게 다른지 알아보는 문제.
- 이를 독립성 검정(Chi-square test of independence)이라고 부르기도 합니다.
💡 **또 다른 갈래, 검정 독립성, 동질성, 적합도 **
(1) 적합도 (Goodness-of-fit) 검정
- 하나의 범주형 변수가 어떤 특정한
기대 분포 (이론적 분포) 에 적합한지 확인합니다.- 예시: 멘델의 유전 법칙에서 예상되는 표현형 비율 (둥근 완두콩 : 주름진 완두콩 = 3:1) 이 실제 관찰 결과와 일치하는지 검정
- 귀무가설 (): 관측된 분포 = 기대 분포 (차이 없음) (2) 독립성 (Independence) 검정
- 두 개의 범주형 변수가
서로 독립인지, 아니면 연관성이 있는지 확인합니다.- 예시: 성별과 특정 질병 발병 여부가 연관되는지 검정
- 귀무가설 (): 두 범주형 변수는 서로 독립 (3) 동질성 (Homogeneity) 검정
- 여러 모집단 (집단) 이 동일한 분포를 보이는지 검정합니다.
- 예시: 지역별로 특정 제품에 대한
선호도 분포가 동일한지 검정- 귀무가설 (): 여러 집단 간 범주형 분포는 모두 동일
**💡 독립성 검정과 동질성 검정은 통계적으로 유사한 방식으로 진행되지만, ** **해석상 “서로 다른 모집단들이 동일한 분포를 보이는지” 를 묻는 점이 다릅니다. 💡 **
- 적합성 검정:
chisquare()
- “단일 범주형 변수의 관측분포가 주어진 이론적 분포와 얼마나 잘 맞는가?”
- 독립성 검정:
chi2_contingency()
- “하나의 모집단에서 두 범주형 변수가 서로 독립인가?”
- 동질성 검정:
chi2_contingency()
“서로 다른 여러 모집단에서 하나의 범주형 변수의 분포가 동일(동질)한가?”
코드 차원에서는 독립성 검정과 동질성 검정이 똑같이 chi2_contingency를 이용하지만,
📕
- 수학적 기초
💡 예시
- 자유도 k인 카이제곱 분포는 서로 독립인 k개의 표준정규분포 확률변수의 제곱합에 대한 분포입니다.
- 주로 범주형 자료의 빈도를 다룰 때(적합도 검정, 교차분석 등) 많이 사용됩니다.
적합도 검정 예시
예시 상황
- 5종류의 사탕이 똑같은 비율(각 20%)로 섞여 있다고 가정(총 100개 중 맛별로 20개씩 기대).
- 실제로 뽑은 관찰값(소다맛 17, 딸기맛 16, 레몬맛 24, 포도맛 29, 사과맛 14).
카이제곱 통계량 계산
- : 관찰값(observed)
- : 기대값(expected)
검정 결과 해석
- 범주가 5개이므로 자유도(df) = 5 - 1 = 4
- 유의수준(5%)에서의 임계값
- 계산된 검정통계량(7.9)이 임계값(9.4877)보다 작으므로, 귀무가설(“균등 비율로 섞여 있다”)을 기각하기 어렵다고 판단.
- 즉, “유의한 차이가 없다”고 보아, 실제 관찰빈도와 기대빈도가 통계적으로 크게 다르지 않다고 결론 내린다.
교차분석 예시 및 기대빈도 계산 방법
교차분석(독립성 검정) 개요
- 두 개 이상의 범주형 변수가 서로 관련성이 있는지(독립이 아닌지)를 알아보는 방법.
- 예: 남학생·여학생(범주1) × 짜장면·짬뽕·마라탕(범주2)으로 구성된 2차원 분할표(contingency table)를 구성해, 각 셀의 관찰빈도와 기대빈도 사이의 차이가 통계적으로 유의한지를 카이제곱 검정으로 확인.
기대빈도(Expected Frequency) 계산 공식
- 보통 각 셀의 기대빈도는 다음과 같이 구합니다: (행의 합) × (열의 합) / (전체 합)\text{(행의 합) × (열의 합)} ;\big/;\text{(전체 합)}
- 예를 들어,
- 남학생 전체가 40명, 짜장면 선택이 37명, 전체 표본이 85명이라고 할 때,
- 남학생 & 짜장면 셀의 기대빈도는
- 이렇게 구한 각 셀의 기대빈도와 실제 관측빈도를 비교해 카이제곱 통계량을 산출하고, 이 값이 임계값(또는 p-value)과 비교해서 귀무가설(“두 범주형 변수는 독립적이다”)의 기각 여부를 판단합니다.
실제 예시 표
짜장면(37) 짬뽕(28) 마라탕(20) 합계(85) 남학생(40) 관측 21 (기대 17.41) 관측 13 (기대 13.18) 관측 6 (기대 9.41) 40 여학생(45) 관측 16 (기대 19.59) 관측 15 (기대 14.82) 관측 14 (기대 10.59) 45 합계 37 28 20 85
- 괄호 안의 숫자가 기대빈도, 괄호 밖이 관측빈도입니다.
- 이 표의 각 셀에 대해 값을 구한 뒤 모두 합하면 해당 교차분석의 통계량이 됩니다.
📕
- 카이제곱 검정 절차
4. 카이제곱 검정 절차
- 데이터 수집 & 분할표 작성
- 기대도수 계산
- χ2 통계량 계산
- 자유도, p-값 확인
- 결과 해석
📕
- 검정 가정 & 주의사항
5. 검정 가정 & 주의사항
- 표본의 독립성: 측정된 샘플들이 서로 독립적이어야 합니다.
- 기대도수 5 이상: 각 셀의 기대도수가 5 미만인 셀이 여러 개 있으면, χ2 분포 근사가 불안정해집니다. 이 경우 셀을 합치거나 Fisher의 정확 검정 등을 고려할 수 있습니다.
- 표본 크기: 극단적으로 적은 표본은 분할표 구성 자체가 무의미해질 수 있습니다.
- 연속성 보정: 2×2 표에서 정확도를 높일 수 있음 (Yates의 연속성 보정을 적용하기도 합니다.)
📕
- 카이제곱 (χ2) 해석과 보고
- 독립성 검정 예시: p-값 < 0.05 → “성별에 따라 제품 선호가 유의미하게 달라진다 (독립 아님)”
- 적합도 검정 예시: p-값 < 0.05 → 기대 분포와 다른 결과가 나타났음을 의미
- 동질성 검정 예시: p-값 < 0.05 → 지역 간 선호 패턴이 다르다고 결론 💡 보고 시에는 교차표, χ2 통계량, 자유도, p-값 등을 명시하고, 어떤 범주가 특히 많이/적게 차이를 보이는지 세부 분할표로 해석해주면 좋습니다.
📕
- **카이제곱 (χ2) **분석의 장점과 단점
(1) 장점
- 분석이 간단하고 직관적입니다.
- 범주형 자료 전용 분석 방법입니다.
- 이해하기 쉬운 결과를 제공합니다. (2) 단점
- 기대도수 5 이상 조건을 만족해야 합니다.
- 원인-결과 분석이 제한적입니다. (연관성만 파악)
- 집단의 세부적인 차이 파악이 어려울 수 있습니다.
📕
- 카이제곱 (χ2)을 실무에 적용시 고려사항
-
데이터 구조 파악: 각 범주별 관측 빈도가 충분한지, 일부 셀에 데이터가 몰려 있지 않은지 확인합니다.
-
기대도수 5 미만 셀: 셀이 여러 개면 검정 결과 왜곡 가능성이 있습니다. 셀 병합 혹은 다른 검정 (Fisher 정확 검정 등) 활용을 고려합니다.
-
결과 해석: p-값만 보지 말고, 잔차 분석을 통한 세부 해석 또는 효과 크기 (Cramer’s V, Phi 계수) 도 추가로 제시하면 좋습니다.
-
표본 추출 방식: 동질성 검정 vs 독립성 검정 구분 시, 사전에 표본 추출 방식 및 연구 설계를 명확히 정의해야 합니다.
-
파이썬 코드확인하기 ( 통계학 기초 내용이랑 동일!)
주의: 실제로 “독립성 검정”과 “동질성 검정”은 동일한 통계 기법(chi2_contingency)**을 이용
1) 적합성 검정 (Goodness-of-fit test)
- 문제 상황 예시: 3가지 범주(예: 색상 빨강/초록/파랑)가 일정 비율로 분포한다고 이론적으로 기대하지만, 실제 관측된 빈도가 그와 맞는지 확인
- 함수:
scipy.stats.chisquare(observed, f_exp=expected)
import numpy as np
from scipy.stats import chisquare
# 관측값(Observed)
observed = np.array([18, 22, 30])
# 기대값(Expected) - 예: 빨강 20, 초록 20, 파랑 30 정도로 가정
expected = np.array([20, 20, 30])
# 적합성 검정
chi2_val, p_val = chisquare(observed, f_exp=expected)
print("[적합성 검정]")
print(f"Chi-square statistic: {chi2_val:.3f}")
print(f"p-value: {p_val:.3f}")
# p-value가 0.05보다 작으면 -> '기대분포와 유의하게 다르다' (귀무가설 기각)
2) 독립성 검정 (Independence test)
- 문제 상황 예시: 하나의 모집단에서 범주형 변수 A(예: 성별 = 남/여)와 범주형 변수 B(예: 메뉴 = 짜장면/짬뽕/마라탕)가 서로 독립인지 확인
- 함수:
scipy.stats.chi2_contingency(2차원 분할표)
import numpy as np
from scipy.stats import chi2_contingency
# 예시 데이터: 한 학교에서 남학생/여학생이
# 짜장면/짬뽕/마라탕 중 어떤 메뉴를 선택했는지 관측 빈도표(2행x3열)
obs_table = np.array([
[21, 13, 6], # 남학생
[16, 15, 14], # 여학생
])
chi2_val, p_val, dof, expected_table = chi2_contingency(obs_table)
print("[독립성 검정]")
print(f"Chi-square statistic: {chi2_val:.3f}")
print(f"p-value: {p_val:.3f}")
print(f"Degrees of freedom: {dof}")
print("[각 셀의 기대빈도표]")
print(expected_table)
# p-value가 0.05보다 작으면 -> '성별과 메뉴 선택은 독립이 아님' (귀무가설 기각)
# 그렇지 않으면 -> '독립적이다' (귀무가설 채택)
3) 동질성 검정 (Test of homogeneity)
- 문제 상황 예시: 서로 다른 모집단(예: 지역 A/B/C)에 대해, 어떤 범주(예: 메뉴 3종류) 분포가 **같은지(동질)**를 확인.
- 역시
chi2_contingency함수를 사용하되, **각 행(또는 열)**이 “서로 다른 모집단”으로 간주됩니다.
import numpy as np
from scipy.stats import chi2_contingency
# 예시 데이터: 지역 A, B, C (3개 집단)에서
# 메뉴 3종(짜장면/짬뽕/마라탕) 선택 인원 관측 빈도
obs_table_homogeneity = np.array([
[30, 20, 50], # 지역 A
[35, 25, 40], # 지역 B
[45, 30, 25], # 지역 C
])
chi2_val_h, p_val_h, dof_h, expected_table_h = chi2_contingency(obs_table_homogeneity)
print("[동질성 검정]")
print(f"Chi-square statistic: {chi2_val_h:.3f}")
print(f"p-value: {p_val_h:.3f}")
print(f"Degrees of freedom: {dof_h}")
print("[각 셀의 기대빈도표]")
print(expected_table_h)
# p-value가 0.05보다 작으면 -> '세 지역의 메뉴 선호 분포가 동일하지 않다' (귀무가설 기각)
# 크면 -> '분포가 동질적(같다)' (귀무가설 채택)
📕
- Python 예시 코드 (독립성 검정)
import numpy as np
import pandas as pd
from scipy.stats import chi2_contingency
from math import sqrt
# ------------------------------------------------
# 1) 예시 데이터 (관측도수 표: 2행 x 3열)
# ------------------------------------------------
# 예) 도시 A (행1), 도시 B (행2)
# 카테고리 3개 (열1, 열2, 열3)
obs = np.array([[10, 15, 25], # 도시 A의 분포
[20, 25, 5]]) # 도시 B의 분포
# 행/열 이름을 붙여보고 싶다면 DataFrame으로 관리:
df_obs = pd.DataFrame(obs,
index=['City_A','City_B'],
columns=['Prefer_1','Prefer_2','Prefer_3'])
print("== 관측도수(Observed Frequencies) ==")
print(df_obs, "\n")
# ------------------------------------------------
# 2) 카이제곱 독립성 검정
# ------------------------------------------------
chi2, p, dof, expected = chi2_contingency(obs)
print("== 카이제곱 검정 결과 ==")
print(f"Chi2 통계량: {chi2:.4f}")
print(f"p-value: {p:.4f}")
print(f"자유도(df): {dof}")
df_expected = pd.DataFrame(expected,
index=['City_A','City_B'],
columns=['Prefer_1','Prefer_2','Prefer_3'])
print("\n[기대도수(Expected Frequencies)]")
print(df_expected)
# 유의수준 설정 (예: 0.05)
alpha = 0.05
if p < alpha:
print("\n=> 귀무가설 기각: 통계적으로 유의한 연관성이 있다고 판단합니다.")
else:
print("\n=> 귀무가설 채택: 유의한 연관성을 찾지 못했습니다.")
# ------------------------------------------------
# 3) 잔차(Residual) 분석
# ------------------------------------------------
# 표준화 잔차: (관측값 - 기대값) / sqrt(기대값)
std_res = (obs - expected) / np.sqrt(expected)
df_std_res = pd.DataFrame(std_res,
index=['City_A','City_B'],
columns=['Prefer_1','Prefer_2','Prefer_3'])
print("\n== 표준화 잔차(standardized residuals) ==")
print(df_std_res)
# 특정 기준(예: ±1.96) 이상이면 통계적으로 유의하게 기대보다 많거나 적다는 해석 가능
sig_mask = np.abs(std_res) > 1.96
df_sig_mask = pd.DataFrame(sig_mask,
index=['City_A','City_B'],
columns=['Prefer_1','Prefer_2','Prefer_3'])
print("\n[잔차 > ±1.96 여부]")
print(df_sig_mask)
# ------------------------------------------------
# 4) 효과크기: Cramer's V
# ------------------------------------------------
# Cramer's V = sqrt( (chi2 / n) / (k-1) )
# - n: 전체 표본 크기
# - k: min(행-1, 열-1)
n = obs.sum()
phi2 = chi2 / n
r, c = obs.shape
k = min(r-1, c-1) # 독립성 검정에서는 (행-1, 열-1) 중 작은 값
cramers_v = sqrt(phi2 / k)
print(f"\n== Cramer's V (효과크기) ==")
print(f"Cramer's V: {cramers_v:.4f}")
📕
- Cramer’s V 란?
카이제곱 검정에서 두 범주형 변수 간의 연관성을 측정하는 값입니다. 📊 즉, 두 변수가 얼마나 강하게 관련되어 있는지 수치로 보여주는 지표입니다. 왜 Cramer’s V 를 사용할까요? 카이제곱 검정은 두 변수 간에 연관성이 있는지 여부만 알려줍니다. 하지만 Cramer’s V 를 사용하면 연관성의 강도까지 파악할 수 있습니다. 💪 Cramer’s V 는 어떻게 계산할까요? 다음과 같은 공식을 사용합니다.
- χ2: 카이제곱 검정 통계량
- N: 총 관측값의 개수
- k: 행 (row) 또는 열 (column) 의 작은 쪽 범주 개수
📕
- Cramer’s V 값은 어떻게 해석할까요?
Cramer’s V 값은 0 에서 1 사이의 값을 가지며, 값이 클수록 연관성이 강합니다.
| Cramer’s V 값 | 연관성의 강도 |
|---|---|
| 0.0 - 0.1 | 매우 약함 |
| 0.1 - 0.3 | 약함 |
| 0.3 - 0.5 | 중간 정도 |
| 0.5 이상 | 강함 |
⚠️ 주의: 연관성의 강도를 해석할 때는 데이터의 맥락과 범주 개수를 고려해야 합니다.
📕
- Cramer’s V 계산 예시
데이터: 한 제조업체에서 생산 라인 (A, B, C) 과 제품 상태 (양품, 불량) 간의 관계를 분석하려고 합니다. 아래 교차표를 바탕으로 카이제곱 검정을 수행했습니다.
| 양품 | 불량 | 합계 | |
|---|---|---|---|
| A | 30 | 10 | 40 |
| B | 25 | 15 | 40 |
| C | 20 | 20 | 40 |
| 합계 | 75 | 45 | 120 |
카이제곱 검정을 통해 χ2=6.5 라고 나왔다고 가정합니다. 계산
- χ2=6.5
- N=120 (총 관측값)
- k=2 (열의 범주 수: 양품, 불량)
해석 V=0.23 이므로, 두 변수 간의 연관성은 약한 수준입니다. 즉, 생산 라인과 제품 상태 간의 관계가 강하지 않다고 해석할 수 있습니다.
- ****📌 문제 상황과 통계 기법 ****
1. 카이제곱 - 적합성 검정 (Goodness-of-fit)
어느 양말 공장에서는 5가지 색상(흰색, 검정, 회색, 파랑, 빨강)의 양말을 같은 비율(각 20%)로 생산한다고 광고한다. 무작위로 200켤레를 뽑아 색상을 조사했더니, 실제 빈도는 각각 42, 45, 38, 40, 35켤레였다. 이 공장에서 주장한 색상 비율(20%씩)이 실제 관측된 분포와 유의미하게 다른지 확인하고자 한다.
사용 기법: 카이제곱 적합성 검정(scipy.stats.chisquare)
2. 카이제곱 - 적합성 검정 (Goodness-of-fit)
과자 회사 A는 “새로 출시한 미니쿠키 안에 초콜릿 칩 10개, 화이트 초콜릿 칩 5개, 크랜베리 칩 5개가 항상 들어간다”고 홍보한다. 실제로 20봉지를 개봉해 각 칩 종류별 갯수를 세었더니, 평균 9.5개, 6개, 4.5개로 조사되었다. 회사 측 주장(10:5:5 비율)과 실제로 들어 있는 칩 비율이 일치하는지 통계적으로 검정하고자 한다.
사용 기법: 카이제곱 적합성 검정
3. 카이제곱 - 독립성 검정 (Independence)
한 대학교 학생들을 대상으로 **전공 계열(인문사회, 자연공학, 예체능)**과 **선호하는 공부 장소(도서관, 카페, 집)**를 조사하여, 전공과 장소 선호가 독립적인지 알아보고자 한다.
사용 기법: 카이제곱 독립성 검정(scipy.stats.chi2_contingency)
4. 카이제곱 - 독립성 검정 (Independence)
한 쇼핑몰에서 **멤버십 등급(실버, 골드, 플래티넘)**과 **주 1회 이상 구매 여부(한다/안 한다)**가 관련이 있는지 궁금하다. 3×2 교차표(등급별로 “구매” vs “미구매” 횟수)를 구성하여 두 범주형 변수가 독립인지 조사한다.
사용 기법: 카이제곱 독립성 검정
5. 카이제곱 - 동질성 검정 (Homogeneity)
제조 공장이 3곳(A, B, C) 있는데, 모두 동일한 제품(휴대폰 케이스)을 만든다. 각 공장에서 랜덤 샘플 100개씩을 추출하여 불량 원인(스크래치, 찢어짐, 색 번짐, 기타) 분포가 서로 동질(동일)한지 확인하려고 한다.
사용 기법: 카이제곱 동질성 검정(scipy.stats.chi2_contingency)
6. 카이제곱 - 동질성 검정 (Homogeneity)
패스트푸드점 3개 브랜드(M사, B사, K사)의 매장 10곳씩을 방문하여, 방문 고객 100명을 무작위로 조사했다. “선호 메뉴(버거, 치킨, 사이드류)” 분포가 브랜드마다 같은지(동질한지) 알아보려고 한다.
사용 기법: 카이제곱 동질성 검정
7. 카이제곱 - 독립성 vs 동질성 차이 예시
(개념 이해용)
- 독립성 검정: 한 도시의 시민 전체(단일 모집단)에서 **‘직업군(사무직, 서비스직, 전문직 등)’ vs ‘운동 취미 종류(헬스, 수영, 골프, 없음 등)’**가 독립인가?
- 동질성 검정: **도시가 다른 3개 지역(서울, 부산, 광주)**에서, 사무직·서비스직·전문직 분포가 동일한지? 두 경우 모두 카이제곱 분할표로 검정하지만, “하나의 모집단 내부 두 범주의 독립성”과 “서로 다른 모집단(도시) 간 단일 범주의 분포 동질성”이라는 맥락 차이가 있다.
사용 기법: 모두 chi2_contingency 활용, 해석이 다름
8. 선형회귀 - 단순선형회귀(Simple Linear Regression)
한 쇼핑몰에서 **광고비(만원 단위)**를 x, **하루 매출(만원 단위)**을 y로 잡고, 광고비가 매출에 미치는 영향을 예측하고자 한다.
사용 기법: 단순선형회귀(예: statsmodels나 sklearn.linear_model.LinearRegression)
9. 선형회귀 - 단순선형회귀
초등학교 인근 가게에서 **기온(℃)**에 따라 아이스크림 판매 개수가 어떻게 달라지는지 조사하여, 기온(x)과 판매량(y)의 상관 및 예측 모델을 만들었다.
사용 기법: 단순선형회귀
10. 선형회귀 - 다중선형회귀(Multiple Linear Regression)
아파트 가격을 예측하기 위해, 독립변수로 “평수, 층수, 역까지 거리, 주변 학군 평판 지수” 등을 고려하고, 종속변수로 “아파트 실거래가(만원)”를 설정하여 회귀 모델을 구축한다.
사용 기법: 다중선형회귀(예: sklearn.linear_model.LinearRegression)
11. 선형회귀 - 다중선형회귀
스타트업에서 직원들의 생산성 점수(예: 단위시간당 처리 업무량)를 예측하기 위해, “주당 근무시간, 재택근무 여부(더미 변수로 변환), 직무만족도, 팀 내 커뮤니케이션 점수” 등을 예측 변수로 사용하는 모델을 개발하려 한다.
사용 기법: 다중선형회귀
12. ANOVA(일원분산분석) - One-Way ANOVA
- *세 가지 교육 방식(A, B, C)**을 무작위로 배정받은 학생 집단(각 20명씩)의 기말시험 점수를 비교하여, 교육 방식 간 평균 점수가 통계적으로 차이가 있는지 알아본다.
사용 기법: 일원분산분석(One-way ANOVA)
13. ANOVA(일원분산분석) - One-Way ANOVA
어느 제과점에서 효모 A, B, C를 사용해 빵을 구웠을 때의 “팽창률”이 서로 차이가 나는지 확인하고 싶다. 효모 종류(집단)별로 샘플 10개씩 테스트하여 평균 팽창률을 비교한다.
사용 기법: 일원분산분석
14. ANOVA(이원분산분석) - Two-Way ANOVA
한 식당에서 **조리 방법(프라이, 찜)**과 **소스 종류(매운맛, 순한맛)**라는 두 개의 요인(독립변수)이, 음식의 “맛 점수(5점 척도)”에 어떤 영향을 미치는지 보고 싶다.
사용 기법: 이원분산분석(Two-Way ANOVA)
15. ANOVA(이원분산분석) - Two-Way ANOVA
연구자가 **운동 프로그램(필라테스, 요가, 웨이트)**와 **식단 유형(고단백, 저탄수, 일반)**이라는 두 요인이 **체중 감소(kg)**에 미치는 영향 및 상호작용을 조사.
사용 기법: 이원분산분석
16. 로지스틱 회귀 - 이진 로지스틱 회귀(Binary Logistic Regression)
한 은행에서 **대출 승인 여부(승인=1, 거절=0)**를 예측하기 위해, “신용점수, 연소득, 자산 규모, 부채율” 등을 독립변수로 하는 모델을 만든다.
사용 기법: 이진 로지스틱 회귀(sklearn.linear_model.LogisticRegression 등)
17. 로지스틱 회귀 - 이진 로지스틱 회귀
인터넷 쇼핑몰에서 구매 완료(1) vs 장바구니 담기만 함(0) 여부를 예측하고자, “제품 가격, 할인 쿠폰 사용 여부, 최근 방문 횟수, 회원 등급” 등을 예측 변수로 설정했다.
사용 기법: 이진 로지스틱 회귀
18. 로지스틱 회귀 - 다항 로지스틱 회귀(Multinomial Logistic)
자동차 보험사에서 사고 유형을 “경미(0), 중간(1), 심각(2)” 3단계로 분류해 놓았고, 이를 예측하기 위해 “운전 경력, 차종, 사고 경력, 나이” 등을 설명 변수로 사용한다.
사용 기법: 다항 로지스틱 회귀(Multinomial Logistic Regression)
19. 로지스틱 회귀 - 다항 로지스틱 회귀
한 식품 기업에서 소비자들의 선호 패키지 디자인(A/B/C 중 택1)을 예측하기 위해, “연령대, 성별, 브랜드 로열티 지수, 패키지 컬러 선호도 점수” 등을 독립변수로 사용한다.
사용 기법: 다항 로지스틱 회귀
20. 로지스틱 회귀 vs 선형회귀 비교 문제
어떤 벤처 회사에서 신규 서비스를 개발하며,
- (로지스틱 회귀) “초기 클로즈 베타 유저들이 정식 출시 후에도 계속 서비스에 잔류할지(1) 중단할지(0)”를 예측하는 모델,
- (선형회귀) “잔류 유저들의 월평균 결제금액을 예측”하는 모델 두 가지를 동시에 구축하고자 한다.
잔류 여부는 이진 분류 → 로지스틱 회귀결제금액은 연속값 예측 → 선형회귀
- 📌 오늘의 요약
- 카이제곱 검정
- 적합성 검정: 단일 범주의 “관찰분포 vs 이론(기대)분포” 비교
- 독립성 검정: 하나의 모집단 내 두 범주형 변수의 독립성 판단
- 동질성 검정: 여러 모집단에서 하나의 범주형 변수의 분포가 같은지 비교
- 선형회귀
- 종속변수가 연속형일 때, 독립변수들과의 관계를 추정
- 단순(1개 독립변수) vs 다중(여러 독립변수)
- ANOVA(분산분석)
- 범주형 독립변수(집단)에 따른 연속형 종속변수(평균차이) 분석
- 일원(1개 요인) vs 이원(2개 요인, 상호작용 포함)
- 로지스틱 회귀
- 종속변수가 범주형(이진 또는 다항)일 때 사용
- 이진 로지스틱(0/1) vs 다항 로지스틱(3개 이상의 범주) 실습 참고자료 : https://colab.research.google.com/drive/16Zu8Y5zwec2uys3NA04KeL81gzVsQ1lP?usp=sharing
- 카이제곱 검정