♧ 통계/통계 검정 (Statistical test)

[R] 비율 검정, Proportion test | prop.test()

Grit_0913 2024. 7. 29. 05:42

[R] 비율 검정, Proportion test | prop.test()

하단의 목차를 클릭하여 이동할 수 있습니다 :)

1. 비율 검정과 다른 검정 방법들
        1-1. 비율 검정, Proportion test
        1-2. 카이제곱 독립성 검정, Chi-square test of independence
        1-3. 카이제곱 적합성 검정, Chi-squared goodness-of-fit test
2. 비율의 개수에 따른 검정 방법의 차이
        2-1. 한 개의 비율 검정
        2-2. 두 개의 비율 검정
        2-3. 세 개 이상의 비율 검정
3. 예이츠 연속성 수정, Yates continuity correction
4. R의 prop.test() 함수의 소스 코드 이해
        4-1. prop.test()
        4-2. z-statistic을 계산하지 않고 chi-square statistic만을 사용하는 이유
        4-3. 실제로 확인해 보기
        4-4. 비율 검정에서의 관측값(O)과 기대 비율(E) 
5. R 코드 실습 | prop.test()
        5-1. 한 개의 비율 검정
        5-2. 두 개의 비율 검정
        5-3. 세 개 이상의 비율 검정
6. Reference

 

비율 검정이란 하나의 예측변수 내에 존재하는 한 개 이상의 범주(level)의 비율간에 차이가 있는지를 검정하는 방법이다. 예를 들면 공장에 존재하는 다섯 개의 생산라인 A, B, C, D, E가 '양품'과 '불량품'을 생산해 내는 상황을 가정한다. 이때 각 생산라인 A, B, C, D, E가 양품을 생산하는 비율에 차이가 있는지 검정할 때에 비율 검정을 사용할 수 있다. ('비율'을 검정하기에 1과 0의 값을 갖는 이항 변수를 대상으로 한다). 이번 포스팅에서는 비율 검정에 대하여 알아보고 R을 통해 실습을 진행한다.

 

P.S. 비율 검정 방법은 자료를 찾기가 상당히 어려웠습니다. 결국 R의 prop.test()와 chisq.test() 함수의 source code를 열어서 이해를 해보는 방식으로 접근했기에 조금씩 틀린 내용이 존재할 수 있음에 양해를 부탁드립니다. prop.test()의 소스 코드는 링크를 걸어두겠습니다.


1. 비율 검정과 다른 검정 방법들

 

