types of error, 오류의 종류, 1종 오류, 2종 오류, type I error, type II error

이 예는 감자의 예랑은 방향이 달라서 안 맞으므로 머리가 좋아지는 약 혹은 XR을 이용해서 공부하는 방법으로 통계점수가 달라지는 가설을 생각한다. 모집단의 평균은 0이고 샘플사이즈에 따른 표준오차는 1 이 되는데, 내 샘플의 평균이 어디선가 발견되는 순간이다 (see Hypothesis testing example )

Types of error

Fig. 1: Types of error
요약

설명

실제 현상이 (약의 효과가) 있는 것으로 가정하면 붉은 선이 현실이 된다. 그러나 연구자는 붉은 선은 가정을 할 뿐, 실제로는 알 수 없으며, 검은 선을 가지고 (즉 영가설을 가지고) 판단을 하게 된다. 이 때 판단의 기준은 녹색 선이며, 이는 SE 단위 둘을 사용한 .05를 가르킨다.

Type I Error

가설검증을 위해서 녹색선을 사용하였을 때, 샘플의 평균이 노란색 부분에서 나타났다면, 연구자는 이것이 영가설의 평균과 통계적으로 유의미한 차이를 나타내 주는 것이라고 생각한다. 따라서 영가설을 부정하고 연구가설을 지지하게 된다. 즉, 영가설은 거짓이며, 연구가설은 참이라고 결론을 내린다 (테이블에서 A). 만약에 사실은 이 평균이 검은색의 모집단에서 나온 것이라면 (즉, 영가설 집단에서 나온 것이라면 혹은 1/20의 샘플링 확률에 걸린 것이라면), 연구자는 영가설이 참, 연구가설이 거짓인 실제(reality)를 영가설이 거짓, 연구가설이 참으로 결론 지은 것이 된다 (B). 이렇게 잘못 결론지을 확률이 .05이다. 이를 type I error라고 부르며, 이는 연구자가 가설검증을 설계할 단계에 이를 미리 지정해 놓고 알고 있는 (감수하고 있는) 오차의 한계이다. 이것을 알파($\alpha$)라고도 부른다.

Type II Error

그러나, 만약에 샘플의 평균이 회색 부분의 선에서 나타났다면, 연구자는 critical region을 넘지 못하였으므로 이것을 영가설의 모집단에서 나온 샘플의 평균으로 생각하게 된다. 따라서 영가설 부정에 실패하여, 연구가설을 지지하지 못하게 된다 (C). 그런데, 사실은 그 샘플의 평균이 붉은선의 모집단에서 나왔다고 한다면, 옳은 결론은 영가설은 거짓이어야 한다. 그런데, 이 가설검증에서 연구자는 영가설이 참, 따라서 연구가설은 거짓으로 잘못 진단한 것이다 (D). 이 범위를 type II error 혹은 베타($\beta$)라고 한다.

  • R script
  • R output
rm(list=ls())
rnorm2 <- function(n,mean,sd){ 
  mean+sd*scale(rnorm(n)) 
}

se <- function(sample) {
  sd(sample)/sqrt(length(sample))
}

ss <- function(x) {
  sum((x-mean(x))^2)
}

################################
N.p <- 1000000
m.p <- 50
sd.p <- 15

p1 <- rnorm2(N.p, m.p, sd.p)
mean(p1)
sd(p1)

p2 <- rnorm2(N.p, m.p+10, sd.p)
mean(p2)
sd(p1)

n1 <- 25
msm251 <- mean(p1)
se251 <- sd(p1)/sqrt(n1)
msm251 
se251
se251.5 <- se251*5
se251.2 <- se251*2

msm252 <- mean(p2)
se252 <- sd(p2)/sqrt(n1)
msm252
se252
se252.5 <- se252*5
se252.2 <- se252*2

start <- msm251-se251.5
end <- msm252+se252.5
x.span <- seq(start, end, by=.1)
y.1 <- dnorm(x.span, msm251, se251)
y.2 <- dnorm(x.span, msm252, se252)
sm.1 <- msm251+se251.2+(se251/2)
sm.1
sm.2 <- msm251+se251+(se251/2)
sm.2


plot(x.span, y.1, col = "blue", type='l', lwd=2)
lines(x.span, y.2, col = "red", type='l', lwd=2)
abline(v=c(msm251-se251.2, msm251, msm251+se251.2), col="darkgrey")
print(msm251+se251.2)
abline(v=sm.1, col="green")
abline(v=sm.2, col="black")

