아이티윌_데이터 분석 55기/강의내용 필기_통계 및 분석

#6 6일차_모비율 차이 검정

ecosso 2026. 4. 20. 16:06

01 이항분포와 정규분포의 관계

02 단일집단의 모비율 추정/가설검정

03 두 집단의 모비율 차이 검정


 

01 이항분포와 정규분포의 관계
이항분포 : 이산형 확률변수의 분포

정규분포 : 연속형 확률변수의 분포

 => n(시행횟수이 커지면 이항분포는 정규분포에 근사해짐

 

** 증명

1) 이항분포를 따르는 난수 추출 ( n = 1000, p = 0.8)

    X ~ B(n,p)  # 시행횟수, 성공확률

    E(X) = np

    Var(X) = npq (q = 1-p) # q는 실패확률

 

v1 <- rbinom(1000, 1000, 0.8)

 

2) 이항분포 히스토그램 시각화
hist(v1, pro = T)

3) 이론분포 시각화

E(X) = np = 1000*0.8 = 800

Var(X) = npq = 1000*0.8*0.2 = 160

X ~ N(800, 160) # 800을 중심으로 양쪽으로 160의 분산을 가지고 있는 분포가 예상된다.

 

vx <- seq(760,840,0.01)
vy <- dnorm(vx, mean = 800, sd = sqrt(160))

lines(vx, vy, type = 'l', col = 'red')


02 단일집단의 모비율 추정/가설검정

 

    추정량 ------------------> 모수

 p̂ (표본비율)                P (모비율)

 

1. 점추정

E(p̂) = P

  * p̂ 은 불편추정량

 

2. 구간추정

 ** 추정량의 분포

 

X : 성공횟수 ~ B(n,p)

      n이 커지면 X ~ N( np , npq )

E(X) = np

Var(X) = npq

 

p̂ : X/n ~ N( P ,  npq )

* X가 정규분포를 따르기 때문에 n으로 나눈 값도 정규분포를 따르게 된다.

E(p̂) = E(X/n) = E(X)/n = nP/n = P

* 기대값 공식에 의하여 상수항이 그대로 살아나게 됨 : E(X)/n 

Var(p̂) = Var(X/n) = Var(X)/n² = nP(1-P)/n² = P(1-P)/n

 

Z = (p̂ - P) / sqrt(P(1-P) / n) ~ N(0,1)

                                                                                              P는 P0(영가설 가정값)으로 대체 (n ≥ 30)

                                                                                                      p̂ 으로 대체 (n < 30)  

 

95% 신뢰구간 : [ p̂ - 1.96 * sqrt(P(1-P) / n), p̂ + 1.96 * sqrt(P(1-P) /n)]


[ 예제 - 모비율 추정 ]
공정에서 랜덤 샘플링을 진행하여 200개 제품에 대해 검사한 결과 15개의 불량품이 발견되었다.
이 공정 전체에 대한 불량률에 대한 점추정, 구간추정(95%)값을 구하여라.

 

# 1. 점추정
phat = 15/200 = 0.075
# (오차비율을 확인할 수 없으므로 신뢰하기 어려운 단점이 존재)

# 2. 구간추정
# [phat - 1.96 * sqrt(phat * (1-phat) / n), phat + 1.96 * sqrt(phat * (1-phat) / n)]
phat <- 15/200
n <- 200
c(phat - 1.96 * sqrt(phat * (1-phat) / n),phat + 1.96 * sqrt(phat * (1-phat) / n))

# 모비율의 95% 신뢰구간 : [0.03849582 0.11150418]


[ 예제 - 모비율 가설검정 ]
제품을 납품 받을 때 불량률이 10%를 넘기면 납품을 받지 않는다고 한다.
전체 중 랜덤하게 선택한 100개 샘플 중 11개가 불량으로 확인되었다면
납품을 받아야 할지를 유의수준 5%로 결정하세요.

 

# 1) 검정통계량
phat <- 11/100
p0 <- 0.1
n <- 100

Z* = (phat - p0) / sqrt(p0*(1-p0)/n)
     = 0.3333333

기각역 : [1.645, inf]
채택역 : [-inf, 1.645]
# => 귀무가설 채택

# 2) 신뢰구간
P(Z < 1.645) = 0.95
(phat - P) /sqrt(P(1-P)/n) < 1.645
P > phat - 1.645*sqrt(p0*(1-p0)/n)

모비율에 대한 95% 신뢰구간 : P > 0.06065

# 3) 유의확률
P(Z > 0.3333333) = 1 - P(< 0.3333333)
                             = 1 - pnorm(0.3333333)
                             = 0.3694414 >>>>> 0.05 => 귀무가설 채택!


[ 연습문제 ] 
프로세스에서 200개의 제품을 랜덤 샘플링하여 검사한 결과 15개의 불량품이 발견되었다.
공정 불량률이 0.1보다 작다고 할 수 있는지 유의수준 5%에서 검정하시오.

