티스토리 뷰

SQL 코드카타

Q154. Japan Population

1. 문제 링크: https://www.hackerrank.com/challenges/japan-population/problem

2. 정답 코드:

SELECT SUM(POPULATION)
FROM CITY
WHERE COUNTRYCODE = 'JPN';

 

Q135. Weather Observation Station 3

1. 문제 링크: https://www.hackerrank.com/challenges/weather-observation-station-3/problem

2. 정답 코드:

SELECT DISTINCT CITY
FROM STATION
WHERE ID % 2 = 0;

 

Q137. Weather Observation Station 5

1. 문제 링크: https://www.hackerrank.com/challenges/weather-observation-station-5/problem

2. 정답 코드:

SELECT
    CITY,
    LENGTH(CITY) as length
FROM STATION
ORDER BY length DESC, CITY ASC
LIMIT 1
)
UNION
(
SELECT
    CITY,
    LENGTH(CITY) as length
FROM STATION
ORDER BY length ASC, CITY ASC
LIMIT 1
)

Python 코드카타 (https://github.com/heeso0908/codekata.git)

Q46. 숫자 문자열과 영단어

1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/81301

2. 정답 코드:

def solution(s):
    num = {'zero':0, 'one':1, 'two':2, 'three':3, 'four':4, 'five':5, 'six':6, 'seven':7, 'eight':8, 'nine':9}
    
    for key, value in num.items():
        s = s.replace(key, str(value))
    return int(s)
이 문제에서는 숫자+영단어의 맵핑 정보를 담은 num 이라는 딕셔너리를 생성한 후 replace 메서드를 이용해서 바꿔주는 코드가 필요하다.
딕셔너리에서 for 문과 .items() 메서드를 사용해 key 값과 value 값을 언패킹하여 가져온다.
처음에는 num 딕셔너리를 생성할 때, {0:'zero', 1:'one', ...} 이런 순서로 작성했지만 문제에서는 알파벳을 숫자로 변환해야 하므로 그 순서를 반대로 해주면 더 효율적인 코드를 작성할 수 있다.

 


라이브 세션) 통계 실습 3일차: 확률 기초와 확률 분포 & 추정과 가설검정

1) 중심극한정리 (Central Limit Theorem) 

 

표본 크기가 충분히 크면, 표본평균의 분포는 정규분포에 가까워진다 

 

모집단이 어떤 분포든 상관없이 성립한다.

 

예를 들어, 주사위 눈의 분포는 균등 분포(정규분포가 아님)이지만

주사위를 30번 던져서 평균을 구하는 실험을 수천 번 반복하면

그 평균들의 분포는 정규분포 모양이 된다.

이것이 통계학에서 정규분포가 그토록 중요한 이유이다.


보통 n이 30 이상이면 정규 분포에 근사?


P(X ≥ x) : x 이상일 확률

- 연속형: P(X ≥ x) = P(X > x) → dist.sf(x)  (한 점의 확률 = 0이므로 초과와 같음)

- 이산형: P(X ≥ k) = P(X > k-1) → dist.sf(k - 1)  (또는 1 - dist.cdf(k - 1))


통계량 Statistic 표본에서 계산한 값 — 표본마다 달라짐

대표 예시: 표본평균의 표본분포


성질 수식 의미
기대값 E[Xˉ]=μ 표본평균의 평균은 모평균과 같다 (불편성)
분산 Var(Xˉ)=σ2n n이 커질수록 분산 감소 → 더 정밀한 추정
표준오차(SE) SE=σn 표본평균들의 표준편차 (추정의 정밀도)

 


모집단이 어떤 분포든 상관없이, 표본크기 n이 충분히 크면 (보통 n ≥ 30), 표본평균 Xˉ의 분포는 정규분포에 가까워짐

표본 크기가 충분히 클 때 만족
표본 크기가 충분히 클 때 만족


CLT에 대한 흔한 오해

오해 진실
"개별 데이터가 정규분포를 따른다" 개별 데이터는 그대로이며, 평균의 분포만 정규분포가 된다
"많이 반복하면 정규분포가 된다" 표본 크기(n) 가 클수록 정규분포에 가까워지며, 반복 횟수는 분포 모양과 무관
"모든 통계량이 정규분포를 따른다" 평균(또는 합계) 에만 적용됨. 중앙값, 최댓값 등은 해당되지 않는다
"n ≥ 30이면 무조건 충분하다" 30은 경험적 기준일 뿐, 모집단의 원래 분포에 따라 다르다

