👩🏻💻 Point of Today I LEARNED
📌 SQL
● 코드카타 (group_concat)
📌 Python
● 코드카타
● 통계 라이브 세션 1회차 복습 (정규분포, 표준정규분포)
● 통계학 기초 강의 3주차까지 (가설검증의 단계와 종류)
내가 통계를 공부할 줄이야..
어느 정도 이해하고 빨리 진도를 나가는 것보다는
늦더라도 90% 정도는 개념 이해하고 넘어가는 게
내 공부 방식에 더 맞는 거 같아서
라이브세션, 녹강, 유튜브, 구글링 .. 등등 여러 방면에서 도움을 받으면서
각 개념(특히 표준화/표준정규분포, 다양한 가설검증방식)에 대해 이해하려고 노력했다.
라이브세션, 녹강 시간은 2시간도 안 되는데
공부 시간은 12시간이 된 마법같은 하루 ^_^

1. SQL
1-1. 코드카타 제한시간 두고 풀기
1) 코드카타 124번
group_concat(distinct 컬럼명 order by ' ' separator ' ' )
- 그룹핑 후 같은 그룹인 애들끼리 합쳐주는 함수
- distinct → order by → separator
- 기본적으로 ',(콤마)'로 연결되고, separator 파라미터로 변경 가능
2) 1~10번 복습
많이 푸는 것보다 지금까지 푼 것들을 내가 잘 이해하고 숙지하고 있는지 확인하는 타이밍인 것 같아서 처음부터 다시 시작해보았다.
10번까지는 문제 없 었 음 ! (10번까지 문제 있었으면 문제있음)
2. Python
2-1. 코드카타
1) 20번 정수 내림차순 배치하기
https://school.programmers.co.kr/learn/courses/30/lessons/12933/solution_groups?language=python3
방법1. (처음 푼 코드) 반복문
def solution(n):
n_list = []
for i in str(n): #n을 문자형으로 변환해서 반복
n_list.append(i) #n의 문자 하나하나 리스트에 담고
n_list.sort(reverse=True) #내림차순으로 재배치하고
new = int(''.join(n_list)) #모든 값 합치고 숫자형으로 변환
return new
풀긴 풀었으나 . . .
이렇게 하면 모든 단계를 매 반복마다 거치기 때문에 매우 비효율적인 코드이다.
좀더 효율적으로 바꿔보자.
방법2. 각 자릿수를 한 번에 문자형 리스트에 넣어줌
def solution(n):
n_list = list(str(n)) #문자형으로 바꾸고 리스트화
n_list.sort(reverse=True) #내림차순
n_list = int(''.join(n_list)) #합치고 숫자형으로 변환
return n_list
방법3. 더 간결한 ver.
def solution(n):
return int(''.join(sorted(str(n), reverse=True)))
# sorted(str(n)) ➜ 문자열 n을 리스트로 변환 후 정렬
# sorted(str(n), reverse=True) ➜ 내림차순 정렬
# ''.join(sorted(str(n), reverse=True)) ➜ 리스트를 문자열로 변환
- sorted 함수는 그 자체로 새로운 리스트를 만들어주기 때문에 굳이 list() 안 걸어줘도 됨.
2-2. 통계 라이브세션 1회차 복습