H0 : p = 0.1
H1 : p < 0.1 (왼쪽검정)

# 1) 검정통계량
x <- 15
n  <- 200
phat <- x/n
p0 = 0.1

Z* = (phat - p0) / sqrt(p0*(1-p0)/n) # -1.178511

기각역 : [-inf, -1.645]
채택역 : [-1.645, inf]

# 귀무가설 채택! -> 불량률이 0.1보다 작다고 이야기할 수 없다.

# 2) 유의확률
P(Z < -1.178511) = P(< -1.178511)
                            = pnorm(-1.178511)
                            = 0.1192965 >>>> 0.05 귀무가설 채택!


 

** 모비율 가설검정 함수
prop.test(x,                                    # 성공횟수(X)
               n,                                    # 표본크기
               p,                                    # 영가설 가정값
               alternative = 'two.sided', # 대립가설 형태
               conf.level = 0.95,            # 신뢰수준
               correct = T)                     # 연속성 보정여부

 

# ** 연속성 보정 여부
# T : P(Z < 1.5) => P(Z < 2)로 해석되므로 pvalue가 조금 더 커짐(정규분포 근사에 오차 반영) <- 실무에서 주로 사용
# F : P(Z < 1.5) => P(Z < 1.5)로 해석되므로 pvalue가 이론에서 구한 값과 동일함(정규분포 근사 완벽히 가정) <- 이론적인 값을 밝히고자할 때 주로 사용

 

소표본의 경우 이산분포(예: 이항분포)를 연속분포(정규분포)로 근사할 때 근사 오차가 커진다.

표본 수가 적으면 이항분포의 계단형(이산적) 특성이 강하게 나타나는데, 이를 연속분포(정규분포)로 근사하면 실제 확률과 차이가 커진다.

 

x <- 15
n  <- 200
phat <- x/n
p0 = 0.1

result <- prop.test(x, n, p=0.1, alternative = 'less', correct = F) 
result$statistic          # 카이제곱 통계량이기에 제곱한 값
sqrt(result$statistic)  # 1.178511 (위 결과와 절댓값이 동일 -> 부호는 phat과 p0의 크기에 따라 확인 가능)
result$p.value          # 0.1192964 (위 결과와 동일)


03 두 집단의 모비율 차이 검정

 * 두 집단은 서로 독립적이라고 가정

 

추정량(불편추정량)      ---------------------------->   모수

   phat1 - phat2                                                p1 - p2

 E(phat1 -phat2) = p1 - p2

 

phat1 - phat2 ~ N( p1 - p2 , P1(1-P1)/n + P2(1-P2)m )

E(phat1 - phat2) = E(phat1) - E(phat2) = p1 - p2

Var(phat1 - phat2) = Var(phat1) + Var(phat2)

                              = P1(1-P1)/n + P2(1-P2)m

 

Z* = (phat1 - phat2) - (p1-p2) / sqrt(p1(1-p1)/n + p2(1-p2)/m)

     = (phat1 - phat2) / sqrt(p(1-p)/n + p(1-p)/m)

                                   * p (합동표본비율) = (X1 + X2) / (n+m)

 

+) 1. 검정통계량

     2. 모수에 대한 신뢰구간

     3. 유의확률

 

> z분포는 임계값이 고정되어 있어 검정통계량만으로도 기각 여부를 쉽게 판단할 수 있다.
> 그러나 t분포, 카이제곱분포, F분포는 자유도 등에 따라 분포가 달라지므로 임계값을 바로 알기 어렵다. (따라서 모수에 대한 신뢰구간 계산이 어렵다.)
> 따라서 검정통계량을 구한 뒤, 유의확률(p-value)을 계산하여 가설의 기각 여부를 판단한다.
> 실무에서는 z.test, t.test, prop.test 등을 사용하지만, 이러한 기본 흐름을 이해하는 것이 중요하다.


[ 연습 문제 ]

동일한 제품을 생산하는 두 라인이 있는데 두 라인에서 생산하는 불량률은 서로 같은 것으로 알려져 있다.
하지만 최근 품질관리팀에서 불량률이 서로 다른 의견이 제시되었다.
두 라인의 불량률이 같은지를 유의수준 5%에서 검정하시오.


두 라인 표본 수 : 130, 150
두 라인의 불량품 수 : 5, 8

 

H0 : p1 - p2 = 0
H1 : p1 - p2 ! = 0

# 1) 검정통계량

phat1 <- 5/130 # 첫 번째 불량률
phat2 <- 8/150 # 두 번째 불량률
n <- 130 # 첫 번째 샘플사이즈
m <- 150 # 두 번째 샘플사이즈
p <- (5+8)/(130+150)


