Statistics

Statistics - Scipy 을 이용해서 표본 통계량 활용해 모수 추정하기

electronicprogrammer 2020. 10. 26. 01:18

데이터 출처 : www.kaggle.com/mustafaali96/weight-height

 

weight-height.csv

weights and heights.

www.kaggle.com

 

github 주소 : github.com/sangHa0411/DataScience/blob/main/Statistics_Part1.ipynb

 

sangHa0411/DataScience

Contribute to sangHa0411/DataScience development by creating an account on GitHub.

github.com

 

저번 포스팅에서는 Scipy 라이브러리를 이용해서 모집단 및 표본에서 통계량을 구해보았습니다.

이제는 이를 활용하여서 표본과 확률 및 통계 이론을 활용해서 모집단의 모수 (평균 값 및 분산) 를 추정해보고자 합니다.

 

추정은 2가지 종류가 있습니다.

점 추정과 구간 추정인데 점 추정은 하나의 값으로 모수의 값을 예측하는 것이고 구간 추정은 신뢰도 값을 기반으로 해서 모수가 이 구간안에 있을 확률이 X % 일 것이다 라고 예측을 하는 것입니다.

 

이제 시작해보겠습니다.

 

먼저 데이터(모집단)을 구해보고 표본을 추출하도록 하곘습니다.

 

위 데이터에서 남성의 몸무게를 추출해서 1변량 데이터를 대상으로 추정을 진행해보곘습니다.

 

데이터를 추출하는 과정은 위 github 주소에 가시면 확인하실 수 있으십니다.

 

먼저 모집단의 통계량을 확인해보겠습니다.

모집단에서 크기가 100인 표본을 추출하고 표본의 통계량을 구해보곘습니다.

 

모집단의 평균을 점 추정하는 것은 결국 표본에서 평균 값을 계산하는 것입니다. 

따라서 위에서 구한 Sample Mean 값을 모집단의 평균 값일 것이다 라고 예측하는 것입니다.

 

그리고 분산 또한 표본에서 분산 값을 구하면 되지만 모집단에서의 분산을 구하는 것과는 다른 식을 이용해서 분산을 구해야 합니다.

그 이유는 표본분산은 표본의 평균을 이용해서 분산을 계산하는 것인데 이 값을 분산을 과소추정하는 경향이 있기 때문입니다.

 

표본 분산의 식은 아래와 같습니다.

 

이 식을 이용해서 분산 값을 구하기 위해서는 아래의 코드와 같이 ddof 인자의 값을 1로 설정하면 됩니다.

print('Point Estimation of Population Variance : %.3f \n' %sp.var(sample_weight , ddof = 1))

 

이로써 표본을 이용해서 모집단의 평균 및 분산을 점 추정하는 방법을 정리하였습니다.

 

이제는 표본을 이용해서 사전에 정한 신뢰도 값을 기반으로 모수를 구간추정하는 방법에 대해서 정리해보겠습니다. 

 

먼저 구간추정을 하기 앞서서 저희는 신뢰계수를 설정해야 합니다. 주로 95% 혹은 99% 값을 사용하는데 저는 95% 신뢰계수를 사용하겠습니다.

 

평균을 구간 추정을 하기 위해서는 t 분포 그리고 분산을 구간 추정하기 위해서는 카이 제곱 분포가 필요합니다.

(t분포 , 카이제곱 분포 , 푸아송 분포 등등 관련해서는 다음에 정리하도록 하겠습니다.)

 

간략하게 정리하자면 t 분포는 모집단분포가 정규분포일 때 t값의 표본분포를 t 분포라고 합니다.

t값의 정의는 아래와 같습니다.

 

t분포의 평균값은 0이고 t분포의 분산은 자유도가 n이라 했을 때 n / (n-2) 와 같이 계산을 합니다.

즉 자유도 (샘플사이즈 - 1) 가 커지면 커질수록 분산은 1에 가까워 표준정규분포에 가까워지고 작으면 작을수록 표준정규분포와 차이가 많이 나게 됩니다.

 

저희는 샘플 사이즈를 아니 이 t분포를 알게되고 t분포에서 모평균을 제외한 값들을 알게 되니 이 값들을 이용해서 모평균의 값을 추정할 수 있게 되는 것입니다.

 

앞서 저희는 표본의 크기를 100으로 설정하였으니 이를 기반으로 자유도 , 표본 평균 , 표본 표준오차등을 구해보겠습니다.

위의 표준오차는 표본 평균을 샘플사이즈의 루트를 씌운 값으로 나눈 값을 의미합니다.

 

구하는 과정은 아래와 같습니다.

즉 모집단의 평균값이 하이라이트 친 하한값과 상한값  사이에 위치할 확률이 95% 될 것이다 라고 구간 추정을 하는 것입니다.

 

이를 Scipy를 이용해서 구현한 코드는 다음과 같습니다.

 

이제 실제 모집단에서의 평균 값을 구해보겠습니다.

 

실제 모집단의 평균값이 앞서 구한 하측값과 상측값 사이에 위치한 것을 확인할 수 있습니다.

 

다음으로 모집단의 분산을 구간추정해보는 과정에 대해서 알아보겠습니다.

 

분산을 추정하기 위해서라면 카이제곱분포를 이용해야합니다.

카이제곱분포는 산포하고 있는 분산을 나타낸 분포입니다. 카이제곱분포를 이용해서 분산을 추정하는 과정은 다음과 같습니다.

이제 이 과정을 Scipy를 이용해서 구현한 코드가 다음과 같습니다.

 

 

이제 이를 값으로 직접 구해보고 실제 모집단의 분산 값과 비교해보겠습니다.

 

모집단의 분산 값이 표본 분산과 카이제곱 분포를 이용한 구간 안에 들어있는 것을 확인할 수 있습니다.

 

참고자료 : www.yes24.com/Product/Goods/28107118

 

제대로 시작하는 기초 통계학

통계의 쓰임을 이해하고, 실제로 활용할 수 있어야 한다. 통계학은 풀이가 목적인 학문이 아니라, 현재 상황에 대한 이해를 목적으로 하는 학문이다. 통계학을 공부할 때는 통계 이론이 실생활

www.yes24.com

참고자료 : www.yes24.com/Product/Goods/85743006

 

파이썬으로 배우는 통계학 교과서

이론이나 수식을 몰라도 파이썬 함수로 이해하는 통계학 데이터 분석에 관심이 높아지면서 통계학이 주목받고 있다. 이 책은 데이터 분석 관점에서 통계학을 설명한다. 어려운 통계학 개념을

www.yes24.com