통계학이란?

복잡한 세상에서 불확실성은 높아지는데, 올바른 판단을 하기 위해서는 확률에 기반한 사고가 유용하다.

“신이 내린 불확실성의 저주를 푸는 열쇠가 바로 확률”

확률은 데이터와 만나 구체적으로 계산되어야 유용한데 이에 대한 과학적 방법을 연구하는 학문이 통계다.

현실 데이터에서 지식을 얻는 경험주의

100여 년 전 칼 피어슨과 로널드 피셔라는 두 영국인에 의해 정립되기 시작함. 뿌리를 거슬러 올라가면 경험주의 철학자 프란시스 베이컨을 만나게 된다. 경험주의는 감각의 경험을 통해 얻은 증거들에서 나온 지식을 강조하는 이론. 여기서 감각경험은 현실 데이터를 말한다.

경험(데이터) + 이성(논리) 가 중요시 됨. 경험주의의 단점은 회의주의로 빠질 수 있다는 점. 지식을 데이터로부터 얻지만 모든 데이터를 관측할 수 없기에 지식을 확신할 수 없게 됨. 그래서 이를 수리적으로 해결한 것이 통계학.

어떤 지식이 상대적으로 더 확실한가에 대한 합리적 진술
통계학에서는 일단 가설을 부정한다(귀무가설) 이후 이를 확률적으로 강하게 반증하는 경우 처음 가설을 채택하는 논리를 따른다. 즉 통계학은 경험주의 한계를 극복하려는 노력의 반증.

현실 문제를 해결하는 통계학

통계학은 2가지 가정을 한다.
데이터에 대한 가정(논거)
모델에 대한 가정(전제)

논리(통계 방법론)을 이용해 풀어간다. 가장 중요한 것은 질 좋은 데이터. 질 좋은 데이터는 결론이 지칭하고자 하는 집단의 자료를 충분히 대표해야 함. 두번째는 모델의 적절성. 자료가 범주형인지 연속형인지 시계열인지 등등 파악해 모형의 적절성을 결정해야 함.

주어진 데이터를 분석하는 것은 머신러닝이나 통계학으로 해결될 수 있을지 모르겠지만, 필요한 문제를 해결하기 위해 문제를 어떻게 정의하고 데이터를 어떻게 수집할 것인가는 지식산업의 성숙도에 따라 결정된다.

위의 내용은 김재광 교수님의 블로그 글(https://horizon.kias.re.kr/15283/)을 읽고 정리함.

Data driven decision making

가설을 세운다. (통계적으로 검증되지 않는다면 토픽) → 가설을 검증할 적절한 테스트 설계 → 테스트 실행 → 실행 결과를 기반으로 의사 결정.

추리통계 (inferential statistics)
: 30~40명 정도 되는 표본을 대상으로 실험을 한 이후 ‘모집단’이 이 레이아웃을 사용했을 때도 효과가 있는가 검증하는 것.

v = np.random.randint(0, 200, 30) #0부터 100까지 20개 뽑기
pd.DataFrame(v).describe()

Population
Parameter
Statistic
Estimator
Standard Deviation
Standard Error

기술통계
수집한 데이터를 요약 묘사 설명하는 통계 기법.

데이터 집중화 경향(central tendency)
평균(mean), 중앙값(median), sd(standard deviation:평균에서 멀어진 정도)를 계산한 값.

df.describe()
Mean / Median / Mode
Range
Var / SD
Kurtosis
Skewness

2. 분산도(variation)
표준편자(standard deviation), 사분위(quartile)

Sampling
어떤 셈플링을 쓸 것 인가. 데이터에 대한 인사이트가 있어야 가능하다.
(알아두면 면접에서 도움 됨)
simple random sampling (모집단에서 무작위로 추출)
systematic sampling (모집단에서 규칙을 가지고 추출)
stratified random sampling (모집단을 미리 그룹으로 만들고 그룹별로 무작위 추출)
cluster sampling (모집단을 미리 여러 그룹으로 나누고 이후 특정 그룹 무작위 선택)

Hypothesis testing

# 우연성에 따라 다른 결과 (동전 뒤집기/앞 뒤 2개의 결과. size = 몇 번을 던지나)

anotherCoin = np.random.binomial(n = 1, p = 0.5, size = 10)
anotherCoin2 = np.random.binomial(n = 1, p = 0.5, size = 10)
pd.DataFrame(anotherCoin).hist();
pd.DataFrame(anotherCoin2).hist();
profile
Lifelong learner, dreamy data analyst, cat lover and enthusiastic runner :)

0개의 댓글