Z* = (phat1 - phat2) - 0 / sqrt(p1(1-p1)/n + p2(1-p2)/m)
   = (phat1 - phat2) / sqrt(p*(1-p)/n+p*(1-p)/m)  # <- p1 = p2를 가정하였을 때
   = -0.5898375

채택역 : [-1.96, 1.96]

# => 귀무가설 채택!
# 따라서 두 라인의 불량률이 서로 다르다고 말할 수 없다.

# 2) 유의확률
P(Z < -0.5898375) = pnorm(-0.5898375) 
                  = 0.2776498 >>> 0.025 => 귀무가설 채택

 

# 3) prop.test
result <- prop.test(c(5,8), c(130,150), correct = F)
sqrt(result$statistic) # 0.5898375
result$p.value         # alpha와 비교하기 위해서 0.552996
                               # 0.552996 >>> 0.05 => 귀무가설 채택!

> prop.test(c(5,8), c(130,150), correct = F)

	2-sample test for equality of proportions without continuity correction

data:  c(5, 8) out of c(130, 150)
X-squared = 0.34791, df = 1, p-value = 0.5553
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.06371665  0.03397306
sample estimates:
    prop 1     prop 2 
0.03846154 0.05333333 

[ 연습 문제 ]

도시와 시골에 사는 사람들의 흡연율을 비교하면  도시에 사는 사람의 흡연율이 더 높다라는 연구 결과에 대한 가설 검정을 유의수준 5%에서 검정하시오.

 도시와 시골의 표본 수 : 200, 150
 도시와 시골이 흡연자 수  80, 50

 

H0 : p1 - p2 = 0
H1 : p1 - p2 > 0 (오른쪽 검정)

# 1) 검정통계량
phat1 <- 80/200
phat2 <- 50/150
n <- 80
m <- 50
p <- (80+50) / (200+150)

Z* = (phat1 - phat2) / sqrt(p*(1-p)/200 + p*(1-p)/150) # 1.277381

# 채택역 : [-inf, 1.645]
# 귀무가설 채택! : 도시흡연율과 시골흡연율의 차이는 유의하다고 볼 수 없음

# 2) 유의확률
P(Z > 14.05119) = 1 - pnorm(1.277381)

# 3) prop.test
result <- prop.test(c(80,50), c(200,150), alternative = 'greater', correct = F)
sqrt(result$statistic) # 1.277381 
result$p.value # 0.1007339


04 카이제곱 분포

 - 분산과 관련된 분포 (단일 집단의 모분산 추정 시 사용)

 - 범주형 자료 분석과 관련된 분포 (적합도 검정, 독립성 검정)

 - Z² ~ Chisq(1)

 - 0 이상의 값만 가짐

 - 왼쪽으로 치우친 (오른쪽 길이가 긴) 양의 왜도의 분포를 가짐

 - 자유도가 커질수록 정규분포에 근사해짐

 

X ~ Chisq(k), k : 자유도

x가 어떠한 형태로 정의되는지에 따라 k가 될 수도 있고 n-1이 될 수도 있고 샘플사이즈(n)가 될수도 있다.

 

 -01 카이제곱 분포 시각화

vx <- seq(0, 50, 0.01)
vy1 <- dchisq(vx, df = 1) # df:1
vy2 <- dchisq(vx, df = 5) # df:5
vy3 <- dchisq(vx, df = 10) # df:10
vy4 <- dchisq(vx, df = 20) # df:20

plot(vx, vy1, type = 'l', lwd = 2, col = 2,
     xlab = 'chisq', ylab = '', ylim = c(0,0.2))
lines(vx, vy2, type = 'l', lwd = 2, col = 3)
lines(vx, vy3, type = 'l', lwd = 2, col = 4)
lines(vx, vy4, type = 'l', lwd = 2, col = 5)

legend('topright', inset = c(0.02,0.02),
       legend = c('df:1','df:5','df:10','df:20'),
       lty = 1, lwd = 2, col = 2:5)


 -02 정규분포와 카이제곱분포와의 관계
정규분포를 따르는 확률변수 : Z

 

1. Z² ~ Chisq(1)

set.seed(0)
v1 <- rnorm(100)
hist(v1^2, prob = T) # 난수가 가지는 실제 분포

vx <- seq(0,6,0.1)
vy <- dchisq(vx, df = 1)
lines(vx, vy, type = 'l', col = 'red')

 

 

2. 정규분포를 따르는 난수 n개를 제곱하여 더한 확률변수

    ΣZ² ~ Chisq(n)

 

vsum <- c()
for (i in 1:1000) {
  v1 <- rnorm(100)
  vsum <- c(vsum, sum(v1^2))
}

hist(vsum, prob=T, ylim = c(0,0.03)) # 난수가 갖는 실제분포

vx <- seq(from = 60, to = 160, by = 0.01)
vy <- dchisq(vx, df = 100)
lines(vx, vy, type = 'l', col = 'red')