어제 썼던 게시글에 추가해두었다.
표준화란 무엇이고,
왜 해야하며,
어떻게 해야 하는지
이해했다.
이해가 잘 안 가서 구글링, 유튜브까지 찾아다님 . .
정승제 생선님 강의부터 다른 고등수학 강의까지 들었음 ^ㅠ^ ..
2-3. 통계학 기초 강의 2주차~3주차
1) 핵심 개념
✅ 가설 검증 단계
1. 귀무가설(H0)과 대립가설(H1) 설정
2. 유의수준(α) 결정
3. t값 (검정통계량) 계산
4. p-값과 유의수준 비교
5. 결론 도출
t 검정
- 모집단의 표준편차를 알 수 없을 때 검증하는 방법 (t검정)
- 모집단의 표준편차를 알면? → 표준정규분포로 검증하면 됨. (z검정)
- 단일표본 t검정 : 표본의 표준편차를 통해 모집단의 평균을 추정(표본과 모집단이 얼마나 차이가 있는지를 검증)
- 독립표본 t검정 : 두 표본집단 간의 평균 차이가 우연인지, 모집단에서도 실제로 유사한 차이가 있는지를 검정
- 대응표본 t검정 : 동일한 집단의 특정 사건 전/후의 평균을 비교
A/B 검정
- 두 그룹 (A/B) 중 어느 것이 더 효과적인지 평가
- 즉, 독립표본 t검정을 활용하는 것!
- t-통계량, p-value을 확인하고 이를 통해 통계적 유의미성을 판단한다.
- t-통계량
- 두 그룹 간 평균의 차이가 '얼마나' 큰지, '어떻게' 큰지를 확인
- t값 > 0 : A그룹의 평균이 B그룹의 평균보다 크다.
- t값 < 0 : A그룹의 평균이 B그룹의 평균보다 작다.
- |t값| 이 크면 두 그룹 간 차이가 크다. but, p-value를 통해 이 차이가 우연인지 아닌지 판단해야 함.
- |t값| 이 작으면 두 그룹 간 차이가 작다.
- 두 그룹 간 평균의 차이가 '얼마나' 큰지, '어떻게' 큰지를 확인
- p-value(유의확률)
- 위의 t값이 '우연히' 나올 확률
- 즉, 귀무가설이 참일 때 t값(혹은 극단값)이 나올 확률
- 통계적 유의미성을 가르는 기준이 됨.
- 보통 0.05 유의수준(α)보다 낮으면 통계적으로 유의미하다고 본다. 즉, 귀무 가설을 기각한다.
- 예시
- 귀무가설 : 'A와 B의 평균이 같다.' / 대립가설 : 'A와 B의 평균이 다르다.'
- t=2.5, p-value=0.02
- 의미: 귀무가설이 참이라면 t값이 2.5로 나올 확률은 2%밖에 되지 않는다.
- (= A와 B의 평균이 같을 확률은 희박하다.)
- (= A와 B의 평균 차이가 우연이 아닐 가능성이 더 높다.)
- (= 귀무가설은 거짓이다.)
- 결론 : 보통의 유의수준 0.05와 비교해서 p-value가 작기 때문에 두 집단의 차이는 통계적으로 유의미하다.
- (= 귀무가설을 기각한다.)
- t-통계량
t_stat, p_val = stats.ttest_ind(집단 a, 집단 b)
: 독립표본 t검정을 통해 t값, p-value를 반환
다중 검정
- 여러 가설을 동시에 검정하는 방법
- 제 1종 오류 발생 확률 증가하는 문제 발생 !
- 제 1종 오류 : 귀무가설이 참인데 기각함
- 제 2종 오류 : 귀무가설이 거짓인데 기각하지 않음
- 해결 방법 : 유의 수준 조정해서 제1종 오류가 유의수준 이하로 유지되도록 설계
- 본페로니 보정(기본), 튜키 보정, 던넷 보정, 윌리엄스 보정 등....
- 본페로니 보정 : 유의수준 / 가설 개수
- 유의 : 유의 수준을 과도하게 조정하면 제 2종 오류 발생 가능성이 높아짐.
카이제곱검정
- 모든 변수가 범주형 데이터일 때 사용하는 검증방법 (성별, 나이, 흡연 여부, 선호 브랜드 등)
- 나이와 흡연 여부가 관련이 있는가?
- 성별에 따라 선호 브랜드가 다른가?
- 적합성 검정 : 표본의 분포가 모집단의 분포와 얼마나 일치하는지 확인
- p값 높으면 표본과 모집단의 분포가 비슷하다. (귀무가설 참)
- p값 낮으면 표본과 모집단의 분포가 다르다. (귀무가설 거짓)
- 독립성 검정 : 두 변수가 얼마나 연관성이 있는지 확인
- p값 높으면 두 변수는 서로 독립적이다. (귀무가설 참)
- p값 낮으면 두 변수는 서로 연관이 있다. 유의미하다. (귀무가설 거짓)
chi2_stat, p_value = stats.chisquare()
: 카이제곱 적합성 검정을 통해 카이제곱 통계량(chi2), p-value를 반환
chi2_stat, p_value, dof, expected = stats.chi2_contingency()
: 카이제곱 독립성 검정을 통해 카이제곱 통계량(chi2), p-value, 자유도(dof), 기대 빈도(expected)를 반환
✅ t검정, 카이제곱검정의 차이
t검정 : 연속형 숫자 데이터 (평균 비교)
카이제곱검정 : 범주형 이산 데이터 (비율 비교)
단일표본 t검정 & 카이제곱검정(적합성 검정) : 표본과 모집단의 차이를 비교
독립표본 t검정 & 카이제곱검정(독립성 검정) : 두 집단/두 변수간 비교
'데이터 분석' 카테고리의 다른 글
| [day48] 분명 금요일인데 기쁘지가 않어. 주말이 없기 때문이야. (0) | 2025.04.04 |
|---|---|
| [day47] 하루가 너무 빨리 지나간다. 할 게 무진장 많기 때문이다. (0) | 2025.04.03 |
| [day45] 막상 가보면 아무 것도 아닌 게 너무 많다. (0) | 2025.04.01 |
| [day44] NEW ! 새로운 시작 (0) | 2025.03.31 |
| [day41] [데이터 분석 + 시각화 실습] 기초 프로젝트 끝 ! (0) | 2025.03.28 |