표준오차의 의미를 직관적으로 이해하기

모집단 → 표본1(n=100) → 평균1
        → 표본2(n=100) → 평균2
        → 표본3(n=100) → 평균3
        → ... 무한반복 ...
이 평균들(평균1, 평균2, ...)의 표준편차 = 표준오차

하지만 실제로는 표본을 한 번만 뽑으므로, 분산의 성질에서 유도된 공식 SE = σ / √n 을 사용한다.

(σ를 모르면 s로 대체: SE = s / √n)


모평균의 신뢰구간

조건 공식 사용 상황
σ를 아는 경우 Xˉ±zα/2⋅σn 거의 없음 (이론적)
σ를 모르는 경우 Xˉ±tα/2,n−1⋅sn 실무에서 대부분 이 경우

오차한계 = (임계값) × (표준오차) 라는 구조를 기억!


신뢰수준과 구간 너비의 관계

신뢰수준 z 임계값 구간 너비 특징 (n이 고정일 때를 가정)
90% 1.645 좁음 덜 확신하지만 정밀한 추정
95% 1.960 보통 가장 널리 사용 (기본값)
99% 2.576 넓음 매우 확신하지만 추정이 넓어짐

Trade-off 관계 :
신뢰수준을 높이면 → 구간이 넓어지고 → 정밀도가 떨어진다
반대로 신뢰수준을 낮추면 → 구간이 좁아지지만 → 틀릴 가능성이 높아진다

n 크기를 키우면 구간도 좁히고 틀릴 가능성도 낮출 수 있음


추정이 목적일 때 표본크기 결정

"오차한계를 특정 값 이하로 하려면 표본이 얼마나 필요한가?"

변수 의미 예시
n 필요한 표본크기 구하려는 값
z 신뢰수준에 해당하는 z값 95% → 1.96, 99% → 2.576
σ 모표준편차 (사전 추정치) 예비조사 또는 선행연구에서 추정
E 원하는 오차한계 예) ±3%p, ±0.5cm

간접 증명 방식 (반증의 논리)

대립가설을 직접 증명하는 것은 불가능 (표본 기반 추론의 한계)

따라서 반증의 논리를 사용한다:

"귀무가설이 참이라면 이런 극단적 결과가 나올 확률이 매우 낮다
→ 귀무가설 기각 → 대립가설 지지"

한계: 귀무가설 기각 → 대립가설을 "지지"할 뿐, "확실한 증명"이 아니다. 5% 유의수준 = 20번 중 1번은 틀릴 가능성이 있다.


귀무/대립가설을 반대로 설정할 수 있을까?

일반 검정은 "있음"을 증명하는 구조이므로, 반대로 증명할 수 없다.

✅ 올바른 설정:

H₀: 신약 효과 = 0 (효과 없음)
H₁: 신약 효과 ≠ 0 (효과 있음)

❌ 잘못된 설정:

H₀: 신약 효과 있음
H₁: 신약 효과 없음

"효과 없음"을 증명하고 싶다면? → 동등성 검정(Equivalence Test)이라는 특수 검정을 사용해야 함
(예: 제네릭 의약품이 오리지널과 동등함을 증명할 때)


2) p-value와 유의수준

p-value란?

p-value = 귀무가설이 참이라고 가정했을 때, 현재 관찰한 결과보다 같거나 더 극단적인 결과가 나올 확률

쉽게 말하면: "H₀가 맞다면, 이런 결과가 나올 확률이 얼마나 되나?"

 

p-value 계산 과정

  1. H₀ 하에서 검정통계량의 분포를 정한다
  2. 표본 데이터로 검정통계량을 계산 (예: z = (x̄ - μ₀) / (σ/√n))
  3. 검정 방향에 따라 꼬리 확률을 구한다
검정 방향 대립 가설 p-value 계산 scipy 코드
양측검정 H₁: μ ≠ μ₀ 양쪽 꼬리 합 2 * stats.norm.sf(abs(z))
우측검정 H₁: μ > μ₀ 오른쪽 꼬리 stats.norm.sf(z)
좌측검정 H₁: μ < μ₀ 왼쪽 꼬리 stats.norm.cdf(z)

 

유의수준 (α)

유의수준 α = "H₀를 잘못 기각할 위험을 이 정도까지 감수하겠다"는 사전 기준

보통 α = 0.05 (5%)를 사용

 

판정 규칙

