TIL(Today I Learned)
1️⃣통계학 기초 Chapter.3
A/B 검정이란?
- A/B 검정은 두 버전(A와 B) 중 어느 것이 더 효과적인지 평가하기 위해 사용되는 검정 방법.
- 마케팅, 웹사이트 디자인 등에서 많이 사용됨.
- 사용자들을 두 그룹으로 나누고, 각 그룹에 다른 버전을 제공한 후, 반응을 비교.
- 일반적으로 전환율, 클릭률, 구매수, 방문 기간, 방문한 페이지 수, 특정 페이지 방문 여부, 매출 등의 지표를 비교.
목적
- 두 그룹 간의 변화가 우연이 아니라 통계적으로 유의미한지를 확인
실습
- 온라인 쇼핑몰에서 두 가지 디자인(A와 B)에 대한 랜딩 페이지를 테스트하여 어떤 디자인이 더 높은 구매 전환율을 가져오는지 평가.
더보기
import numpy as np
import scipy.stats as stats
# 가정된 전환율 데이터
group_a = np.random.binomial(1, 0.30, 100) # 30% 전환율
group_b = np.random.binomial(1, 0.45, 100) # 45% 전환율
# t-test를 이용한 비교
t_stat, p_val = stats.ttest_ind(group_a, group_b)
print(f"T-Statistic: {t_stat}, P-value: {p_val}")
가설검정이란?
- 표본 데이터를 통해 모집단의 가설을 검증하는 과정
- 즉, 데이터가 특정 가설을 지지하는지 평가하는 과정
- 귀무가설(H0)과 대립가설(H1)을 설정하고, 귀무가설을 기각할지를 결정
- 데이터 분석시 두가지 전략을 취할 수 있음
- 확증적 자료분석
- 미리 가설들을 먼저 세운 다음 가설을 검증해 나가는 분석
- 탐색적 자료분석(EDA)
- 가설을 먼저 정하지 않고 데이터를 탐색해보면서 가설 후보들을 찾고 데이터의 특징을 찾는 것
- 확증적 자료분석
가설검정 단계
- 귀무가설(H0)와 대립가설(H1) 설정
- 유의수준(α) 결정
- 검정통계량 계산
- p-값과 유의수준 비교
- 결론 도출
실습
- 새로운 약물이 기존 약물보다 효과가 있는지 검정, 이 때 새로운 약물은 기존 약물과 큰 차이가 없다는 것이 귀무가설, 대립가설은 새로운 약물이 기존 약물과 대비해 효과가 있다는 것
더보기
# 기존 약물(A)와 새로운 약물(B) 효과 데이터 생성
A = np.random.normal(50, 10, 100)
B = np.random.normal(55, 10, 100)
# 평균 효과 계산
mean_A = np.mean(A)
mean_B = np.mean(B)
# t-검정 수행
t_stat, p_value = stats.ttest_ind(A, B)
print(f"A 평균 효과: {mean_A}")
print(f"B 평균 효과: {mean_B}")
print(f"t-검정 통계량: {t_stat}")
print(f"p-값: {p_value}")
# t-검정의 p-값 확인 (위 예시에서 계산된 p-값 사용)
print(f"p-값: {p_value}")
if p_value < 0.05:
print("귀무가설을 기각합니다. 통계적으로 유의미한 차이가 있습니다.")
else:
print("귀무가설을 기각하지 않습니다. 통계적으로 유의미한 차이가 없습니다.")
t검정이란?
- 두 집단 간의 평균 차이가 통계적으로 유의미한지 확인하는 검정 방법
- 독립표본 t검정과 대응표본 t검정으로 나뉜다.
독립표본 t검정
- 두 독립된 그룹의 평균을 비교
대응표본 t검정
- 동일한 그룹의 사전/사후 평균을 비교
실습
- 예1) 두 클래스의 시험 성적 비교(독립표본 t검정)
- 예2) 다이어트 전후 체중 비교(대응표본 t검정)
더보기
# 학생 점수 데이터
scores_method1 = np.random.normal(70, 10, 30)
scores_method2 = np.random.normal(75, 10, 30)
# 독립표본 t검정
t_stat, p_val = stats.ttest_ind(scores_method1, scores_method2)
print(f"T-Statistic: {t_stat}, P-value: {p_val}")
다중검정이란?
- 여러 가설을 동시에 검정할 때 발생하는 문제
- 각 검정마다 유의수준을 조정하지 않으면 1종 오류(귀무가설이 참인데 기각하는 오류) 발생 확률이 증가
보정 방법
- 본페로니 보정(보편적), 튜키 보정, 던넷 보정, 윌리엄스 보정 등이 있다.
실습
- 본페로니 보정을 활용한 약물 효과 동시 검정
더보기
import numpy as np
import scipy.stats as stats
# 세 그룹의 데이터 생성
np.random.seed(42)
group_A = np.random.normal(10, 2, 30)
group_B = np.random.normal(12, 2, 30)
group_C = np.random.normal(11, 2, 30)
# 세 그룹 간 평균 차이에 대한 t검정 수행
p_values = []
p_values.append(stats.ttest_ind(group_A, group_B).pvalue)
p_values.append(stats.ttest_ind(group_A, group_C).pvalue)
p_values.append(stats.ttest_ind(group_B, group_C).pvalue)
# 본페로니 보정 적용
alpha = 0.05
adjusted_alpha = alpha / len(p_values)
# 결과 출력
print(f"본페로니 보정된 유의 수준: {adjusted_alpha:.4f}")
for i, p in enumerate(p_values):
if p < adjusted_alpha:
print(f"검정 {i+1}: 유의미한 차이 발견 (p = {p:.4f})")
else:
print(f"검정 {i+1}: 유의미한 차이 없음 (p = {p:.4f})")
카이제곱검정이란?
- 범주형 데이터의 표본 분포가 모집단 분포와 일치하는지 검정(적합도 검정)
- 두 범주형 변수 간의 독립성을 검정(독립성 검정)
적합도 검정
- 관찰된 분포와 기대된 분포가 일치하는지 검정
- p값이 높으면 데이터가 귀무 가설에 잘 맞음. 즉, 관찰된 데이터와 귀무 가설이 적합
- p값이 낮으면 데이터가 귀무 가설에 잘 맞지 않음. 즉, 관찰된 데이터와 귀무 가설이 부적합
독립성 검정
- 두 범주형 변수 간의 독립성을 검정
- p값이 높으면 두 변수 간의 관계가 연관성이 없음 → 독립성이 있음
- p값이 낮으면 두 변수 간의 관계가 연관성이 있음 → 독립성이 없음
실습
- 예1)주사위의 각 면이 동일한 확률로 나오는지 검정(적합도 검정)
- 예2)성별과 직업 만족도 간의 독립성 검정(독립성 검정)
더보기
# 적합도 검정
observed = [20, 30, 25, 25]
expected = [25, 25, 25, 25]
chi2_stat, p_value = stats.chisquare(observed, f_exp=expected)
print(f"적합도 검정 카이제곱 통계량: {chi2_stat}, p-값: {p_value}")
# 독립성 검정
observed = np.array([[10, 10, 20], [20, 20, 40]])
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)
print(f"독립성 검정 카이제곱 통계량: {chi2_stat}, p-값: {p_value}")
# 성별과 흡연 여부 독립성 검정
observed = np.array([[30, 10], [20, 40]])
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)
print(f"독립성 검정 카이제곱 통계량: {chi2_stat}, p-값: {p_value}")
제 1종 오류와 제 2종 오류