pnorm(sm.1, msm251, se251, lower.tail = F)*2
# sm.1 의 샘플점수가 나올 확률 
# .05보다 작으므로 영가설을 부정
# 연구가설 검증한 것으로 판단 
# 즉, 점수의 차이가 있음 (57.5 - 50)
# 이 때 범할 수 있는 에러는?
# 녹색선의 확률을 근거로 연구자는 
# 이 녹색선이 (샘플의 평균이) 빨간 색 집단에서 
# 나온 것이라고 판단함 (빨간 색에서 나왔기 때문에 
# 점수 차이가 있다고 판단한 것)
# 이 판단이 잘못되었을 확률은 위의 pnorm값 (양방향으로
# 보기 때문에 2를 곱함)
# 이것이 알파, p-level, type 1 error

pnorm(sm.2, msm251, se251, lower.tail = F)*2
# sm.2 의 샘플점수가 나올 확률 
# .05보다 크므로 영가설 부정에 실패
# 연구가설에 대해서 뭐라 할말이 없게됨
# 즉, 점수의 차이가 있다고 할 수 없음 (54.5 - 50)
# 이 때 범할 수 있는 에러는?
# 검정색 선의 확률을 근거로 연구자는 
# 이 검정선이 (샘플의 평균이) 파란색 선집단에서 
# 나온 것이라고 판단함 (파란색에서 나왔기 때문에 
# 점수 차이가 없다고 판단한 것)
# 이 판단이 잘못되었다는 말은?
# 이 검정색 선이 (샘플이) 사실은 붉은색 집단에서
# 나왔을 때의 오류를 말함. 
# 이것이 beta, type 2 error

아래는 고등학교2년생들의 방학중 하루에 게임에 쓰는 시간을 분으로 가정한 것이다. 모집단의 (population) 평균은 (m.p) 140 분이고, 표준편차값은 20이다 (sigma). 그리고 미디어교육을 받은 모집단을 가정하여 (현실에서 이런 일은 거의 이러나지 않는다) 이 모집단의 평균이 140에서 10분을 뺀 130분이라고 가정한다 (m.pe). 이제 n = 40 인 샘플을 취하여 그 샘플에게 미디어교육을 시킨 후, 효과를 검증하려고 한다.

rs.type.ii.error

m.p <- 140
sigma <- 20
e <- -10
m.pe <- m.p+e
n <- 40
se <- sigma / sqrt(n)
paste(m.p, sigma, m.p+e, n, se)

if(m.p>m.pe) {
  left <- m.p+se*3
  right <- m.pe-se*3
  flag <- -2*se
} else {
  left <- m.p-se*3
  right <- m.pe+se*3
  flag <- 2*se
}

curve(dnorm(x, m.p, se), from = left, to = right, 
      main = "normalized distribution of sample means",
      ylab = "Density", xlab = "z-value", col = "black", lwd = 2)
abline(v=m.p, col="black", lwd=2)
curve(dnorm(x, m.pe, se), from = left, to = right, 
      main = "normalized distribution of sample means",
      ylab = "Density", xlab = "z-value", col = "blue", lwd = 2, add=T)
abline(v=m.p+e, col="blue", lwd=2)
abline(v=m.p+flag, col='red', lwd=2, lty=2)
abline(v=m.p-flag, col='red', lwd=2, lty=2)

c(m.p+flag, m.p, m.p-flag)
c((m.p+e)-se*2, m.p+e, (m.p+e)+se*2)
q.05 <- (m.p)+flag
q.05
if(m.pe < m.p+flag) {
  p.out <- 1 - pnorm(q.05, m.pe, se)
} else {
  p.out <- pnorm(q.05, m.pe, se)
}
p.out

yrng <- (dnorm(m.p, m.p, se))
yrng
text(x=q.05, y=yrng/2, labels=paste("decision line =", 
                                    '\n', round(q.05,6),
                                    '\n', "p-value (reference to", 
                                    '\n', "130) =", round(p.out,6)), 
     pos = 4, col='red')

ro.type.ii.error

