표본분포
우선 표본 조사의 필요성과 표본 추출 방법에 대해서 배워보자.
통계적 추론
표본조사를 통해 모집단에 대한 해석을 진행
전수조사는 실질적으로 불가능한 경우가 많음
표본조사 는 반드시 오차가 발생!
따라서 적절한 표본 추출 방법 필요
👉표본과 모집단과의 관게를 이해해야 함!
📌표본 추출 방법
표본분포
표본 평균의 분포
모수 (parameter) : 표본조사를 통해 파악하고자 하는 정보
모수의 종류
모평균, 모분산, 모비율 등
모수를 추정하기 위해 표본을 선택하여 표본 평균이나 표본 분산 등을 계산
통계량 (statistic) : 표본 평균이나 표본 분산과 같은 표본의 특성값
예시) 50만명의 전국 고등학교 1학년 학생의 키를 조사하기 위해 1000명을 표본 조사한다.
표본의 평균을 계산
표본의 평균은 표본의 선택에 따라 달라질 수 있음
👉 따라서 표본평균은 확률변수 이다!
(표본 평균이 가질 수 있는 값도 하나의 확률분포를 가지며,
이 분포가 무엇인지가 표본을 해석하는데 있어서 매우 중요!)
표본분포 (sampling distribution) : 통계량의 확률분포
표본평균 : 모평균을 알아내는데 쓰이는 통계량
표본평균의 분포
x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x 1 , x 2 , . . . , x n
평균: μ \mu μ , 분산: σ 2 \sigma^2 σ 2 인 정규모집단 에서 추출된 표본의 측정값
표본평균
x ˉ = 1 n ∑ i = 1 n x i \bar x = \frac{1}{n}\sum^n_{i=1}x_i x ˉ = n 1 ∑ i = 1 n x i
X ˉ ~ N ( μ , σ 2 n ) \bar X \text{\textasciitilde} N \Large\begin{pmatrix}\mu, \frac{\sigma^2}{n}\end{pmatrix} X ˉ ~ N ( μ , n σ 2 )
📌
표본평균 X ˉ \bar X X ˉ 는 정규분포를 따른다.
평균이 모집단에서의 평균(모평균)과 같다.
n n n 의 크기가 커질수록 분산이 작아진다. (X ˉ \bar X X ˉ 가 평균에 가까워지는 값을 가지게 됨)
예시 # 1
μ = 0 , σ = 1 \mu = 0, \sigma = 1 μ = 0 , σ = 1
n = 10 n = 10 n = 1 0
V a r ( X ˉ ) = σ 2 n = 1 10 Var(\bar X) = {\Large\frac{\sigma ^2}{n}} = \Large{\frac{1}{10}} V a r ( X ˉ ) = n σ 2 = 1 0 1
import numpy as np
xbars = [ np. mean( np. random. normal( size= 10 ) ) for i in range ( 10000 ) ]
print ( "mean %f, var %f" % ( np. mean( xbars) , np. var( xbars) ) )
예시 # 2
μ = 10 , σ = 3 \mu = 10, \sigma = 3 μ = 1 0 , σ = 3
n = 10 n = 10 n = 1 0
loc : μ \mu μ , scale : σ \sigma σ
import numpy as np
import matplotlib. pyplot as plt
xbars = [ np. mean( np. random. normal( loc= 10 , scale= 3 , size= 10 ) ) for i in range ( 10000 ) ]
print ( "mean %f, var %f" % ( np. mean( xbars) , np. var( xbars) ) )
h = plt. hist( xbars, range = ( 5 , 15 ) , bins= 30 )
plt. show( )
![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F5cd6b396-f2de-446a-93de-272a5b44ce97%2FFigure_1.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F5cd6b396-f2de-446a-93de-272a5b44ce97%2FFigure_1.png )
모집단이 정규분포를 따르지 않는 경우가 있다.
그런 경우에는 평균 계산을 하면 어떻게 할까?
👇
중심극한정리
중심극한정리(central limit theorem)
x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x 1 , x 2 , . . . , x n
평균: μ \mu μ , 분산: σ 2 \sigma^2 σ 2 인 정규모집단 에서 추출된 표본의 측정값
표본평균
x ˉ = 1 n ∑ i = 1 n x i \bar x = \frac{1}{n}\sum^n_{i=1}x_i x ˉ = n 1 ∑ i = 1 n x i
n n n 이 충분히 큰 경우 (n ≥ 30 n ≥ 30 n ≥ 3 0 ), 근사적 으로 다음과 같음.
X ˉ ~ N ( μ , σ 2 n ) \bar X \text{\textasciitilde} N \Large\begin{pmatrix}\mu, \frac{\sigma^2}{n}\end{pmatrix} X ˉ ~ N ( μ , n σ 2 )
예시 # 1 균일분포
균일분포((uniform distibution) = 연속형 확률분포)에서는
기대값(평균) E ( X ) = 5 E(X) = 5 E ( X ) = 5
분산 V a r ( X ) = ( 10 − 0 ) 2 12 = 8.3 Var(X) = \frac{(10-0)^2}{12} = 8.3 V a r ( X ) = 1 2 ( 1 0 − 0 ) 2 = 8 . 3
import numpy as np
import matplotlib. pyplot as plt
n = 3
xbars = [ np. mean( np. random. rand( n) * 10 ) for i in range ( 10000 ) ]
print ( "mean %f, var %f" % ( np. mean( xbars) , np. var( xbars) ) )
plt. hist( xbars, range = ( 0 , 10 ) , bins= 100 )
plt. show( )
👉 n n n 이 커질수록 정규분포에 가까워짐
예시 # 2 지수분포
지수분포(exponential distribution)에서는
λ = 1 3 \lambda = \frac{1}{3} λ = 3 1
기대값(평균) E ( X ) = 1 λ = 3 E(X) = \frac{1}{\lambda} = 3 E ( X ) = λ 1 = 3
분산 V a r ( X ) = 1 λ 2 = 9 Var(X) = \frac{1}{\lambda^2} = 9 V a r ( X ) = λ 2 1 = 9
import numpy as np
import matplotlib. pyplot as plt
n = 2
xbars = [ np. mean( np. random. exponential( scale= 3 , size= n) ) for i in range ( 10000 ) ]
print ( "mean %f, var %f" % ( np. mean( xbars) , np. var( xbars) ) )
plt. hist( xbars, range = ( 0 , 10 ) , bins= 100 )
plt. show( )
👉 n n n 이 커질수록 정규분포에 가까워짐
🔥
여러가지의 표본분포 중 표본평균의 분포 만 살펴보았다.
표본평균에서 표본을 어떻게 추출하냐에 따라서 값이 달라진다. → 확률변수
표본평균의 분포는 정규분포를 따른다.
모집단이 정규분포일 경우에는 n n n 의 크기에 상관없이 정규분포를 따른다.
모집단이 정규분포가 아닐 경우 n n n 이 30 30 3 0 이상이면
중심극한정리 에 따라서 정규분포를 따르게 된다.
추정
모평균(모집단에서의 평균)의 추정
모비율(모집단에서의 비율)의 추정
모평균의 추정
📌 표본평균의 특성
모집단이 정규분포인 경우
표본평균(sample mean) 사용
X ˉ = X 1 + X 2 + ⋯ + X n n = ∑ i = 1 n x i n \bar X = {\Large\frac{X_1+X_2+\cdots+X_n}{n}}={\Large\frac{\sum^n_{i=1}x_i}{n}} X ˉ = n X 1 + X 2 + ⋯ + X n = n ∑ i = 1 n x i
X ˉ \bar X X ˉ 는 모평균 μ \mu μ 의 추정에 사용되는 통계량
대표본(30이상)인 경우
중심극한정리에 의해 표본평균이 정규분포를 따른다고 가정함
점추정
표본평균이 점 추정값(추정량) 이 됨
import numpy as np
samples = [ 9 , 4 , 0 , 8 , 1 , 3 , 7 , 8 , 4 , 2 ]
print ( np. mean( samples) )
👉 단순히 평균을 구하여 모평균을 추정함
( 정확하게 모평균이 되는 것은 아니지만, 10개라는 제한적인 정보에서는 확률이 가장 높은 추정값이다 )
💡
점추정만으로는 모평균이라고 추정하기에는 확실하지 않다.
따라서 구간추정을 이용!
구간추정
모평균의 구간을 추정
모평균 μ \mu μ 의 100 ( 1 − α ) % 100(1-\alpha)\% 1 0 0 ( 1 − α ) % 신뢰구간 (confidence interval)
(μ \mu μ 의 추정량) ± z a 2 \pm z_{\frac{a}2} ± z 2 a (추정량(표본평균)의 표준편차)
![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F9d20d52c-de8c-4a36-89e5-f9572de01026%2F%EA%B7%B8%EB%A6%BC1.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F9d20d52c-de8c-4a36-89e5-f9572de01026%2F%EA%B7%B8%EB%A6%BC1.png )
표본평균을 이용하여 구간을 제시하고, 그 구간을 신뢰구간이라고 함.
(95%의 신뢰구간이라고 하면, 100번정도 실행했을 때 95번은 구간안에 들어갈 것이라고 보장함을 뜻함.)
정규분포에서 표준편차 σ \sigma σ 를 알 때,
( x ˉ − z a 2 σ a , x ˉ + z a 2 σ a ) \Large\begin{pmatrix}\bar x - z_{\frac{a}2}\frac{\sigma}{\sqrt a},\hspace{1em} \bar x + z_{\frac{a}2}\frac{\sigma}{\sqrt a} \end{pmatrix} ( x ˉ − z 2 a a σ , x ˉ + z 2 a a σ )
👉 구간안에 모평균이 존재할 것이라고 추정함
🔥
but, 실용적이지 못함 → 보통은 정규분포가 아니거나 표준편차가 알려져 있지 않음.
표본의 크기가 클 때 중심극한정리 사용
(μ \mu μ 의 추정량) ± z a / 2 \pm z_{a/2} ± z a / 2 (추정량(표본평균)의 표준편차)
( x ˉ − z a 2 s a , x ˉ + z a 2 s a ) \Large\begin{pmatrix}\bar x - z_{\frac{a}{2}}\frac{s}{\sqrt a},\hspace{1em} \bar x + z_{\frac{a}2}\frac{s}{\sqrt a} \end{pmatrix} ( x ˉ − z 2 a a s , x ˉ + z 2 a a s )
*s : 표본표준편차
예시 # 1
어떤 학교의 고1 남학생의 평균키를 추정하기 위해 36명을 표본으로 추출하여
그 표본평균과 표본표준편차를 계산하여 그 결과가 다음과 같다.
x ˉ = 173.6 , s = 3.6 \bar x = 173.6, s = 3.6 x ˉ = 1 7 3 . 6 , s = 3 . 6
평균키에 대한 95% 신뢰구간 (confidence interval)을 구하시오.
α = 0.05 \alpha = 0.05 α = 0 . 0 5
z α / 2 = z 0.025 = 1.96 \large z_{\alpha/2} = z_{0.025} = 1.96 z α / 2 = z 0 . 0 2 5 = 1 . 9 6
z α / 2 s a = 1.96 × 3.6 3 6 = 1.96 × 3.6 6 = 1.176 \large z_{\alpha/2}\frac{s}{\sqrt a} = 1.96 \times \frac{3.6}{\sqrt 36} = 1.96 \times \frac{3.6}{6} = 1.176 z α / 2 a s = 1 . 9 6 × 3 6 3 . 6 = 1 . 9 6 × 6 3 . 6 = 1 . 1 7 6
95% 신뢰구간
(173.6 - 1.176, 173.6 + 1.176) = (172.4, 174.8)
예시 # 2
어떤 농장에서 생산된 계란 30개의 표본을 뽑았더니 그 무게가 다음과 같다.
w = [10,7, 11.7, 9.8, 11.4, 10.8, 9.9, 10.1, 8.8, 12.2, 11.0, 11.3, 11.1, 10.3, 10.0, 9.9,
11.1, 11.7, 11.5, 9.1, 10.3, 8.6, 12.1, 10.0, 13.0, 9.2, 9.8, 9.3, 9.4, 9.6, 9.2]
계란의 평균 무게에 대한 95% 신뢰구간 (confidence interval)을 구하시오.
w = [ 10.7 , 11.7 , 9.8 , 11.4 , 10.8 , 9.9 , 10.1 , 8.8 , 12.2 , 11.0 , 11.3 , 11.1 , 10.3 , 10.0 , 9.9 , 11.1 , 11.7 , 11.5 , 9.1 , 10.3 , 8.6 , 12.1 , 10.0 , 13.0 , 9.2 , 9.8 , 9.3 , 9.4 , 9.6 , 9.2 ]
import numpy as np
xbar = np. mean( w)
sd = np. std( w, ddof= 1 )
print ( "평균 %.2f, 표준편차: %.2f" % ( xbar, sd) )
import scipy. stats
alpha = 0.05
zalpha = scipy. stats. norm. ppf( 1 - alpha/ 2 )
print ( "zalpha:" , zalpha)
α = 0.05 \alpha = 0.05 α = 0 . 0 5
z α 2 = z 0.025 = 1.96 \large z_{\frac{\alpha}2} = z_{0.025} = 1.96 z 2 α = z 0 . 0 2 5 = 1 . 9 6
X ˉ = 10.43 , s = 1.11 \bar X = 10.43, s = 1.11 X ˉ = 1 0 . 4 3 , s = 1 . 1 1
z α 2 s a = 1.96 × 1.11 30 = 0.397 \large z_{\frac{\alpha}2}\frac{s}{\sqrt a} = 1.96 \times \frac{1.11}{\sqrt {30}} = 0.397 z 2 α a s = 1 . 9 6 × 3 0 1 . 1 1 = 0 . 3 9 7
95% 신뢰구간
(10.43 - 0.397, 10.43 + 0.397) = (10.033, 10.827)
모비율의 추정
표본비율을 이용하여 모비율 추정
점추정
확률변수 X X X : n n n 개의 표본에서 특정 속성을 갖는 표본의 개수
모비율 p p p 의 점추정량
p ^ = X n \hat{p} = \frac{X}{n} p ^ = n X
예시 #
대학교 1학년생의 흡연율을 조사하기 위해 150명을 랜덤하게 선택하여 흡연여부를 조사하였다.
이 중 48명이 흡연을 하고 있었다. 이 대학교 1학년생의 흡연율의 평균을 점추정하시오.
n = 150 , X = 48 n = 150, X = 48 n = 1 5 0 , X = 4 8
p ^ = X n = 48 150 = 0.32 \hat p = \frac{X}{n} = \frac{48}{150} = 0.32 p ^ = n X = 1 5 0 4 8 = 0 . 3 2
평균흡연율은 32%로 추정됨.
구간추정
( p ^ − z α 2 p ^ ( 1 − p ^ ) n , p ^ + z α 2 p ^ ( 1 − p ^ ) n ) \begin{pmatrix}{\Large \hat p - z_{\frac{\alpha}{2}}{\sqrt \frac{\hat p(1-\hat p)}{n}}},{\Large \hat p + z_{\frac{\alpha}{2}}{\sqrt \frac{\hat p(1-\hat p)}{n}}}\end{pmatrix} ( p ^ − z 2 α n p ^ ( 1 − p ^ ) , p ^ + z 2 α n p ^ ( 1 − p ^ ) )
예시 #
대학교 1학년생의 흡연율을 조사하기 위해 150명을 랜덤하게 선택하여
흡연여부를 조사하였다. 이 중 48명이 흡연을 하고 있었다.
흡연율 p p p 의 95% 신뢰구간 (confidence interval)을 구하시오.
α = 0.05 , z α 2 = z 0.025 = 1.96 , p ^ = 0.32 \alpha = 0.05, z\frac{\alpha}{2} = z_{0.025}=1.96, \hat p = 0.32 α = 0 . 0 5 , z 2 α = z 0 . 0 2 5 = 1 . 9 6 , p ^ = 0 . 3 2
p ^ ( 1 − p ^ ) n = ( 0.32 ) ( 0.68 ) 150 = 0.038 \sqrt \frac{\hat p(1-\hat p)}{n} = \sqrt \frac{(0.32)(0.68)}{150} = 0.038 n p ^ ( 1 − p ^ ) = 1 5 0 ( 0 . 3 2 ) ( 0 . 6 8 ) = 0 . 0 3 8
( 0.32 − 1.96 × 0.038 , 0.32 + 1.96 × 0.038 ) = ( 0.245 , 0.395 ) (0.32 - 1.96 \times 0.038, 0.32 + 1.96 \times 0.038) = (0.245, 0.395) ( 0 . 3 2 − 1 . 9 6 × 0 . 0 3 8 , 0 . 3 2 + 1 . 9 6 × 0 . 0 3 8 ) = ( 0 . 2 4 5 , 0 . 3 9 5 )
import numpy as np
import scipy. stats
x = 48
n = 150
phat = x / n
alpha = 0.05
zalpha = scipy. stats. norm. ppf( 1 - alpha/ 2 )
sd = np. sqrt( phat * ( 1 - phat) / n)
print ( "phat %.3f, zalpha: %.3f, sd: %.3f" % ( phat, zalpha, sd) )
ci = [ phat - zalpha * sd, phat + zalpha * sd]
print ( ci)
검정
통계적 가설검정
가설검정이란?
어떤 고등학교의 1학년 학생들의 평균키가 170.5cm으로 알려져 있었다.
올해 새로 들어온 1학년 학생들 중 30명을 랜덤하게 선택하여 키를 잰 후
평균을 계산했더니 171.3cm이었다.
그렇다면, 올해 신입생은 평균키가 170.5cm보다 더 크다고 할 수 있는가?
👉 이런 주장을 검증하는 것이 가설검정
(표본평균 X ˉ \bar X X ˉ 가 μ 0 \mu_0 μ 0 보다 얼마나 커야 모평균 μ \mu μ 가 μ 0 \mu_0 μ 0 보다 크다고 할 수 있을 것인가?)
💡 표본평균은 표본의 선택에 의해 달라짐에 주의!
검정 원리
귀무가설 : 새로운 주장이 없었던 일이 됨
H 0 : μ = μ 0 H_0 : \mu = \mu_0 H 0 : μ = μ 0 (새로운 평균(표본평균)은 기존 평균과 같다)
대립가설 : 새로운 주장이 맞음
H 1 : μ > μ 0 ( o r μ < μ 0 ) H_1 : \mu > \mu_0 \hspace{0.5em} (or \hspace{0.5em}\mu < \mu_0) H 1 : μ > μ 0 ( o r μ < μ 0 )
귀무가설을 기각하기 위해서는 X ˉ \bar X X ˉ 가 조금 큰 값이 나와야 함(그리고 그 확률이 낮아야 함)
귀무가설이 참이라는 가정하에, 랜덤하게 선택한 표본에서 지금의 X ˉ \bar X X ˉ 가 나올 확률을 계산할 필요
이 확률이 낮다면 귀무가설이 참이 아니라고 판단
(위의 예시에서 171.3cm가 나올 확률이 낮다면 귀무가설은 기각!)
🔥 귀무가설 기각 == 새로운 주장이 맞다!
확률이 낮다는 기준점 필요
유의수준 α \alpha α 도입
P ( X ˉ ≥ k ) ≤ α P(\bar X ≥ k) ≤ \alpha P ( X ˉ ≥ k ) ≤ α 가 되는 k k k 를 찾아야 함
표준정규확률변수로 변환 ⇒ 검정통계량 이라고 함
Z = X ˉ − μ s / n ~ N ( 0 , 1 ) Z = {\Large\frac{\bar X-\mu}{s/\sqrt n} \text{\textasciitilde}} N(0,1) Z = s / n X ˉ − μ ~ N ( 0 , 1 )
P ( Z ≥ z α ) = α P(Z ≥ z_\alpha) = \alpha P ( Z ≥ z α ) = α
따라서 X ˉ \bar X X ˉ 를 Z Z Z 로 변환한 후 Z Z Z 값이 z α z_\alpha z α 보다 큰지를 검토
크다면 귀무가설 기각
그렇지 않다면 귀무가설 채택
검정 절차
H 0 , H 1 H_0, H_1 H 0 , H 1 설정
유의수준 α \alpha α 설정
검정통계량 계산
기각역 또는 임계값 계산
주어진 데이터로부터 유의성 판정
모평균의 검정
모평균의 검정 방법
대립가설
문제에서 검정하고자 하는 것이 무엇인지 파악 필요
대립가설 H 1 H_1 H 1 채택을 위한 통계적 증거 확보 필요
증거가 없으면 귀무가설 H 0 H_0 H 0 채택
H 1 : μ > μ 0 H_1 : \mu > \mu_0 H 1 : μ > μ 0
H 1 : μ < μ 0 H_1 : \mu < \mu_0 H 1 : μ < μ 0
H 1 : μ ≠ μ 0 H_1 : \mu \not = \mu_0 H 1 : μ = μ 0
예시 #
어떤 농장에서 생상되는 계란의 평균 무게는 10.5그램으로 알려져 있다.
새로운 사료를 도입한 후에 생산된 계란 30개의 표본평균을 계산했더니 11.4그램이 나왔다.
새로운 사료가 평균적으로 더 무거운 계란을 생산한다고 할 수 있는가?
- H 0 : μ = 10.5 H_0 : \mu = 10.5 H 0 : μ = 1 0 . 5
- H 1 : μ > 10.5 H_1 : \mu > 10.5 H 1 : μ > 1 0 . 5
새로운 사료를 도입한 후에 생산된 계란 30개의 표본평균을 계산했더니 9.4그램이 나왔다.
새로운 사료가 평균적으로 더 가벼운 계란을 생산한다고 할 수 있는가?
- H 0 : μ = 10.5 H_0 : \mu = 10.5 H 0 : μ = 1 0 . 5
- H 1 : μ < 10.5 H_1 : \mu < 10.5 H 1 : μ < 1 0 . 5
어떤 농장에서 자신들이 생산하는 계란의 평균 무게가 10.5그램이라고 광고하고 있다.
이에 생산된 계란 30개의 표본 평균을 계산했더니 9.4그램이 나왔다.
이 농장의 광고가 맞다고 할 수 있나?
- H 0 : μ = 10.5 H_0 : \mu = 10.5 H 0 : μ = 1 0 . 5
- H 1 : μ ≠ 10.5 H_1 : \mu \not = 10.5 H 1 : μ = 1 0 . 5
😃 유의수준 α \alpha α 를 0.05로 설정하고 다음 절차 진행
검정통계량
n ≥ 30 n ≥ 30 n ≥ 3 0 인 경우
중심극한정리 사용
Z = X ˉ − μ s / n ~ N ( 0 , 1 ) Z = {\Large\frac{\bar X-\mu}{s/\sqrt n} \text{\textasciitilde}} N(0,1) Z = s / n X ˉ − μ ~ N ( 0 , 1 )
모집단이 정규 모집단이고, 모표준편차 σ \sigma σ 가 주어진 경우
Z = X ˉ − μ σ / n ~ N ( 0 , 1 ) Z = {\Large\frac{\bar X-\mu}{\sigma/\sqrt n} \text{\textasciitilde}} N(0,1) Z = σ / n X ˉ − μ ~ N ( 0 , 1 )
기타의 경우는 생략
기각역
H 0 : μ = 10.5 H_0 : \mu = 10.5 H 0 : μ = 1 0 . 5
유의수준 : α \alpha α
기각역
H 1 : μ > 10.5 ≥ Z > z α H_1 : \mu > 10.5 ≥ Z > z_\alpha H 1 : μ > 1 0 . 5 ≥ Z > z α
H 1 : μ > 10.5 ≥ Z < − z α H_1 : \mu > 10.5 ≥ Z < -z_\alpha H 1 : μ > 1 0 . 5 ≥ Z < − z α
H 1 : μ > 10.5 ≥ ∣ Z ∣ > z α 2 H_1 : \mu > 10.5 ≥ |Z| > z_\frac{\alpha}{2} H 1 : μ > 1 0 . 5 ≥ ∣ Z ∣ > z 2 α
μ ≥ ∣ Z ∣ > z α 2 \mu ≥ |Z| > z_\frac{\alpha}{2} μ ≥ ∣ Z ∣ > z 2 α
![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F2f33bc18-f12c-4160-904c-9c64dd82fbd5%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F2f33bc18-f12c-4160-904c-9c64dd82fbd5%2Fimage.png )
예제 # 검정
어떤 농장에서 자신들이 생산하는 계란의 평균 무게가 10.5그램이라고 홍보하고 있다.
이에 생산된 계란 30개의 표본을 뽑았더니 그 무게가 다음과 같다.
w = [10.7, 11.7, 9.8, 11.4, 10.8, 9.9, 10.1, 8.8, 12.2, 11.0, 11.3, 11.1, 10.3, 10.0, 9.9, 11.1, 11.7, 11.5, 9.1, 10.3, 8.6, 12.1, 10.0, 13.0, 9.2, 9.8, 9.3, 9.4, 9.6, 9.2]
이 농장의 홍보가 맞는지 유의수준 5%로 검정하시오.
H 0 : μ = 10.5 , H 1 : μ ≠ 10.5 H_0 : \mu = 10.5 , H_1 : \mu \not = 10.5 H 0 : μ = 1 0 . 5 , H 1 : μ = 1 0 . 5
유의수준 α = 0.05 \alpha = 0.05 α = 0 . 0 5
검정통계량
X ˉ = 10.43 , s = 1.11 \bar X = 10.43, s = 1.11 X ˉ = 1 0 . 4 3 , s = 1 . 1 1
Z = X ˉ − μ s / n = 10.43 − 10.5 1.11 / 30 = − 0.345 Z = {\Large\frac{\bar X-\mu}{s/\sqrt n}} = {\Large\frac{10.43 - 10.5}{1.11/\sqrt {30}}} = -0.345 Z = s / n X ˉ − μ = 1 . 1 1 / 3 0 1 0 . 4 3 − 1 0 . 5 = − 0 . 3 4 5
기각역
z α 2 = z 0 . 025 = 1.96 z_\frac{\alpha}{2} = z_0.025 = 1.96 z 2 α = z 0 . 0 2 5 = 1 . 9 6
유의성 판정
μ ≥ ∣ Z ∣ > z α 2 \mu ≥ |Z| > z_\frac{\alpha}{2} μ ≥ ∣ Z ∣ > z 2 α
10.5 ≥ ∣ − 0.345 ∣ ≯ 1.96 10.5 ≥|-0.345| \not > 1.96 1 0 . 5 ≥ ∣ − 0 . 3 4 5 ∣ > 1 . 9 6
👉 귀무가설을 기각할 수 없다.
import numpy as np
w = [ 10.7 , 11.7 , 9.8 , 11.4 , 10.8 , 9.9 , 10.1 , 8.8 , 12.2 , 11.0 , 11.3 , 11.1 , 10.3 , 10.0 , 9.9 , 11.1 , 11.7 , 11.5 , 9.1 , 10.3 , 8.6 , 12.1 , 10.0 , 13.0 , 9.2 , 9.8 , 9.3 , 9.4 , 9.6 , 9.2 ]
mu = 10.5
xbar = np. mean( w)
sd = np. std( w, ddof= 1 )
print ( "평균: %.2f, 표준편차: %.2f" % ( xbar, sd) )
z = ( xbar- mu) / ( sd/ np. sqrt( len ( w) ) )
print ( "검정통계량:" , z)
import scipy. stats
alpha = 0.05
cri = scipy. stats. norm. ppf( 1 - alpha/ 2 )
print ( "임계값:" , cri)
📌 w의 모든 데이터에서 0.5 만큼 뺀다음 다시 진행해보기
import numpy as np
w = [ 10.2 , 11.2 , 9.3 , 10.9 , 10.3 , 9.4 , 9.6 , 8.3 , 11.7 , 10.5 , 10.8 , 10.6 , 9.8 , 9.5 , 9.4 , 10.6 , 11.2 , 11.0 , 8.6 , 9.8 , 8.1 , 11.6 , 9.5 , 12.5 , 8.7 , 9.3 , 8.8 , 8.9 , 9.1 , 8.7 ]
mu = 10.5
xbar = np. mean( w)
sd = np. std( w, ddof= 1 )
print ( "평균: %.2f, 표준편차: %.2f" % ( xbar, sd) )
z = ( xbar- mu) / ( sd/ np. sqrt( len ( w) ) )
print ( "검정통계량:" , z)
import scipy. stats
alpha = 0.05
cri = scipy. stats. norm. ppf( 1 - alpha/ 2 )
print ( "임계값:" , cri)
평균: 9.93, 표준편차: 1.11
검정통계량: -2.8129403330804132
임계값: 1.959963984540054
👉 이 경우에는 귀무가설 기각
교차엔트로피
엔트로피
자기정보 (Self-information)
자기정보 : i ( A ) i(A) i ( A )
i ( A ) = l o g b ( 1 P ( A ) ) = − l o g b P ( A ) i(A) = {\large log_b(\frac{1}{P(A)})} = {\large -log_bP(A)} i ( A ) = l o g b ( P ( A ) 1 ) = − l o g b P ( A )
A A A : 사건
정보의 단위 → 보통 2 2 2 를 많이 사용
b = 2 b = 2 b = 2 : bits
b = e b = e b = e : nats
b = 10 b = 10 b = 1 0 : hartleys
💡 확률이 낮은 사건이 정보가 많다!
(도둑이 들었는데 개가 짖는 경우보다
도둑이 들었는데 개가 짖지 않는 경우가 더 많은 정보를 포함하고 있음.)
예시 #
동전을 던졌을 때 앞면이 나올 확률 H(Head), 뒷면이 나올 확률 T(Tail)
P ( H ) = 1 8 , P ( T ) = 7 8 P(H) = \frac{1}{8}, P(T) = \frac{7}{8} P ( H ) = 8 1 , P ( T ) = 8 7 이면
자기정보는 i ( H ) = 3 비트 , i ( T ) = 0.193 비트 i(H) = 3비트, i(T)=0.193비트 i ( H ) = 3 비 트 , i ( T ) = 0 . 1 9 3 비 트 로 표현한다
🔥 어떠한 사건에 대해서 그 사건이 발생할 확률을 가지고 정보의 량을 표현!
엔트로피 (entropy)
자기 정보의 평균 (Average of Self-information)
H ( X ) = ∑ j P ( A j ) i ( A j ) = − ∑ j P ( A j ) l o g 2 P ( A j ) H(X) = \textstyle\sum _j P(A_j)\;i(Aj) = -\textstyle\sum_j P(A_j)\;log_2P(A_j) H ( X ) = ∑ j P ( A j ) i ( A j ) = − ∑ j P ( A j ) l o g 2 P ( A j )
사건의 수를 K K K 라고 할 때,
0 ≤ H ( X ) ≤ l o g 2 K 0≤H(X)≤log_2K 0 ≤ H ( X ) ≤ l o g 2 K
엔트로피는 평균비트수를 표현
데이터 압축에 사용 가능
예시 # 데이터 압축에 사용
문자 A, B, C, D를 표현한다고 할 때,
4 4 4 가지 정보를 표현하는 데 필요한 비트수 → 일반적으로 2 2 2 비트가 필요하다.
하지만, 다음의 확률분포(A가 나올 확률이 1/2, B가 나올 확률이 1/4, ...)에서
i ( X ) i(X) i ( X ) 를 활용하는 경우 평균비트수는
- 1 × 1 2 + 2 × 1 4 + 3 × 1 8 + 3 × 1 8 = 14 8 = 7 4 = 1.75 비트 1\times \frac{1}{2}+2\times \frac{1}{4}+3\times \frac{1}{8}+3\times \frac{1}{8}=\frac{14}{8}=\frac{7}{4}=1.75비트 1 × 2 1 + 2 × 4 1 + 3 × 8 1 + 3 × 8 1 = 8 1 4 = 4 7 = 1 . 7 5 비 트
![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F68acf36c-ed95-42d9-8dbc-fd978bca012e%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F68acf36c-ed95-42d9-8dbc-fd978bca012e%2Fimage.png)
*확률분포: 각각의 사건에 확률을 대입한 것
👉 엔트로피는 데이터를 표현하는 데에 필요한 평균비트수 를 의미한다!
교차엔트로피
📌 확률분포 P와 Q
사건의 집합 S = { A j } S =\{{A_j}\} S = { A j }
P ( A j ) P(A_j) P ( A j ) : 확률분포 P P P 에서 사건 A j A_j A j 가 발생할 확률
Q ( A j ) Q(A_j) Q ( A j ) : 확률분포 Q Q Q 에서 사건 A j A_j A j 가 발생할 확률
i ( A j ) i(A_j) i ( A j ) : 확률분포 Q Q Q 에서 사건 A j A_j A j 의 자기정보
(여러 사건에 대한 확률분포 중에서, 일단 확률분포 Q Q Q 에 따라서 정의해보기로 함!)
- i ( A j ) = − l o g 2 Q ( A j ) i(A_j)=-log_2Q(A_j) i ( A j ) = − l o g 2 Q ( A j )
- 자기정보는 A j A_j A j 를 표현하는 비트수
💡 잘못된 확률분포 Q Q Q 를 사용하게 되면, 실제 최적의 비트수를 사용하지 못하게 됨!
교차엔트로피
집합 S S S 상에서 확률분포 P P P 에 대한 확률분포 Q Q Q 의 교차 엔트로피
확률분포 P P P 에서 i ( A j ) i(A_j) i ( A j ) 의 평균
(🔥 자기정보 i ( A j ) i(A_j) i ( A j ) 는 확률분포 Q Q Q 가 P P P 상에서 실제로 나타남을 의미)
H ( P , Q ) = ∑ j P ( A j ) i ( A j ) = − ∑ j P ( A j ) l o g 2 Q ( A j ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) H(P,Q)=\textstyle\sum_jP(A_j)\;i(A_j)=-\textstyle\sum_jP(A_j)\;log_2Q(A_j)\\\;\\=-\textstyle\sum_{x\in X}P(x)\;log_2Q(x) H ( P , Q ) = ∑ j P ( A j ) i ( A j ) = − ∑ j P ( A j ) l o g 2 Q ( A j ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x )
이 값은 정확한 확률분포 P를 사용했을 때의 비트수보다 크게 됨.
H ( P , Q ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) ≥ − ∑ x ∈ X P ( x ) l o g 2 P ( x ) = H ( P ) H(P,Q)=-\textstyle\sum_{x\in X}P(x)\;log_2Q(x)≥-\textstyle\sum_{x\in X}P(x)\;log_2P(x)=H(P) H ( P , Q ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) ≥ − ∑ x ∈ X P ( x ) l o g 2 P ( x ) = H ( P )
👉 이 값은 P와 Q가 얼마나 비슷한지를 표현
같으면 H ( P , Q ) = H ( P ) H(P, Q) = H(P) H ( P , Q ) = H ( P )
다르면 H ( P , Q ) > H ( P ) H(P, Q) > H(P) H ( P , Q ) > H ( P )
예시 #
![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F83198e72-060f-48f3-a931-ee01fd1d1ae1%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F83198e72-060f-48f3-a931-ee01fd1d1ae1%2Fimage.png )
Q ( X ) Q(X) Q ( X ) 를 임의로 가정 하고 코드 부여
평균비트수
3 × 1 2 + 3 × 1 4 + 2 × 1 8 + 1 × 1 8 = 21 8 = 2.625 비트 3\times \frac{1}{2}+3\times \frac{1}{4}+2\times \frac{1}{8}+1\times \frac{1}{8}=\frac{21}{8}=2.625비트 3 × 2 1 + 3 × 4 1 + 2 × 8 1 + 1 × 8 1 = 8 2 1 = 2 . 6 2 5 비 트
약 1.5배나 많은 비트가 필요
🔥 교차엔트로피를 이용하면 두 확률분포 P P P 와 Q Q Q 가 얼마나 비슷한 지를 알 수 있다!
손실함수
분류 문제
주어진 대상이 A인지 아닌지를 판단
주어진 대상이 A, B, C, ... 중 어느 것인지를 판단
기계학습에서는 주어진 대상이 각 그룹에 속할 확률을 제공
만약 [ 0.8 , 0.2 ] [0.8, 0.2] [ 0 . 8 , 0 . 2 ] ( A일 확률이 0.8, 아닐 확률이 0.2 ) 라고 하면
이 값이 정답인 [ 1.0 , 0.0 ] [1.0, 0.0] [ 1 . 0 , 0 . 0 ] 과 얼마나 다른지 측정 필요!
👉 이것을 측정하는 함수가 손실함수 !
원하는 답 P = [ p 1 , p 2 , . . . , p n ] , p 1 + p 2 + ⋯ + p n = 1 P = [p_1, p_2, ...\:, p_n], p_1 + p_2 + \dots + p_n = 1 P = [ p 1 , p 2 , . . . , p n ] , p 1 + p 2 + ⋯ + p n = 1
제시된 답 Q = [ q 1 , q 2 , . . . , q n ] , q 1 + q 2 + ⋯ + q n = 1 Q = [q_1, q_2, ...\:, q_n], q_1 + q_2 + \dots + q_n = 1 Q = [ q 1 , q 2 , . . . , q n ] , q 1 + q 2 + ⋯ + q n = 1
💡 P P P 와 Q Q Q 가 얼마나 다른지에 대한 척도 필요
손실함수 종류
제곱합
∑ ( p i − q i ) 2 \sum (p_i-q_i)^2 ∑ ( p i − q i ) 2
( 1.0 − 0.8 ) 2 + ( 0.0 − 0.2 ) 2 (1.0-0.8)^2+(0.0-0.2)^2 ( 1 . 0 − 0 . 8 ) 2 + ( 0 . 0 − 0 . 2 ) 2
확률이 다를수록 큰 값을 가짐
하지만 학습 속도 느림
교차엔트로피
확률이 다를수록 큰 값을 가짐
학습 속도 빠름
👉 분류 문제에서는 주로 교차 엔트로피 사용
📌 분류문제에서의 원하는 답
P = [ p 1 , p 2 , . . . , p n ] P = [p_1, p_2, ...\:, p_n] P = [ p 1 , p 2 , . . . , p n ]
p i p_i p i 중 하나만 1 1 1 이고, 나머지는 다 0 0 0 임.
엔트로피는 0 0 0 , 즉 H ( P ) = 0 H(P) = 0 H ( P ) = 0
P k = 1.0 P_k = 1.0 P k = 1 . 0 이라고 하면, q k q_k q k 의 값이 최대한 커지는 방향으로 학습 진행
예시 #
S = { A , B } S = {\{A,B\}} S = { A , B }
원하는 답
P = [ 1 , 0 ] P = [1,0] P = [ 1 , 0 ]
P ( A ) = 1 , P ( B ) = 0 P(A) = 1, P(B) = 0 P ( A ) = 1 , P ( B ) = 0
예측 Q ( X ) Q(X) Q ( X )
[ 0.8 , 0.2 ] : Q ( A ) = 0.8 , Q ( B ) = 0.2 [0.8, 0.2]: Q(A) = 0.8, Q(B) = 0.2 [ 0 . 8 , 0 . 2 ] : Q ( A ) = 0 . 8 , Q ( B ) = 0 . 2
H ( P , Q ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) = − 1 × l o g 2 0.8 = 0.3219 H(P,Q)=-\textstyle\sum_{x\in X}P(x)\;log_2Q(x)=-1\times log_{2}0.8=0.3219 H ( P , Q ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) = − 1 × l o g 2 0 . 8 = 0 . 3 2 1 9
[ 0.5 , 0.5 ] : Q ( A ) = 0.5 , Q ( B ) = 0.5 [0.5, 0.5]: Q(A) = 0.5, Q(B) = 0.5 [ 0 . 5 , 0 . 5 ] : Q ( A ) = 0 . 5 , Q ( B ) = 0 . 5
H ( P , Q ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) = − 1 × l o g 2 0.5 = 1 H(P,Q)=-\textstyle\sum_{x\in X}P(x)\;log_2Q(x)=-1\times log_{2}0.5=1 H ( P , Q ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) = − 1 × l o g 2 0 . 5 = 1
[ 0.2 , 0.8 ] : Q ( A ) = 0.2 , Q ( B ) = 0.8 [0.2, 0.8]: Q(A) = 0.2, Q(B) = 0.8 [ 0 . 2 , 0 . 8 ] : Q ( A ) = 0 . 2 , Q ( B ) = 0 . 8
H ( P , Q ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) = − 1 × l o g 2 0.2 = 2.32 H(P,Q)=-\textstyle\sum_{x\in X}P(x)\;log_2Q(x)=-1\times log_{2}0.2=2.32 H ( P , Q ) = − ∑ x ∈ X P ( x ) l o g 2 Q ( x ) = − 1 × l o g 2 0 . 2 = 2 . 3 2
👉 원하는 답과 다른 수록 값이 커지게 됨
import numpy as np
def crossentropy ( P, Q) :
return sum ( [ - P[ i] * np. log2( Q[ i] ) for i in range ( len ( P) ) ] )
P = [ 1 , 0 ]
Q = [ 0.8 , 0.2 ]
print ( crossentropy( P, Q) )
Q = [ 0.5 , 0.5 ]
print ( crossentropy( P, Q) )
Q = [ 0.2 , 0.8 ]
print ( crossentropy( P, Q) )
import numpy as np
def crossentropy ( P, Q) :
return sum ( [ - P[ i] * np. log2( Q[ i] ) for i in range ( len ( P) ) ] )
P = [ 1 , 0 , 0 , 0 ]
Q = [ 0.7 , 0.1 , 0.1 , 0.1 ]
print ( crossentropy( P, Q) )
🔥 손실함수는 학습의 방향을 제공 (값이 0에 가까워지게끔)