티스토리 뷰

반응형

평균은 익숙하면서도 낯선 개념이다.

 

평균과 분산

모집단과 표본

 

표본 평균으로 어떻게 모평균을 추정하는가?

중심극한 정리

95% 신뢰구간

 

 

평균을 구할 때는 값들이 평균으로부터 얼마나 벗어나 있는지를 알아야 한다.

그걸 분산이라고 한다.

이탈도(deviation), 즉, 표준편차(Standard Deviation)

 

예측값, 추정값 =  ŷ

분산 = (x- )^2 /n

 

모집단과 표본

전국 고등학생의 평균 키를 조사하려면, 표본조사.

 

전수조사 : 전체 모집단을 조사, 오차 0. 단, 비용, 시간 과다

표본조사 : 많은 수를 무작위로 추출, 오차는 있다. 그러나 적절한 비용과 시간이 들어간다.

 

표본을 가지고 계산을 했으면, 그러면 그 값이 모집단에 대해서 알고 싶었던 값이다.

모 평균을 알고 싶고, 모 분산을 알고 싶기에 표본 평균을 구하고, 표본 분산을 구한다.

이를 모집단에 대한 추정치라고 부른다.

 

모평균 : μ

모분산 : σ^2

표본평균 :

표본분산 : s^2

 

표본평균으로 어떻게 모평균을 추정할 수 있을까?

이 값이 얼마나 믿을만한지 알면 된다.

 

중심극한정리

표본을 무작위로 뽑아 평균을 계산 : x̄

이런 식으로 100번 반복하면 각각의 평균 값 100개를 얻는다.

그런 평균값 100개를 구하면, 그런 평균들의 분포가 정규분포에 가까워진다, N( μ, σ^2/n)

 

평균 표본의 데이터 수가 좀 커야 한다. 적어도 30개 이상.

이 분포(평균들의 분포)의 평균은 모평균( μ)에 근사한다.

 

표본의 크기(n)이 클 수록 정규분포 모양이 중심에 가까워지는(극한이 되는) 좁은 형태가 된다.

 

모집단이 정규분포를 따르지 않더라도, 평균들의 분포가 정규분포에 가까워진다.

 

그러면 100개를 전부 구해야 하나?

아니다.

x̄1, x̄2...값들이 있으면, x̄1은 정규분포로부터 나온 값이다.

즉, x̄1은 정규분포에 속한 값이다.

그렇기에 하나만 뽑아도, 정규분포에 속해 있다고 할 수 있다.

 

표준오차

그렇기에, x̄1은 모평균에 대한 오차가 있고, 추정치이다.

그래서, SE = s/루트(n)이 표준오차이고, 표준 오차를 바탕으로 95% 확률 구간을 구할 수 있다.

(s : 표본 x̄1 의 표준편차, n : 표본 x̄1 의 데이터 건수)

 

95% 신뢰구간의 의미

그래서 x̄1 으로 모평균을 추정할 때, 95% 신뢰구간은 : x̄1  - 1.96*SE ~ x̄1  + 1.96* SE

x̄1 이 중간에 있다고 가정하고 정규분포를 그린 다음에 구간을 찾는데, 이 구간이 사실상 모평균과의 추정 오차이다.

 

오차가 적은 건 1000명보다 10만명.

왜냐하면, SE 값에서 n이 커지기 때문.

그래서 데이터를 많이 늘리면 오차가 줄어든다.

 

즉, 쉬운 설명으로는 신뢰구간 안에 모평균이 포함될 확률이 95%이다.정확한 설명으로는 표본을 100번 정도 뽑으면 95번 정도는 95% 신뢰구간 안에 모평균을 포함한다.

 

이변량 분석(범주를 숫자로)

평일과 휴일에 따라 아이스크림 매출액 차이는 평일로 묶고, 주말로 묶어서 평균을 비교한다.

 

시각화 : 평균 비교 막대 그래프

 

범주가 2개 : 두 평균의 차이를 비교한다.

범주가 2개 이상 : 전체 평균과 각 평균의 차이를 비교한다.

 

대립가설 : 타깃값에 따라 나이의 차이가 있다. 라는 걸 비교

barplot

sns.barplot( x='target', y='age',data=df)

 

사실상 데이터 자체가 표본이다.

그래서 평균을 계산하면, 95% 신뢰구간이 나오는 것이랑 똑같다.

사실상 95% 신뢰구간 그래프이다

 

평균값이 얼마나 믿을만 한가? 신뢰구간이 좁을수록 믿을만 하다.

데이터가 많을 수록, 편차가 적을수록 신뢰구간이 좁아진다.

 

두 평균에 차이가 크고, 신뢰구간은 겹치지 않을 때(작은 바의 범위가 겹치지 않을 때) 대립가설이 맞다고 할 수 있다.

 

위 그래프는 평균의 차이가 크지 않고, 신뢰구간도 많이 겹친다.

그래서 애매하다.

 

 

boxplot도 그리긴 한다.

 

눈으로 보기 애매하면?

 

수치화

t-test, anova(분산 분석)

요일별 판매량을 어떻게 비교하는가?

 

 

t-test

두 그룹간 평균에 차이가 있는가?

그룹 A 평균 - 그룹 B의 평균을 비교한다.

 

범주의 수 2개일 때만 사용한다.

 

t 통계량

두 그룹의 평균 간 차이를 표준오차로 나눈 값(두 평균의 차이로 이해해도 괜찮다)

t통계량의 분포를 계산하면, 데이터가 많을수록 정규분포에 근사한다.

 

t 통계량이 유의한지 검정하려면, t 통계량, p-value를 보면 된다.