> m.p <- 140
> sigma <- 20
> e <- -10
> m.pe <- m.p+e
> n <- 40
> se <- sigma / sqrt(n)
> paste(m.p, sigma, m.p+e, n, se)
[1] "140 20 130 40 3.16227766016838"
> 
> if(m.p>m.pe) {
+   left <- m.p+se*3
+   right <- m.pe-se*3
+   flag <- -2*se
+ } else {
+   left <- m.p-se*3
+   right <- m.pe+se*3
+   flag <- 2*se
+ }
> 
> curve(dnorm(x, m.p, se), from = left, to = right, 
+       main = "normalized distribution of sample means",
+       ylab = "Density", xlab = "z-value", col = "black", lwd = 2)
> abline(v=m.p, col="black", lwd=2)
> curve(dnorm(x, m.pe, se), from = left, to = right, 
+       main = "normalized distribution of sample means",
+       ylab = "Density", xlab = "z-value", col = "blue", lwd = 2, add=T)
> abline(v=m.p+e, col="blue", lwd=2)
> abline(v=m.p+flag, col='red', lwd=2, lty=2)
> abline(v=m.p-flag, col='red', lwd=2, lty=2)
> 
> c(m.p+flag, m.p, m.p-flag)
[1] 133.6754 140.0000 146.3246
> c((m.p+e)-se*2, m.p+e, (m.p+e)+se*2)
[1] 123.6754 130.0000 136.3246
> q.05 <- (m.p)+flag
> q.05
[1] 133.6754
> if(m.pe < m.p+flag) {
+   p.out <- 1 - pnorm(q.05, m.pe, se)
+ } else {
+   p.out <- pnorm(q.05, m.pe, se)
+ }
> p.out
[1] 0.1225613
> 
> yrng <- (dnorm(m.p, m.p, se))
> yrng
[1] 0.1261566
> text(x=q.05, y=yrng/2, labels=paste("decision line =", 
+                                     '\n', round(q.05,6),
+                                     '\n', "p-value (reference to", 
+                                     '\n', "130) =", round(p.out,6)), 
+      pos = 4, col='red')
>


n=40 샘플의 점수가 붉은 색 점선 사이에서 나오게 되면 가설검증에 실패하게 된다. 이 때 범할 수 있는 오류는 type ii error이다. 이 때 범할 수 있는 에러를 파란 색의 효과가 있는 모집단에 비교해서 생각하면 그 probability는

가 된다. 즉, 내가 얻은 점수가 p2 집단에서 나왔을 확률이 12.3%나 된다는 뜻이다. 이것은 내 판단이 (가설검증에 실패한다는 판단이) 잘못일 확률이 12.3%라는 뜻이다.


위의 그래프는 n = 40에서 n = 400으로 늘린 것이다. 이 때 가설 검증에 실패하는 구간을 정해놓고 내가 구한 샘플의 평균이 그 구간에 속하더라도, 이 점수가 p2에서 나왔을 확률이 0이 된다. 즉, 내가 내린 “가설검증 실패”라는 판단이 잘 못일 확률이 0이라는 뜻이다.


극단적으로 샘플의 크기가 10이라면 이 때의 se값이 상대적으로 크므로 (20/sqrt(10)) 두 그래프는 더욱 많이 겹치게 된다. 이럴 경우, 가설 검증에서 실패하여도, 그 점수가 p2에서 나왔을 확률은 33.7% 나 된다.

위의 설명은 아래 표와 같이 정리할 수 있다.

Table of
types of error
Null Hypothesis(H0)가
Valid/True Invalid/False
Null Hypothesis
(H0)에 대한 판단
Reject
(부정)
B:
Type I error
(alpha)
A:
옳은 결정
Fail to reject
(부정에 실패)
C:
옳은 결정
D:
Type II error
(beta)

알파의 경우는 연구자가 정하는 방법으로 컨트롤할 수 있다. 그러나, 베타의 경우는 알파와 같은 방법을 사용할 수는 없다. 베타를 줄이는, 즉 영가설이 거짓으로 부정을 해야하는데 그렇게 하지 못하는 경우를 줄이는 방법으로 상식, 보편적인 것은 샘플의 n을 키우는 것이다. 좀 더 설명하자면, 위의 그래프 figure 1에서 각각은 샘플링분포곡선을 의미하므로 각 라인의 표준편차는 표준오차를 의미한다. 표준오차가를 줄이게 되면 두 라인이 서로 겹쳐질 경우가 줄어들게 되고, 이는 곧 베타의 감소를 의미한다.

Fig. 1: standard error = 1 일 경우
Fig. 3: standard error = 0.5 일 경우. 회색부분이 생길 가능성이 거의 없다는 것에 주목하라.