비율 검정을 주제로 하는 포스팅이기에 카이제곱 검정과 관련이 짙은 '피셔의 정확검정'(Fisher's exact test)'과 '가능도비(likelihood ratio)' 등은 제외하였습니다.

 

1-1. 비율 검정, Proportion test

[Figure1] Contingency table of proportion test

  • 하나의 범주형 변수 내에 존재하는 둘 이상의 그룹 (levels)에 대하여 각 그룹의 성공(양품) 비율이 다른지 검정한다. 예에서는 성공 비율을 예로 들었지만 개별 범주가 이항 범주(0 혹은 1로 구성)인 경우 비율 검정이 가능하다.
    • 다른 예를 들면 '마케팅 방법'이라는 변수 내에 여러 마케팅 방법들이 범주(level)로 존재하고, 해당 범주들이 성공(1)과 실패(0)의 값을 갖는 이항 범주일 경우 비율검정을 할 수 있다.
    • 또 다른 예로 전체 인구 중 남성의 비율과 같은 문제 또한 남성과 여성 두 가지 경우 성별 또한 이항 변수이기 때문에 비율 검정이 가능하다.
  • 내부 함수
    • 단 하나의 범주(e.g. 사건 A)만 존재할 경우에는 z-statistics를 활용한다. (즉, 성공 비율과 실패 비율 검정).
    • 두 개 이상의 그룹(e.g. 위와 같이 A, B, C, D, E)을 검정할 때에는 카이제곱 통계량(chi-square statistics)을 활용한다. 단, 각 범주의 성공 비율을 곱하여 $E$ 값을 구한다.
  • 내부 함수 외에도 검정 통계량을 구할 때 사용하는 모형의 값($E$)을 계산하는 방법이 카이제곱 검정과 다르다.
  • R의 비율 검정은 카이제곱 검정 통계량을 사용하기에 기대 도수가 5를 넘는 것이 좋다.
    • 소스 코드에서는 가정이 위배될 경우 결과값이 부정확할 수 있다는 경고 정도만 출력하도록 코딩되어 있다.
  • 위는 분할표(contingency table)로 표현을 하였지만 실상은 '비율'에 대한 검정이기에 '비율'을 표기해야한다. 이는 실습을 하는 과정에서 다룬다.

P.S. 상술된 내용은 R에 속한 내용이다. 구체적인 내용은 prop.test()와 소스 코드와 함께 후술한다.

 

1-2. 카이제곱 독립성 검정, Chi-square test of independence

[Figure 2] Contingency table of chi-square test of independence

  • 카이제곱 독립성 검정은 두 개 이상의 '범주형 변수'의 관계가 독립적인이 종속적인지 검정할 때 사용한다.
    • 현제 예에서는 '불량 여부'와 '생산 라인' 두 변수가 독립적인지 종속적인지 검정한다.
  • 세 개 이상의 변수를 검정할 때에는 카이제곱 독립성 검정을 활용할 수 있으나 상호작용항을 고려하지 않는다는 단점이 있다.
    • 상호작용항을 고려할 경우 로그 선형 모델(log-linear model) 사용을 고려할 수 있다.
  • 카이제곱 독립성 검정은 최소 기대도수가 5를 만족해야하는 가정이 존재한다. 가정이 위배되는 경우 다음의 검정 방법을 고려할 수 있다.
    • 피셔의 정확검정(Fisher's exact test)
    • 가능도비(Likelihood ratio)

 

1-3. 카이제곱 적합성 검정, Chi-squared goodness-of-fit test

[Figure 3] Contingency table of chi-squared goodness-of-fit test

  • 카이제곱 적합성 검정은 전체 대비 각 범주가 관측된 비율이 독립적인지 검정한다. 
    • 위의 예에서는 주사위를 272번 던졌을 때 각 주사위 눈(1, 2, 3, 4, 5, 6)이 나온 빈도(비율)가 차이가 있는지 검정하는 것을 목표로한다.
    • 비즈니스 문제를 예로 들면 고객들이 당사의 사이트를 방문한 경로(e.g. SNS, 광고, 지인 추천, ...)의 비율을 검정할 수 있다.
  • '비율'이라는 단어를 사용하기에 비율 검정과 혼동할 수 있지만 다음의 차이를 갖는다.
    • 비율 검정(proportion test)은 개별 범주(level)의 성공 비율(이항 범주)을 대상으로하는 검정이다.
    • 카이제곱 적합성 검정은 '성공 비율'을 검정하지 않고 전체 관측 대비 개별 범주가 관측된 비율을 검정한다. (개별 범주가 0과 1의 값을 갖지 않는다).
  • 카이제곱 검정의 한 유형이기에 기대도수가 최소 5를 넘어야 한다는 가정을 만족해야 한다.

2. 비율의 개수에 따른 검정 방법의 차이

 

해당 주제에서는 문제를 예로 들어 어떤 차이가 있는지 직관적으로 확인하는 것을 목표로 한다. 현시점에서 이해가 잘 안 되어도 5번 주제에서 직접 실습을 하기에 크게 걱정할 필요는 없다.

 

2-1. 한 개의 비율 검정

문제 예시

한 개의 비율이 존재하는 예는 다음과 같다. 생산 라인 A의 양품 생산 확률이 70%임을 가정했을 때 실제로 생산 라인 A가 양품을 생산할 확률이 70%임을 검정한다. 이를 위해서 실제 데이터를 수집한 결과 150개의 제품 중 110 개의 제품이 양품으로 생산되었다. 

 

  • $H_0$ : 생산 라인 A의 양품 생산 확률은 70%로 기존의 사실과 동일하다. ($\hat p=p_0$)
  • $H_1$ : 생산 라인 A의 양품 생산 확률은 70%와 동일하지 않다. ($\hat p \ne p_0$)

 

p-value approach

$$z={{\hat p - p_O}\over \sqrt{{p_O(1-p_O)}\over n}}$$

 

  • $\hat p$ : 검정 대상이 되는 확률 p 이다. (현제 70%로 0.7).
  • $p_O$ : Object의 확률로 관측된 확률이다. (현제 150개 중 110개의 양품이 생산 되었으므로 73%로 0.73)
  • $n$ : 전체 관측 수 이다. (현제 총 관측 수는 150 이다).

 

위의 식을 통해 계산한 z-value와 z-distribution을 통해 검정을 할 수 있다.

P.S. 자유도는 1 이다.

 

2-2. 두 개의 비율 검정

문제 예시

두 개의 비율이 존재하는 예는 다음과 같다. 생산 라인 A는 총 170 개의 생산품 중 140 개의 양품을 생산 하였고, 생산 라인 B는 총 120 개의 생산품 중 100 개의 양품을 생산하였다. 생산 라인 A와 B의 양품 생산 비율은 동일한가?

 

  • $H_0$ : 생산 라인 A와 B의 양품 생산 비율은 동일하다. ($p_1 = p_2$)
  • $H_1$ : 생산 라인 A와 B의 양품 생산 비율은 동일하지 않다. ($p_1 \ne p_2$)

 

p-value approach

$$z={{\hat p_1-\hat p_2} \over \sqrt{ \hat p(1-\hat p)({1\over n_1}+{1\over n_2})}}$$

 

  • $\hat p_1$ : 생산 라인 A의 성공 비율이다.
  • $\hat p_2$ : 생산 라인 B의 성공 비율이다.
  • $\hat p$ : 결합 비율(combined proportion)로 다음과 같이 계산한다.
    • $\hat p={{x_1+x_2}\over {n_1+n_2}}$
      • $x_i$ : 생산 라인 A와 B의 양품 수 (140, 100)
      • $n_i$ : 생산 라인 A와 B의 전체 관측 수 (170, 120)
  • $n_1$ : 생산 라인 A의 전체 관측 수, 170
  • $n_2$ : 생산 라인 B의 전체 관측 수, 120

 

위의 식을 통해 게산한 z-value롸 z-distribution을 통해 검정을 할 수 있다.

P.S. 자유도는 1이다.

 

2-3. 세 개 이상의 비율 검정

문제 예시

세 개 이상의 예는 1-1의 예와 동일하다 다섯 개의 생산라인 A, B, C, D, E가 있을 때 다섯 개의 생산 라인 A, B, C, D, E의 양품 생산 비율이 동일한지 검정한다.

 

  • $H_0$ : 다섯 생산 라인의 양품 생산 비율은 동일하다. ($p_1=p_2=p_3=p_4=p_5$)
  • $H_1$ : 적어도 하나의 생산 라인의 비율은 동일하지 않다.

 

p-value approach, chi-square statistics

세 개 이상의 비율을 검정할 때에는 카이제곱 통계량을 사용한다.

$$\chi^2=\sum{{(O_{ij}-E_{ij})^2}\over {E_{ij}}}$$

 

  • $O$ : 분할표에 존재하는 실제 관측된 도수이다.
  • $E$ : 기대도수이다.
    • 기대도수 $E$는 카이제곱 독립성 검정, 카이제곱 적합성 검정, 비율 검정에서 계산하는 방법이 모두 다르다.
    • 비율 검정의 경우 전체 시도($n$)에 성공 비율($p$)과 실패 비율$(1-p)$을 각각 곱하여 구한다. 
      • 성공 비율을 곱한 경우 성공한 관측치에, 실패 비율을 곱한 경우 실패한 관측치에 적용한다.
  • 쉽게 설명하면 기존 카이제곱 통계량의 $E$와 다음과 같은 차이가 있다.
    • 기존 카이제곱 통계량에서 $E$는 도수를 기준으로 하기에 '행 총계'와 '열 총계'를 곱한 값을 $n$으로 나누어 준다.
      $$E_{ij}={{Total~row_i \times Total~column_j}\over {n}}$$
    • 비율 검정에서는 비율을 검정 대상으로 하기에 $n$으로 나누어 주는 것이 아니라 성공 비율($p$)과 실패 비율$(1-p)$을 각 도수에 곱한 뒤 더한다.

P.S. 

  • 세 개 이상의 비율을 검정할 때의 자유도는 전체 그룹 수(k)에서 1을 뺀 'k-1'이 된다.
  • 단, 검정하고자 하는 비율을 prop.test() 함수에 'p'인자를 통하여 명시할 경우 자유도는 전체 그룹 수(k)와 동일하다.
  • 해당 부분에 대해서는 후술하는 소스 코드를 통해 조금 더 구체적으로 확인할 수 있다.

3. 예이츠의 연속성 수정, Yates continuity correction

  • 예이츠의 연속성 수정(yates's continuity correction)이란 카이제곱 검정이 실제보다 큰 유의확률을 산출하는 경향을 보완하기 위해서 적용되는 방법이다.
  • 한 마디로 요약하면 카이제곱 검정이 제1종 오류를 범하는 경향을 완화한다. 즉, 귀무가설이 참임에도 대립가설을 수용하는 오류를 범하는 것을 완화한다.
  • 예이츠의 연속성 수정은 작은 크기의 데이터에서는 어느 정도 효과를 보이나 큰 크기의 데이터에서의 효과는 미미한 경향이 있다.
  • 단, 예이츠의 연속성 수정이 항상 효과적인가에 대해서는 논란의 여지가 존재한다. [Howell, 2006]. <앤디 필드의 유쾌한 R 통계학> 참조.
  • 예이츠의 연속성 수정의 식은 어렵지 않다. 기존의 카이제곱 통계량 식에서 '분자에 절댓값'을 취하고 '0.5'를 빼준다.

[Figure 4] Chi-square after Yates

 

P.S. 예이츠의 연속성 수정의 효과에 대해서는 논의가 필요하지만 R의 두 코드 prop.test()(비율 검정)와 chisq.test()(카이제곱 검정)에서는 option으로 적용할 수 있으며 후술하는 소스 코드를 이해하는 데에도 필요하기에 소개한다.


4. R의 prop.test() 함수의 소스 코드 이해

4-1. prop.test()

prop.test() 함수 인자 확인

prop.test <-
function(x, n, p = NULL, alternative = c("two.sided", "less", "greater"),
         conf.level = 0.95, correct = TRUE)
  • x : 실제 성공한 빈도이다. 셋 이상의 다중 범주의 비율을 검정할 경우 여러 비율 값을 갖는 벡터가 된다.
    • 예를 들어 다섯 개의 범주를 검정한다면 다섯 개의 범주에 대한 성공 빈도를 'x <- c(10, 22, 14, 30, 23)'로 벡터를 생성한 뒤 입력한다.
  • n : 전체 관측 빈도이다. 
    • x와 동일하게 여러 범주를 대상으로 할 경우 'n <- c(100, 120, 80, 90, 110)'과 같이 벡터를 생성하고 입력한다.
  • p : 비교 대상이 되는 비율이 된다. default는 null 값이다. 
    • 예를 들어 한 개의 '2-1. 한 개 범주의 비율 검정'을 할 경우 기저 비율을 설정한 뒤 기저 비율과 관측한 비율을 검정한다.
  • alternative : 양측검정과 단측검정을 설정한다.
  • conf.level = 0.95 : 신뢰구간 수준을 의미하며 우리가 검정한 유의 확률이 해당 구간에 포함된다면 귀무가설을 수용한다. ($1-\alpha$로 이해하면 쉽다).
  • correct : 예이츠의 연속성 수정 여부를 결정한다. TRUE로 설정하는 경우 예이츠의 연속성 수정을 적용한다.

P.S. 직관적으로 이해하기 힘들다면 후술하는 '실습 단계'에서 자세히 확인할 수 있다.

 

prop.test()의 중요 소스 코드 확인

하단의 코드는 깃헙에 존재하는 prop.test()의 소스 코드 원본의 마지막 부분을 복사해 온 코드이다. 후술되는 내용은 모두 해당 코드를 기반으로 설명된다.

    # 자유도 설정 코드
    if (is.null(p)) {
	p <- sum(x)/sum(n)
	PARAMETER <- k - 1
    }
    else {
	PARAMETER <- k
	names(NVAL) <- names(ESTIMATE)
    }
    names(PARAMETER) <- "df"
    # ------------------------------------- 구분선
    
    # chi-square statistics 계산을 위한 관측값(x)와 기대값(E) 설정
    x <- cbind(x, n - x)
    E <- cbind(n * p, n * (1 - p))
    if (any(E < 5))
	warning("Chi-squared approximation may be incorrect")
    # ------------------------------------- 구분선
    
    # chi-square statistics 계산 (with Yates. 단, correction 인자로 적용 여부 결정 가능)
    STATISTIC <- sum((abs(x - E) - YATES)^2 / E)
    names(STATISTIC) <- "X-squared"
    # ------------------------------------- 구분선

    # 비교 대상이 되는 범주의 수에 따라 각기 다른 검정
    # 비교 범주가 3 개 이상인 경우
    if (alternative == "two.sided")
	PVAL <- pchisq(STATISTIC, PARAMETER, lower.tail = FALSE)
    else {
    
    # 비교 범주가 1 개인 경우
	if (k == 1)
	    z <- sign(ESTIMATE - p) * sqrt(STATISTIC)
    
    # 비교 범주가 2 개인 경우
	else
	    z <- sign(DELTA) * sqrt(STATISTIC)
	PVAL <- pnorm(z, lower.tail = (alternative == "less"))
    }

 

 

4-2. z-statistic을 계산하지 않고 chi-square statistic만을 사용하는 이유

  • 결론부터 이야기하면 자유도가 1인 경우(df = 1) $(z-statistics)^2=chi-square~statistic$이 성립한다.
    else {
    # 한 개의 비율 검정
	if (k == 1)
	    z <- sign(ESTIMATE - p) * sqrt(STATISTIC)
	else
    # 두 개의 비율 검정
	    z <- sign(DELTA) * sqrt(STATISTIC)
	PVAL <- pnorm(z, lower.tail = (alternative == "less"))
    }
    
    # k : 범주의 수
    # z : z-statistic
    # STATISIC : chi-square statistic
    # ESTIMATE : 기대 비율
    # p : 실제 비율
    # DELTA : 두 비율의 차이
  • '2-1. 한 개의 비율 검정'과 '2-2. 두 개의 비율 검정'의 경우 자유도가 1 이다. 따라서 chi-square statistic에 루트를 적용하여 z-statistic을 구할 수 있다.
    • 한 개의 비율을 검정할 경우 검정 기준이 되는 비율($\hat p$)이 주어진다. 따라서 자유도는 1이 된다.
    • 두 개의 비율을 검정할 경우 두 개의 범주에 대한 비율의 검정이므로 자유도는 2-1=1이 된다.
  • 따라서 chi-square statistic인 'STATISTIC'에 루트를 적용한 'sqrt(STATISTIC)'을 통해 z-statistic을 구한다.
    • sign() 함수는 부호를 결정한다. 예를 들어 sign(양수)=1, sign(0)=0, sign(음수)=-1 이 출력된다.
    • z-statistic을 구하는 각 코드의 앞에 'sign(ESTIMATE - p)'와 'sign(DELTA)'가 붙는 이유는 다음과 같다.
    • chi-square statistic은 z-statistic의 제곱이다. 따라서 $(\pm z-statistic)^2=chi-square~statistic$이 성립한다. 즉, 음의 부호를 갖는 z-statistic을 고려해야 하기 때문에 부호를 적용한다.
  • 이처럼 따로 z-statistic을 구하는 식을 명시하지 않고 chi-square statistic만을 이용하면 코드를 단순화 하면서 검정을 수행할 수 있다는 장점이 있다.

 

4-3. 실제로 확인해 보기

이번 주제에서는 실제로 자유도가 1일 때 z-statistic의 제곱이 chi-squre statistic과 같음을 '2-1. 한 개의 비율 검정' 문제를 조금 변형한 예를 들어 확인한다. 문제는 다음과 같다.

 

한 개의 비율이 존재하는 예는 다음과 같다. 생산 라인 A의 양품 생산 확률이 70%임을 가정했을 때 실제로 생산 라인 A가 양품을 생산할 확률이 70%임을 검정한다. 이를 위해서 실제 데이터를 수집한 결과 100개의 제품 중 71 개의 제품이 양품으로 생산되었다. 

  • $H_0$ : 생산 라인 A의 양품 생산 확률은 70%로 기존의 사실과 동일하다. ($\hat p=p_0$)
  • $H_1$ : 생산 라인 A의 양품 생산 확률은 70%와 동일하지 않다. ($\hat p \ne p_0$)

 

확인하는 방법은 어렵지 않다. $z={{\hat p - p_O}\over \sqrt{{p_O(1-p_O)}\over n}}$을 제곱한 값이 prop.test()를 통해 얻은 'chi-squared' 값과 동일한지 확인하면 된다.

# 비율 검정 수행
# 예이츠 연속성 수정을 배제하여야 하기에 
# correct=FALSE로 설정한다.
prop.test(71, 100, 0.7, correct=FALSE)

# z-statisic 계산
n <- 100
p_hat <- 0.7
p_o <- 71/100
variance <- (p_o*(1-p_o))/n
(p_hat-p_o)/sqrt(variance)

[Figure 5] z-statistic과 chi-square statistic

 

결론적으로 $(-0.2203798)^2 = 0.0486$으로 X-squared = 0.0476에 근사하며 따라서 chi-square statistic을 통해 z-statistic을 계산하는 방법이 유효함을 확인할 수 있다.

 

P.S. 만약 'correct=TRUE'로 설정하여 예이츠의 연속성 수정을 적용하는 경우 X-squared의 값이 달라지기에 직접 확인을할 때에는 주의해야 한다.

 

4-4. 비율 검정에서의 관측값(O)과 기대 비율(E)

 

'2-3. 세 개 이상의 비율 검정'에서 비율 검정을 할 때에는 카이제곱 통계량을 활용하지만 계산에 들어가는 기대 비율 $E$ (상술에서는 기대 도수)를 구하는 방법이 다르다는 점을 언급하였다. 다시 한 번 정리하면 다음과 같다.

 

  • 카이제곱 검정 : $E_{ij}={{Total~row_i\times Total~column_j}\over n}$
    • 행의 총계와 열의 총계를 곱한 뒤 전체 관측치로 나눈다.
    • 쉽게 직관적으로 표현하면 다음과 같다.

[Figure 6] 행 총계(파란 박스)와 열 총계(빨간 박스)

 

  • 비율 검정 : 비율 검정에서는 전체 관측치에 성공 비율과 실패 비율을 각각 곱하여 벡터로 저장해 둔다. 
    • 이는 prop.test()의 소스 코드를 통해 확인이 가능하다.
E <- cbind(n * p, n * (1 - p))

# n : 전체 관측 수
# p : 성공 비율
# (1-p) : 실패 비율

5. R 코드 실습 | prop.test()

이번 주제에서는 '2. 비율의 개수에 따른 검정 방법의 차이'에서 다룬 예제들을 R 코드를 통해 직접 수행해 본다. 다시 함수와 인자들을 살펴보면 아래와 같다.

prop.test(
        x, 
        n, 
        p=NULL, 
        alternative=c("two.sided", "less", "greater"), 
        conf.level=0.95, 
        correct=TRUE
        )

# x : 관측된 성공 빈도 (양품 빈도, 고객 전환 빈도 등 이항분포에서의 1에 해당하는 빈도)
# n : 전체 관측수 (데이터의 전체 sample의 수)
# p : 기저 비율 (대표적으로 한 개의 비율을 검정할 때 비교할 기저 비율을 설정한다)
# alternative : 양측, 단측 검정과 검정 방향을 설정
# conf.level : 검정에 사용할 신뢰구간
# correct : 예이츠 연속성수정 적용 여부를 결정한다.

 

5-1. 한 개의 비율 검정

한 개의 비율이 존재하는 예는 다음과 같다. 생산 라인 A의 양품 생산 확률이 70%임을 가정했을 때 실제로 생산 라인 A가 양품을 생산할 확률이 70%임을 검정한다. 이를 위해서 실제 데이터를 수집한 결과 100개의 제품 중 71개의 제품이 양품으로 생산되었다. 

 

  • $H_0$ : 생산 라인 A의 양품 생산 확률은 70%로 기존의 사실과 동일하다. ($\hat p=p_0$)
  • $H_1$ : 생산 라인 A의 양품 생산 확률은 70%와 동일하지 않다. ($\hat p \ne p_0$)
prop.test(71, 100, 0.7)

[Figure 7] Result of prop.test() with one ratio

 

p-value는 0.9131로 유의하지 않다. 따라서 귀무가성을 수용한다. 즉, 생산 라인의 양품 생산 비율 70%와 실제 측정한 양품 생산 비율 $71\over 100$은 유의한 차이가 없다.

 

5-2. 두 개의 비율 검정

두 개의 비율이 존재하는 예는 다음과 같다. 생산 라인 A는 총 170 개의 생산품 중 140 개의 양품을 생산 하였고, 생산 라인 B는 총 120 개의 생산품 중 100 개의 양품을 생산하였다. 생산 라인 A와 B의 양품 생산 비율은 동일한가?

 

  • $H_0$ : 생산 라인 A와 B의 양품 생산 비율은 동일하다. ($p_1 = p_2$)
  • $H_1$ : 생산 라인 A와 B의 양품 생산 비율은 동일하지 않다. ($p_1 \ne p_2$)
# 두 생산 라인의 양품의 수
x <- c(140, 100)

# 두 생산 라인의 전체 생산 제품 수
n <- c(170, 120)

# 검정
prop.test(x, n)

 

[Figure 8] Result of prop.test() with two ratio

 

p-value는 0.9523으로 유의하지 않다. 따라서 귀무가설을 수용한다. 즉, 두 생산 라인의 양품 생산 비율은 통계적으로 유의한 차이가 없다.

 

5-3. 세 개 이상의 비율 검정

세 개 이상의 예는 1-1의 예와 동일하다 다섯 개의 생산라인 A, B, C, D, E가 있을 때 다섯 개의 생산 라인 A, B, C, D, E의 양품 생산 비율이 동일한지 검정한다.

 

  • $H_0$ : 다섯 생산 라인의 양품 생산 비율은 동일하다. ($p_1=p_2=p_3=p_4=p_5$)
  • $H_1$ : 적어도 하나의 생산 라인의 비율은 동일하지 않다.

[Figure 9] 하단의 비율을 검정한다

# 범주별 양품 빈도
x <- c(70, 24, 30, 88, 65)

# 전체 빈도
n <- c(100, 34, 31, 118, 89)

# 검정
prop.test(x, n)

 

[Figure 10] Result of prop.test() with five ratio

 

p-value는 0.04919로 (작은 차이이지만) 유의하다. 따라서 다섯 생산 라인의 양품 비율은 동일하지 않다는 대립가설을 수용한다. 

 

사후 검정 | pairwise.prop.test()

해당 예에서는 가장 대표적인 사후 검정 방법중 하나인 Holm의 방법을 사용한다. 이번 포스팅은 사후 검정을 주제로 하지 않기 때문에 간단하게 언급만 한 뒤 실습을 진행한다.

  • 사후 검정은 여러 범주의 통계적 검정 결과가 유의할 때 어느 범주 간에 유의한 차이가 있는지를 밝히기 위해 수행한다. 
  • 해당 포스팅에서는 일반적인 방법 중 하나인 Holm의 방법을 사용한다.
  • 사후 검정을 적용하는 방법 자체는 어렵지 않다. pairwise함수를 prop.test() 함수 앞에 적용하면 된다.
  • 차이가 있다면 어떤 방법을 사용할지 (현제의 예에서는 'holm') 명시해야 한다.
# 사후 검정
pairwise.prop.test(x, n, "holm")

[Figure 11] Result of post hoc test

 

다섯 개의 범주를 각 쌍별로 검정을 수행한 결과를 table로 출력한다. 현제는 사후 검정 결과 1번 범주와 3번 범주가 p-value = 0.048로 유의하기에 비율 검정의 결과가 유의하게 (p-value = 0.04919) 나오는 것을 확인할 수 있다.

 

P.S. Holm의 사후 검정은 p-value가 0.05가 아닌 더 작은 값을 설정한다. 이는 거듭되는 검정으로 인하여 제 2종 오류(귀무가설이 참이 아닌데 귀무가설을 수용하는 오류)가 발생할 가능성이 커지는 것을 방지하기 위해서이다. 자세한 내용은 사후 검정 포스팅에서 다룰 예정이다.


6. Reference