제 1종 오류
- 귀무가설이 참인데 기각하는 오류
- 잘못된 긍정을 의미 (아무런 영향이 없는데 영향이 있다고 하는 것)
- 한 단어로 위양성!
- α를 경계로 귀무가설을 기각하기 때문에 제1종 오류가 α만큼 발생
- 따라서 유의수준(α)을 정함으로써 제 1종 오류 제어 가능
- 만약, 유의수준이 0.05라면 100번 중 5번 정도 일어날 수 있는 제 1종 오류는 감수하겠다는 것
제 2종 오류
- 귀무가설이 거짓인데 기각하지 않는 오류.
- 잘못된 부정을 의미 (영향이 있는데 영향이 없다고 하는 것)
- 제 2종 오류가 일어나지 않을 확률은 검정력(1-β)으로 정의.
- 제 2종 오류가 일어날 확률은 β로 정의.
2️⃣Python 알고리즘 주요 문제
문제1
- 문제 설명: 코딩테스트 연습 - 햄버거 만들기 | 프로그래머스 스쿨
- 제한 사항:
- 1 ≤ ingredient의 길이 ≤ 1,000,000
- ingredient의 원소는 1, 2, 3 중 하나의 값이며, 순서대로 빵, 야채, 고기를 의미합니다.
- 입출력 예

- 문제 접근:
- 새로운 배열을 만든다.
- ingredient의 배열을 하나씩 순회하며 추가한다.
- 특정 패턴이 완성되는 조건을 충족하면
- 패턴 구간을 삭제한다.
- 코드
더보기
def solution(ingredient):
array = []
answer = 0
for i in ingredient:
array.append(i)
if array[-4:] == [1,2,3,1]:
del array[-4:]
answer +=1
return answer
💡 느낀점
기초 강의와 라이브 세션 수강을 병행하면서 새롭게 들어오는 내용과 정보가 방대해서 머릿속에서 정리가 잘 안되는 문제를 느꼈다. 해당하는 개념이 어떤 정의를 가지고 어디에 쓰고 어떻게 쓰이는지를 머릿속에서 정리하면서 학습할 예정이다. 또한 실습 문제 위주로 직접 타이핑하며 한 번 더 상기시키면 효율적으로 학습할 수 있을 것 같다.
'데이터 분석 심화' 카테고리의 다른 글
| Chapter.4 데이터 분석 심화(6) (1) | 2026.04.20 |
|---|---|
| Chapter.4 데이터 분석 심화(5) (0) | 2026.04.17 |
| Chapter.4 데이터 분석 심화(4) (0) | 2026.04.16 |
| Chapter.4 데이터 분석 심화(2) (1) | 2026.04.14 |
| Chapter.4 데이터 분석 심화(1) (0) | 2026.04.13 |