통계량은 -2보다 작거나 2보다 커야 하고 p-value가 0.05보다 작으면 차이가 있다는 것이다.

 

두 범주가 사망자와 생존자라면, 사망자들의 나이를 NaN을 빼고 저장하고,

생존자의 나이를 NaN을 빼고 저장해서 p-value를 구한다.

 

 

 

male = titanic.loc[titanic['S']=='m', 'F']
female = titanic.loc[titanic['S']=='f', 'F']
sp.ttest_ind(male,female)
TtestResult(statistic=-5.529140269385719, pvalue=4.2308678700429995e-08, df=889.0)

차이가 있다고 판단할 수 있다.

사실 등분산검정과 정규성 검정을 먼저 해야 한다.

짧은 기간 안에 배워 낼 수가 없다.

 

실무에서는 엄밀하게 분석하는 과제일 수도 있고, 

머신러닝은 전제조건은 생략하는 경우도 많다.

다만 얼마나 믿을만할지 장담할 수는 없다.

anova(분산 분석)

범주가 3개 이상이면 anova를 쓴다.

전체 평균과 각 그룹 평균에 차이가 있는가?

왜 하필 분산인가?

 

결국 비교라는 건, 어떤 기준으로부터의 차이

여러 집단 간에 차이를 비교한다. 기준은 전체 평균

F 통계량 = 집단 간 분산/집단 내 분산 = (전체 평균 - 각 집단 평균) / (각 집단의 평균 - 개별 값)

 

분산은 평균으로부터 얼마나 떨어져 있는지에 대한 값.

만약에 범주별로 A,B,C 집단이 모여있다고 하자.

그렇다면 전체 평균에서 얼마나 떨어져 있는지에 대한 차이(분산)를 비교했을 때 

집단 A,B,C 각각의 분산이 집단 간의 분산보다 작다.

 

즉, 집단 A,B,C 간의 분산이 > 집단 A,B,C 각각의 분산보다 크다(왜냐하면 A,B,C 각각은 모여있으니까).

 

집단 A,B,C분산이 각각의 분산과 같은 경우도 있고,

집단 A,B,C 분산이 오히려 각각의 분산보다 적은 경우도 있다.

 

그래서, 집단 간의 분산을/ 집단 내의 분산으로 나누고,

이를 F 통계량이라고 부른다.

 

집단 간의 분산 = 전체 평균 - 각 집단의 평균

집단 내의 분산 = 각 집단의 평균 - 개별

 

가설

귀무가설 : 객실 등급별 나이는 차이가 없다.

대립가설 : 객실 등급별 나이에는 차이가 있다.

 

문법 : f_onway(A,B,C)의 뜻은, 전체 평균과 A,B,C의 평균은 차이가 있는가? 를 보는 것이다.

 

주의할 점: 분산분석은 전체 평균대비 각 그룹간 차이가 있는 지만 알려준다.

어느 그룹 간에 차이가 있는지는 알 수 없다. 그래서 보통 사후 분석을 진행한다.

p-value가 0에 가까우면 차이가 있는 것이다.

 

분산분석도 그래프 판단은 t-test와 똑같다. 각 집단 사이 값에 거의 차이가 없고, 신뢰구간이 겹치면 H0라는 뜻이다.

 즉, 타겟 예측력이 떨어진다.

 

값이 대략 2~3 이상이면 차이가 있다고 판단.

 

정확하게 하려면 F분포에서 유의수준 만큼의 p-value가 되는 quantile의 F값과 표본에서 계산한 검정통계량과 비교하여 판단합니다.

계산한 검정통계량이 2보다 크냐 작으냐로 판단하는 건 쉽게 설명하신 것 같습니다.

 

 

총 정리

이변량

수치 - 수치 : 얼마나 직선과 똑같은가? 산점도, 상관분석과 상관계수

범주 - 수치 : 평균비교를 해야 한다. 바플롯, t-test,anova

 

귀무가설, 대립가설 일 때 어떤 그래프가 나오는지 이해하고, 그려졌을 때 어떤 그래프인지 알 수 있어야 한다.

대립가설이다 -> 직선이 보인다.

 

바플롯 -> 귀무가설은 아예 똑같고, 신뢰구간이 겹친다. 대립가설일 때 차이가 크고, 신뢰구간이 겹치지 않는다.

 

그래서 가설 검정을 다른 말로 차이 검정이라고 하기도 한다.

 

ad
0.269506781376902, p-value : 4.3776771103027514e-08

popul
상관계수 : 0.0504709844720392, p-value : 0.31398160931904856

price
상관계수 : -0.4449507278465726, p-value : 7.618187011913169e-21

Age
상관계수 : -0.2318154396045765, p-value : 2.7889498393714038e-06

compprice
상관계수 : 0.06407872955062152, p-value : 0.2009398289418404

price_diff
 0.5979217124533921, p-value : 3.877120641788767e-40
 
income
상관계수 : 0.15195097946754424, p-value : 0.0023096704539517904

selve loc
F_onewayResult(statistic=92.22990509910348, pvalue=1.26693609015938e-33)

urban
TtestResult(statistic=-0.30765346670661126, pvalue=0.7585069603942775, df=398.0)

US
TtestResult(statistic=3.589738747802499, pvalue=0.00037233958701471517, df=398.0)

 

강한 : #price_diff, shelveloc

중간 : # price, Income,Age,US(차이는 있으나, 그래프로 보았을 때 애매하다),adver

관계 없음 : #poplation, campprice,urban

 

이 관계정도는 오롯이 p-value로 인해 결정된다.

 

모델링할 때 관계가 없다고 다 삭제하지는 않는다.

나중에 가서 넣으면 또 다르게 작용하는 피처들도 있다.

반응형