p-value 결과 판정 해석
p ≤ α H₀ 기각 "이 결과가 우연이라고 보기 어렵습니다" → 통계적으로 유의
p > α H₀ 기각 실패 "이 결과가 우연일 수 있다" → 판단 보류

"기각 실패" ≠ "H₀가 참" — 증거가 부족해서 판단을 보류한 것일 뿐, H₀가 맞다고 증명된 것은 아님


📊 통계 분석 핵심 공식 및 판정 가이드

1) 신뢰구간 (Confidence Interval)

모평균이 존재할 것으로 기대되는 범위를 추정

구분 조건 공식
모표준편차(σ)를 알 때 정규분포(z) 사용 평균 ± z(α/2) * (σ / √n)
모표준편차(σ)를 모를 때 t-분포 사용 평균 ± t(α/2, n-1) * (s / √n)
표본 크기 결정 허용 오차($E$) 기준 n = [ (z(α/2) * σ) / 허용오차E ]²

2) 검정통계량 (Test Statistics)

가설의 유의성을 판단하기 위해 계산하는 값입니다.

검정 종류 사용 상황 공식
z-검정 $\sigma$를 알고 표본이 클 때 z = (표본평균 - 모평균) / (표준편차 / √n)
단일표본 t-검정 한 집단의 평균 vs 특정 값 t = (표본평균 - 모평균) / (표본표준편차 / √n)
독립표본 t-검정 서로 다른 두 집단의 평균 비교 t = (평균1 - 평균2) / √[ (표준편차1²/n1) + (표준편차2²/n2) ]
대응표본 t-검정 동일 집단의 전/후 비교 t = 차이평균 / (차이표준편차 / √n)
Cohen's d 효과 크기(Effect Size) 측정 d = |평균1 - 평균2| / 통합표준편차

3) Python 실전 함수 (scipy.stats)

데이터 분석 시 실제로 호출하는 핵심 메서드입니다.

함수명 용도 주요 파라미터 및 팁
stats.t.interval() 신뢰구간 계산 confidence, df, loc(평균), scale(표준오차)
stats.t.ppf() 임계값(Critical Value) 누적확률과 자유도를 넣어 t-값 산출
stats.ttest_1samp() 단일표본 검정 popmean: 비교하고자 하는 기준 평균값
stats.ttest_ind() 독립표본 검정 equal_var=False: 등분산성이 깨질 때(Welch's)
stats.ttest_rel() 대응표본 검정 두 데이터의 길이가 같아야 함
stats.sem() 표준오차(SEM) $\frac{s}{\sqrt{n}}$ 값을 즉시 계산

4) 가설검정 판정 규칙

p-value를 보고 결론을 내리는 최종 단계입니다.

결과 (p-value) 결정 (Decision) 통계적 의미 실무적 해석
p ≤ α 귀무가설(H0) 기각 유의미한 차이 있음 "우연히 일어날 확률이 매우 희박합니다."
p > α 귀무가설(H0) 채택 안 함 유의미한 차이 없음 "차이가 있다고 말할 증거가 부족합니다."

라이브 세션) 통계 이론 4일차: 가설검정

1) 가설검정 기초

  • σ를 알면, 정규 분포 → ± 1.96
  • σ를 모르면, 표본 s 사용 → t 분포

  •  

 

2) 가설검정 심화

 

정규성을 보는 시각화 : QQ Plot

정규성을 확인? : shapiro

비모수 검정 ↓

 

- 3개 이상 평균 비교 : 분산분석(ANOVA)

F 값 = 집단 간 분산 / 집단 내 분산

 

F 값이 클 수록 집단 간 차이가 크다!

F 값이 작고 1에 가까울 수록 변동이 큰 것

→ 녹색: 기각역 넘어서 귀무가설 기각, 노랑색: 기각역을 넘지 못해 귀무가설 기각 못함

  • 사후검정

Tukey와 Bonferroni 특징 기억


- 비율·범주형 : 평균 대신 확률을 비교

 

 

- 가정 점검 : 정규성·등분산성·독립성

정규성을 보려면 Q-Q Plot과 Shapiro-Wilk 를 보자!

 


오늘은 가설검정에 대해 자세히 배웠는데, 심화 단계로 들어가면서 이해가 잘 되지 않는 부분이 많아졌다.
복습을 하려고 했지만 라이브 세션이 늦게 끝나 충분히 정리하지 못한 점이 아쉽다.
VOD 강의와 통계 101 서적을 활용해 가설검정 개념을 조금 더 쉽게 정리한 뒤, 라이브 세션 내용을 다시 봐야 할 것 같다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함