사례 case
: 데이터 수집의 단위 ex) 고객, 제품 등변수 variable
: 사례에 따라 달라지는 값 ex) 나이, 가격 등데이터는 표
로 정리한다. 이것은 모두의 약속이다.
행 row
가로
방향 한 줄사례
열 column
세로
방향 한 줄변수
열 | column | 변수 | |
---|---|---|---|
행 | |||
row | |||
사례 |
데이터의 변수는 크게 2개로 나뉜다. 변수의 종류에 따라서 할 수 있는 분석의 종류가 달라지기 때문에 변수의 종류를 파악
하는 게 중요하다.
통계의 종류는 크게 2개로 나눌 수 있다. 통계학의 핵심과 목적은 추론 통계
인데, 일상적으로 쓰이는 통계
는 기술 통계에 가깝다. 그러나 회사에서는 추론 통계를 잘 쓰지 않는다.
기술 통계
descriptive statistics : 기록하고 서술한다는 의미의 기술
, 데이터를 묘사, 설명추론 통계
inferential statistics : 데이터를 바탕으로 추론, 예측합계를 N으로 나눈 것
.mean()
중간에 위치한 값
중위수
라는 표현도 많이 사용 (중위소득, 중위가격 등).median()
가장 많은 사례에서 관찰된 값
가장 많은 것
등의 뜻이 있음.mode()
.value_counts()
q개로 나누는(분) 위치의 값
등수
를 매기는 것!값(0)
으로 만들기 위해 1
을 빼줬다등수-1/N-1
그래서 모든 값은 0
과 1
사이로 표현되게 하는 것사분위수
, 백분위수
가 있다n
tile), 사분위수(quar
tile)생활 팁!
퍼센타일
같은 용어 어려워 하지 말자! 다른 사람들을 설득하기 위해전문성
과멋짐
을 뽐내기 위해서라고 생각하자!보그체
처럼!
평균수익률 = 번 돈/투자한 돈
내가 10 종목에 투자를 하고 10, 10, 10...의 수익률 10%
, 100, -100, 200, -100...의 수익률 10%
은 같지만 다르다는 것을 변산성
으로 알 수 있다! 안정
적인지, 들쭉날쭉
한지 알 수 있기 때문에 변산성
은 중요하다! .max()
- 최소값`.min().quantile(0.75)
- 제1사분위수.quantile(0.25)
상자
로 표현IQR
을 표시중간값
은 상자의 가운데 굵은 선
으로 표시최소값
과 최대값
은 수염(whisker)
으로 표시 - 그리고 최소값과 최대값을 표시하는 데에는 규칙이 있다!IQR
의 1.5배
까지만 표시 - 이를 넘어가는 경우(튀는 값) 점으로 표시1.5배
사이에 있기 때문 값
- 평균
+
, -
) 편차의 평균을 구하면 0
이 된다! (제로섬!!) +
, -
부호를 떼고 평균을 내보자!절대값
을 취한다 - 평균절대편차(MAD) => 잘 사용 안 한다!!!제곱
을 한다수학적으로 중요한 여러 성질이 있음
분산
에 루트
씌운 것 = 분산의 제곱근
)를 많이 사용.var()
.std()
생활팁! 제곱을 하고 다시 루트를 씌우고, 이런 걸 너무 깊게 이해하려고 하기 보다 진리처럼 받아들이는 것도 좋은 방법이다! 모든 것을
이해한다
는 환상을 버리자!
- 표준편차도 계산 과정이 중요한 게 아니라
표준편차를 이용해서 무엇을 하려고 하는지
를 아는 게 중요하다!!- 표준편차는 데이터의 변산성(크고 작은 정도)을 지표로 만들기 위해서!
- 지표마다 보여주는 것이 다르고 지표를 통해 데이터를 파악하는 것
- 지표는 맞고 틀린 게 없다!
정답이 존재한다는 환상도 내려놓기
지금까지는 지표로 데이터를 봤다! 이제는 그래프로 알아보자!
데이터 분석의 목적은
의사결정
이다. 그렇기 때문에 bins의 갯수 같은 것도 정답이 있는 게 아니라의사결정
에 필요한 만큼 - 경험과 감으로 오는 것...
용어
일 뿐이다! 어려워도 외우자!
모
집단 population : 연구의 관심이 되는 집단 전체
표본 sample
: 특정 연구에서 선택된 모집단의 부분 집합
표집 sampling
: 모집단에서 표본을 추출하는 절차, 표본 추출
이라고도 함모수
는 통계에서 아주 중요한 용어!파라미터 parameter
: 어떤 시스템의 특성
을 나타내는 값모수
: 모집단 population의 파라미터, 즉 모집단의 특성을 나타내는 값
통계량
, 통계치
인 것)모집단의 통계량
이라는 표현은 없음(통계량은 표본에서 구한 값
이기 때문!)표본의 모수
같은 말도 없음(모수는 모집단에서 구한 값)추론 통계 inferential statistics
: 표본 통계량을 일반화하여 모집단에 대해 추론 하는 것numpy와 pandas에서의 분산 계산 : https://hooni-playground.com/1422/
동일한 모집단
에서 동일한 크기의 표본
을 동일한 방법
으로 뽑더라도 통계량이 조금씩 다른 것
을 확인할 수 있음표집 분포
: 통계량의 확률 분포표집 분포를 통해 무엇을 확인할 수 있을까? 표본을 뽑을 때 결과가 극단적으로 나올 수 있는데, 어느 정도 극단적으로 나올 수 있는지 그 확률을 알수 있다. 우리 데이터에서
±(뿔마)
어느 정도까지오차가 있을 수 있겠구나 예측
할 수 있다!
즉, 표집 분포를 이론적으로 알고 있으면 역으로 모수를 추론할 수 있다!!!!
표준 오차 standard error
: 표집 분포의 표준 편차np.std(ms)
np.std([1,2,3,4,5,6])/np.sqrt(size)
루트
씌운 n
)으로 줄어들기 때문에 데이터를 4배
늘리면 2배
더 정확2배
더 정확한 데이터를 구하려면, 4000명을 조사해야 한다!통계량은 모수와 조금 다르게 나올 수 있다!
그런데 어느 정도 다르게 나올지 이론적으로 알 수 있다!
그리고 데이터를 많이 모으면 더 정확한 통계량을 얻을 수 있다!
그렇지만 데이터를 무한정 많이 모으기는 어렵다 (비용이 많이 든다)
통계량
으로부터 모수
를 추측하는 절차를 추정
이라고 하며, 추정
은 크게 2가지 방법이 있다.
1) 점 추정 point estimate
: 하나의 수치로 추정
2) 구간 추정 interval estimate
: 구간으로 추정 - 어느 정도만 정확하면 되는 거야!
대표적인 구간 추정 방법
이다.
이름이 신뢰구간
인 하나의 추정 방법임으로, 이것을 100% 신뢰할 수 있다는 것은 아니다
통계량
은 데이터(표본)에서 직접 구한 값 (예를 들어 표본평균)신뢰구간에는 신뢰수준
이라고 하는 속성이 있다.
신뢰수준
이라고 한다95%
, 99% 등을 추천하나 절대적 기준은 없음희박한 확률을 고려하면, 예외적인 케이스를 더 많이 포함하기 때문에 신뢰구간이 넓어질 수밖에 없다
신뢰수준 95% 신뢰구간 (예외 5%는 쳐냄) => 신뢰구간이 좁음
신뢰수준 99% 신뢰구간 (예외 1%는 쳐냄)
- 신뢰수준이 높다는 얘기는 더 정확하다는 얘기가 아니다.
- 신뢰수준이 높다는 데 정보가 적다는 게 이상하게 느껴지지만, 이는 아직 이게 낯설기 때문.
통계적 관점과 논리
에 익숙해져야 한다.- 이것은
시간
이 해결해준다!!!!
신뢰수준
- 통계에서 어떠한 값이 알맞은 추정값이라고 믿을 수 있는 정도이다.
- 보통은 95%의 신뢰수준을 사용한다.
- 예를 들어, ‘정치인 지지율 조사에서 A후보는 40%, B후보는 25%의 지지율을 얻었다. 신뢰수준 95%에서 표본오차는 3.1%포인트이다’란 말의 의미는 다음과 같다. 동일한 형태의 여론조사를 100번 실시했을 경우에 95번은 A후보가 40%에서 ±3.1% 인 36.9% ~ 43.1%, B후보는 25%에서 ±3.1% 인 21.9% ~ 28.1% 사이의 지지율을 얻을 것으로 기대된다는 의미이다.
- 출처 : 통계청 사전식보기 - 신뢰수준
1) 정규분포 t분포 : pingouin 사용
pip install pingouin
import pingouin as pg
pg.ttest(df.price , 0, confidence=0.95)
모집단에 대해 정확하게 알면, 표집 분포를 이론적으로 유도할 수 있다
그러나 모집단에 대해서는 모른다(그걸 알면 통계를 할 필요가 없지...)
우리에게는 표본 밖에 없다
(우리 표본이 모집단이랑 똑같지는 않지만 아주 다르지도 않지! 표집분포는 모집단의 성질로부터 유도되는 것!)
우리 표본을 가지고 > 표본을 뽑는 것을 매우 많이 반복 > 표집 분포와 비슷한 분포를 얻어서 신뢰구간을 계산한다
2) 부트스트래핑 bootstrapping
scipy
의 .bootstrap()
함수 사용중간값
의 신뢰구간을 구할 때 유용하다import scipy
scipy.stats.bootstrap([df.price ], np.median, confidence_level=0.99)
# 중간값의 99% 신뢰구간
생활팁! 데이터 분석을 할 때는
신뢰성
이라는 말은 가능하면 안 쓰는 게 좋다! 일상적으로는 써도 되지만... 데이터 분석에서신뢰성
이라는 말은 없다!!
통계를 배울 때 가장 헷갈리는 것중 하나!
반증주의 철학
에 기반하고 있어 일반적인 과학적 가설 검정(실증주의
)과 다름실증주의
: 내가 하고 싶은 주장을 입증반증주의
: 내가 '까고 싶은' 주장을 깐다!1) 귀무가설을 수립한다
귀무가설
null hypothesis : 기각하고자 하는 가설 (내가 까려고 하는 가설 ㅎㅎ)대립가설
alternative hypothesis : 주장하고자 하는 가설 (귀무가설을 설정하면 대립가설이 등장한다)ttest할 때
0
으로 넣었던 속성이귀무가설
에 해당하는 것!
2) 유의수준을 결정
한다
유의수준
significance level : 100% - 신뢰수준 (예를 들어 신뢰수준이 95%라면 유의수준은 5%다)결정
한 것! (예를 들어 내 마음의 기준인 것! 예를 들어 최소한 이 정도는 되어야 소개팅을 하겠다, 같은 것!)3) p-값을 계산
한다
p-값
: 귀무가설이 참일 때 검정통계량 이상이 나올 확률계산
해서 나온 것4) p값과 유의수준을 비교한다
p > 유의수준
p < 유의수준
통계적으로 유의하다
라고 표현(현실적으로 유의미한 것은 아님)가설 검정 2.8이라는 기각을 시도해보자!
- 성공 -> 기각
- 실패 -> 기각 못함
- 신뢰구간 2.78~2.88 : 2.8일 수도 있지만 2.81도 가능하고 2.82도 가능하고... 단, 3.0은 아니고!
- 그냥
신뢰구간
을 보면 되는데, 100년이나 사용했고 남들이 하니까통계적 가설 검정
도 볼 필요는 있당- 미국 통계 학회도 인정한, 남용하면 안되는
가설검정
1종 오류
라고 한다. (ex: 배 나온 남성에게 임신이라고 하는 것)2종 오류
라고 한다. (ex: 임신한 여성에게 임신이 아니라고 하는 것)실제/가설검정 | 귀무가설 기각 | 귀무가설 기각 못함 |
---|---|---|
귀무가설이 참 | 1종 오류 (False Alarm) | |
귀무가설이 거짓 | 2종 오류 (Miss) |
사실(실제)과 나의 판단(가설 검정)은 다른 것이다!
- 귀무가설 : 평균 = 3.0일 것이다
- (참) 실제로도 3.0 (전수조사를 해야하기 때문에 우리는 평생 할 수 없다!)
- (거짓) 실제로는 3.0이 아님
- 여기에서 우리가 할 수 있는 것은 귀무가설을 기각 하거(p < 0.05)나 기각을 못하는 것(p > 0.05)
- 그런데 실제로 3.0이 맞더라도 기각하는 경우가 있음 : 이를 1종 오류 (예를 들어 재미있는 사람이 맞는데 소개팅 당일 긴장해서 재미있지 않아서 차였다)
- 그런데 실제로 귀무가설이 참일 때 기각할 경우는 5%이다. 우리가 유의수준을 5%로 잡았기 때문!
- 참과 거짓을 알 수 없으나 최악의 판단을 해도 5%라는 것.
우리는 판단(가설 검정)을 할뿐이지 실제로 알 순 없음!!!!
p-value
가 작아짐p-value
가 작아짐데이터를 충분히 많이 모았는지를 판단하는 데에도 사용할 수 있다
통계적으로 유의하다
라고 함현실적 유의미함
은 가치 판단
의 대상예를 들어 어떤 약을 가지고 1000명 임상실험을 했다, 이것의 귀무가설은
효과가 없다
이며 이때 대립 가설은효과가 있다
이다. 이것이 통계적으로 유의미하다(귀무가설을 기각하는 경우)는 것은효과가 없다고 할 정도는 아닐 만큼 시험을 해봤다
정도의 의미이다. 이 약을 먹을까 말까는현실적 유의미함
이다.
신뢰구간
귀무가설
을 먼저 설정하는 것