본문 바로가기
@ OO의 이해/오류의 이해

[통계 오류의 이해] 3. 2종오류는 어떻게 계산할까

by bigpicture 2020. 10. 29.
반응형

2종오류를 계산해봅시다. 2종오류는 귀무가설이 거짓임에도 기각하지 않는 것을 의미합니다. 

 

예제를 통해 이해해봅시다. 지난 예제에서 내용이 추가되었습니다. 

 

스마트스토어에 팔기 위해 핸드폰 케이스를 개발했다고 합시다. 공장이 없어서 외주생산을 맡겼습니다. 핸드폰 케이스의 두께는 10mm 인데, 공장에서는 실제 생산 시 평균 10mm이고 표준편차는 0.2mm 라고 했습니다. 표준편차가 0.2정도면 괜찮다고 판단했습니다. 

 

이를 확인하기 위해 50개의 샘플을 받았습니다. 두께를 측정해보니 평균이 10.1mm가 나왔습니다. 얼핏 보기에는 괜찮은 것 같은데, 공장의 주장이 사실인지 거짓인지 통계적으로 판단해보기로 했습니다. 

 

지난 글에서 유의수준을 5%로 하여 통계적으로 판단했고, 공장이 거짓말을 했다는 결론이 났습니다. 공장에 항의했고, 몇가지 문제를 개선했다며 50개의 샘플을 다시 보내왔습니다. 이번에는 두께가 10.02 mm 였습니다. 

 

유의수준을 5%로 하여 같은 방법으로 유의확률을 계산하였습니다. 

 

> 1-pnorm(10.02,10,sqrt(0.04/50))

0.24

 

유의수준 0.05보다 유의확률 0.25이 크기 때문에 공장의 주장을 참이라고 판단하였습니다. 제작을 진행하기로 했습니다. 

 

이때 문득 한가지 의문이 들었습니다. 

 

유의수준을 5%로 할 경우, 공장의 주장이 참인데 거짓이라고 판단할 확률은 5%이다. 따라서 1종오류는 5%이다. 그렇다면 공장의 주장이 거짓인데 참이라고 판단할 확률은 얼마일까? 즉 2종오류는 얼마일까 하는 의문입니다.

 

 

2종오류를 구해봅시다. 

 

가설검정에는 두가지 분포를 가정할 수 있습니다. 귀무가설이 참일 때의 표본평균의 분포와 대립가설이 참일 때의 표본평균의 분포입니다. 공장 예제에서 대립가설과 귀무가설은 아래와 같습니다. 

 

귀무가설 : 모집단의 평균이 10이다. 

대립가설 : 모집단의 평균이 10 보다 크다. 

 

귀무가설이 참일때의 표본평균의 분포는 아래와 같습니다.

 

X_bar~N(10,0.04/50)

 

귀무가설이 거짓일때의 분포는 대립가설에서 주장하는 평균이 있어야 정의할 수 있습니다. 대립가설에서는 평균을 10.1 이라고 주장해봅시다. 대립가설이 참일때 표본평균의 분포는 아래와 같습니다.

 

X_bar~N(10.1,0.04/50)

 

무슨 기준으로? 라는 의문이 들건데요. 뒤에서 다루도록 하고 일단 이렇게 놓고 해봅시다. 

 

이제 우리는 두 분포를 그림으로 그릴 수 있습니다. 유의 수준도 표시합시다. 아래 영역이 1종오류입니다. 

 

 

 

 

2종오류는 어느 영역일까요? 2종오류는 귀무가설이 거짓임에도 기각하지 않을 확률입니다. 바꿔 말하면 대립가설이 참임에도 귀무가설을 기각하지 않을 확률입니다. 따라서 대립가설의 분포에서 귀무가설을 기각하지 않는 영역의 넓이를 구하면 됩니다. 아래의 영역입니다. 

계산하면 아래와 같습니다. 

 

> pnorm(10.05,10.1,sqrt(0.04/50))

[1] 0.03854994

 

수식으로 표현하면 아래와 같습니다. 평균과 표준편차 자리에는 위 값을 대입하면 됩니다. 수식이 지저분해지기 떄문에 대입은 안했습니다. 

 

$\int_{-\infty}^{10.05}\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}$

 

[R코드]

 

plot(0,xlim=c(9.75,10.35),ylim=c(0,15),type="n",ann=FALSE)

 

mean1=10

sd1=sqrt(0.04/50)

x1=seq(mean1-10*sd1,mean1+10*sd1,0.001)

y1=dnorm(x1,mean1,sd1)

 

points(x1,y1,type='l')

abline(v=10.05)

xp=seq(10.05,mean1+10*sd1,0.01)

yp=dnorm(xp,mean1,sd1)

polygon(c(xp,rev(xp)),c(rep(0,length(xp)),rev(yp)),

        border=NA,

        col=adjustcolor("red",alpha=0.5))

 

axis(side=1,10.05,col.axis='red')

 

mean2=10.1

sd2=sqrt(0.04/50)

x2=seq(mean2-10*sd2,mean2+10*sd2,0.0001)

y2=dnorm(x2,mean2,sd2)

points(x2,y2,type='l')

 

text(9.87,9,"귀무가설이 참일 때의 분포",cex=1.2,font=2)

text(10.23,9,"귀무가설이 거짓일 때의 분포",cex=1.2,font=2)

text(10.11,2,"1종오류",col='red',cex=1.2,font=2)

 

xp2=seq(mean2-10*sd2,10.05,0.0001)

yp2=dnorm(xp2,mean2,sd2)

polygon(c(xp2,rev(xp2)),c(rep(0,length(xp2)),rev(yp2)),

        border=NA,

        col=adjustcolor("blue",alpha=0.5))

 

text(9.98,2,"2종오류",col='blue',cex=1.2,font=2)

 

반응형

댓글