1 통계적 추정


1.1 점추정

표본에서 얻어지는 정보를 이용하여 모수와 같을 가능성이 가장 높은 한 값을 선택하는 것


1.2 구간추정

구간을 제시하여 모수를 추정하는 것으로 구간추정을 통해 얻어지는 구간을 신뢰구간이라 함

  • 모평균 = 표본평균 ± 구간너비
  • 구간너비 = 표본오차
  • 표본오차는 무엇으로 결정? 신뢰도, 표본수
  • 유의수준 (Significance level): 구간추정이 틀릴 확률(주로 5%, 10%, 1% 사용)
  • 신뢰도 (Confidence level) = 1 유의수준(주로 95%, 90%, 99% 사용)


“성인 남자의 키 평균은 0.5m~3m임을 100% 신뢰도로 주장할 수 있다.”
“성인 남자의 키 평균은 1.6m~1.8m임을 95% 신뢰도로 주장할 수 있다.”


1.3 모평균의 1-α 신뢰구간





𝛼; 유의수준, 𝑠; 표본 표준편차, 𝑛; 표본 수


1.4 사례: 대한민국 연령대별 여성 키 95% 신뢰구간


아래 표는 대한민국 여성 키의 평균, 표준편차 정보를 담고 있습니다.




2017년에 19~24세, 60~64세 여성을 각각 100명씩 무작위 추출했다고 가정하고 이들의 키에 대한 95% 신뢰구간을 각각 구하세요.


이 경우 각각 모집단에 표준편차 정보가 있으므로 이를 활용해서 정규분포 상에서 신뢰구간을 구합니다.


m_19 <- 161.6; sd_19 <- 5.49; m_60 <- 155.7; sd_60 <- 4.84; n <- 100; alpha <- 0.05

error_19 <- qnorm(1-alpha/2)*sd_19/sqrt(n)
low_19 <- m_19-error_19; up_19 <- m_19+error_19

error_60 <- qnorm(1-alpha/2)*sd_60/sqrt(n)
low_60 <- m_60-error_60; up_60 <- m_60+error_60

print(paste("19~24세 여성 키의 ",(1-alpha)*100,"% 신뢰구간은 ",round(low_19,2),"~",round(up_19,2),"입니다."))
## [1] "19~24세 여성 키의  95 % 신뢰구간은  160.52 ~ 162.68 입니다."
print(paste("60~64세 여성 키의 ",(1-alpha)*100,"% 신뢰구간은 ",round(low_60,2),"~",round(up_60,2),"입니다."))
## [1] "60~64세 여성 키의  95 % 신뢰구간은  154.75 ~ 156.65 입니다."


2017년에 65세 이상 여성을 100명 무작위 추출했다고 가정하고 이들 키에 대한 95% 신뢰구간을 구하세요.


이 경우 모집단 표준편차 값을 알 수 없으므로 100명을 무작위 추출하여 표본 표준편차값을 이용하고 t-분포 상에서 신뢰구간을 구합니다.


set.seed(4)
data_65 <- rnorm(n=100, mean=153.7, sd=4.63) # 2013년 65세+ 정보 활용 100명 표본 샘플링
m_65 <- mean(data_65) ; sd_65 <- sd(data_65) ; n <- length(data_65) ; alpha <- 0.05

error_65 <- qt(1-alpha/2,df=n-1)*sd_65/sqrt(n)
low_65 <- m_65-error_65; up_65 <- m_65+error_65

print(paste("65세+ 여성 키의 ",(1-alpha)*100,"% 신뢰구간은 ",round(low_65,2),"~",round(up_65,2),"입니다."))
## [1] "65세+ 여성 키의  95 % 신뢰구간은  153.31 ~ 154.99 입니다."


1.5 모비율의 1-α 신뢰구간







시장선거에 대한 유권자 여론조사에 의하면 A후보의 지지도가 40%였다고 한다. 표본의 크기는 1000이라고 할 때 A후보를 지지하는 유권자의 모비율에 대한 95% 신뢰구간은?


p <- 0.4 ; n <- 1000
error <- qnorm(1-alpha/2)*sqrt(p*(1-p)/n)
low <- p-error; up <- p+error

print(paste("A후보 지지율의 ",(1-alpha)*100,"% 신뢰구간은 ",round(low*100,2),"% ~",round(up*100,2),"% 입니다."))
## [1] "A후보 지지율의  95 % 신뢰구간은  36.96 % ~ 43.04 % 입니다."


2 통계적 검정



2.1 통계적 검정의 목적 및 프로세스


2.1.1 통계적 검정의 목적

주장하는 가설 입증

2.1.2 통계적 검정 프로세스

① 연구목적에 맞는 대립가설 설정
② 연구목적과 수집된 자료에 부합되는 적절한 통계적 검정 방법을 선택
③ 대립가설과 귀무가설 명시
④ 유의수준을 결정한 후 각 분포유형에 따라 역함수를 이용하여 임계치 구하고 기각역 설정
⑤ 통계적 검정유형에 필요한 통계량을 각 검정유형의 공식을 이용하여 계산
⑥ 임계치와 통계량을 비교하여 귀무가설 기각과 수용 결정
⑦ 검정 결과에 따라 대립가설 입증 여부 판단



2.2 모수 통계의 전제조건


아래 세 조건 중 하나라도 충족되지 않으면 비 모수 통계 사용

  • 표본의 모집단이 정규분포를 따른다
  • 집단내의 분산은 같다
  • 변수는 등간척도 또는 비율척도이다





2.2.1 정규성 검정(Normality Test)


많은 통계 분석 방법에서 자료가 정규분포를 따른다는 가정 하에 검정 통계량과 p-value를 계산합니다.
만약 실제 자료가 정규성 가정을 만족하지 않는다면 통계 분석 결과에 대한 타당성이 떨어지기 때문에 분석을 하기 전에 정규성 가정이 만족되는지 검토하는 것이 바람직합니다.

정규성 가정(Tests for Normality)을 검토하는 방법으로는 다음 세 가지가 있습니다.

  • Q-Q plot
  • 샤피로-윌크 검정 (Shapiro-Wilk test)
  • 콜모고로프-스미노프 검정 (Kolmogorov-Smirnov test)


2.2.1.1 Q-Q plot



그래프를 그려서 정규성 가정이 만족되는지 시각적으로 확인하는 방법입니다.
Q-Q plot은 아래와 같이 대각선 참조선을 따라서 값들이 분포하게 되면 정규성을 만족한다고 할 수 있습니다. 만약 한 쪽으로 치우치거나 직선과 차이가 많이 나는 모습이라면 정규성 가정에 위배되었다고 볼 수 있습니다.

R 내장 데이터인 Nile 데이터로 Q-Q plot을 그려본 결과 정규성을 다소 벗어나 보입니다.

qqnorm(Nile) # normal Q-Q plot
qqline(Nile,col=2) # Normal line



2.2.1.2 샤피로-윌크 검정 (Shapiro-Wilk test)



오차항이 정규분포를 따르는지 알아보는 검정으로, 회귀분석에서 모든 독립변수에 대해서 종속변수가 정규분포를 따르는지 알아보는 방법입니다.
귀무가설은 ‘H0:정규분포를 따른다’는 것으로 p-value가 0.05보다 크면 정규성을 가정할 수 있습니다.

Nile 데이터의 결과는 p값이 0.05보다 작으므로 Nile 데이터는 정규분포를 따르지 않는다고 판단됩니다.

shapiro.test(Nile)
## 
##  Shapiro-Wilk normality test
## 
## data:  Nile
## W = 0.97343, p-value = 0.04072



2.2.1.3 콜모고로프-스미노프 검정 (Kolmogorov-Smirnov test)



EDF, 즉 Empirical distribution function에 기반한 적합도 검정 방법입니다.
자료의 평균/표준편차와 히스토그램을 표준정규분포와 비교하여 적합도를 검정합니다.
Shapiro-Wilk test와 마찬가지로 p-value가 0.05보다 크면 정규성을 가정하게 된다.

Nile 결과를 보면 p값이 0.05보다 작으므로 정규분포를 따르지 않는다.

library(nortest)
lillie.test(Nile)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  Nile
## D = 0.095957, p-value = 0.02399



2.2.2 두 집단간 등분산 검정: F-검정


F 검정은 두 실험군의 데이터 모집단 분산이 동일한지 여부를 검정하는 방법입니다.
두 실험군의 모집단은 정규 분포를 따라야 합니다.

  • H1 : 이분산
  • H0 : 등분산

p값 > 0.05이면 등분산으로 판단합니다.


학생들의 영어, 수학 점수 데이터인 ’em_score.xlsx’를 불러다가 정규성 검사와 등분산 검사를 수행하겠습니다.
shpiro test 결과를 보면 두 점수 데이터 모두 정규성을 따르고 있습니다.
F test 결과 p값이 0.05보다 작으므로 이분산이라고 보면 될 것 같습니다.

library(readxl)
em_score <- read_excel("em_score.xlsx", sheet = "Sheet2")
str(em_score)
## tibble [40 x 4] (S3: tbl_df/tbl/data.frame)
##  $ no     : num [1:40] 1 2 3 4 5 6 7 8 9 10 ...
##  $ math   : num [1:40] 67 75 74 76 90 72 62 77 59 64 ...
##  $ english: num [1:40] 77 84 77 83 78 90 75 86 76 80 ...
##  $ gender : num [1:40] 1 0 1 1 0 0 0 1 1 0 ...
shapiro.test(em_score$math)
## 
##  Shapiro-Wilk normality test
## 
## data:  em_score$math
## W = 0.98866, p-value = 0.9543
shapiro.test(em_score$english)
## 
##  Shapiro-Wilk normality test
## 
## data:  em_score$english
## W = 0.97934, p-value = 0.6649
var.test(em_score$math,em_score$english)
## 
##  F test to compare two variances
## 
## data:  em_score$math and em_score$english
## F = 3.476, num df = 39, denom df = 39, p-value = 0.0001761
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  1.838479 6.572228
## sample estimates:
## ratio of variances 
##           3.476047



3 단일 표본 검정



3.1 단일 표본 기술통계 및 검정







3.2 단일 표본 z-검정


평균이 \(𝜇\)이고 분산 \(𝜎^2\)인 정규분포에서 랜덤으로 \(𝑛\)개의 표본을 얻었을 때, ‘모평균이 \(𝝁_𝟎\)와 같지 않다/크다/작다’에 관한 모평균의 검정

\(𝐻_1: 𝜇>𝜇_0\) or \(𝜇<𝜇_0\) or \(𝜇≠𝜇_0\)
\(𝐻_0: 𝜇=𝜇_0\)

예시: 대한민국 50~54세 남자 30명을 무작위로 표본추출했을 때 신뢰도 95%에서 키의 평균이 169cm보다 크다고 할 수 있는지 판단하세요. (2017년 기준, 대한민국 50~54세 키 평균 170.2cm, 표준편차 5.78cm)

library(BSDA)
## Loading required package: lattice
## 
## Attaching package: 'BSDA'
## The following object is masked from 'package:datasets':
## 
##     Orange
library(lattice)

# z.test(x, y = NULL, alternative = "two.sided", mu = 0, sigma.x = NULL, sigma.y = NULL, conf.level = 0.95)

set.seed(100)
height_50 <- rnorm(n=30, mean=170.2, sd=5.78)

z.test(height_50, alternative = "greater", mu=169, sigma.x = 5.78, conf.level = 0.95 )
## 
##  One-sample z-Test
## 
## data:  height_50
## z = 1.2952, p-value = 0.09762
## alternative hypothesis: true mean is greater than 169
## 95 percent confidence interval:
##  168.6311       NA
## sample estimates:
## mean of x 
##  170.3668


p값이 0.05보다 크므로 169cm보다 크다고 할 수 없습니다.

3.3 단일 표본 t-검정


정규분포에서 랜덤으로 𝑛개의 표본을 얻었을 때, ‘모평균이 \(𝝁_𝟎\)와 같지 않다/크다/작다’에 관한 모평균의 검정. 모집단의 분산을 모르는 경우 t-검정을 수행합니다.


\(𝐻_1: 𝜇>𝜇_0\) or \(𝜇<𝜇_0\) or \(𝜇≠𝜇_0\)
\(𝐻_0: 𝜇=𝜇_0\)

예시: 대한민국 65세 이상 남자 50명을 무작위로 표본 추출했을 때 신뢰도 95%에서 키의 평균이 163cm보다 크다고 할 수 있는지 판단하세요.

library(readr)
set.seed(100)
h_65 <- c(162,166,165,170,166,167,162,169,161,163,166,166,164,169,166,165,163,168,160,178,163,169,167,169,161,163,
161,166,159,166,165,175,164,164,161,164,166,167,171,170,165,173,155,169,162,172,163,172,165,155)
shapiro.test(as.numeric(h_65))
## 
##  Shapiro-Wilk normality test
## 
## data:  as.numeric(h_65)
## W = 0.97758, p-value = 0.455
t.test(h_65,alternative = "greater",mu=163,conf.level = 0.95)
## 
##  One Sample t-test
## 
## data:  h_65
## t = 4.0347, df = 49, p-value = 9.556e-05
## alternative hypothesis: true mean is greater than 163
## 95 percent confidence interval:
##  164.4962      Inf
## sample estimates:
## mean of x 
##    165.56


p값이 0.05보다 작으므로 163cm보다 크다고 할 수 있습니다.

3.4 단일표본 Wilcoxon signed Rank test


데이터가 정규성을 충족하지 않거나 서열형 데이터일 때 , ‘모평균이 \(𝝁_𝟎\)와 같지 않다/크다/작다’에 관한 모평균의 검정.


\(𝐻_1: 𝜇>𝜇_0\) or \(𝜇<𝜇_0\) or \(𝜇≠𝜇_0\)
\(𝐻_0: 𝜇=𝜇_0\)

예시: 다이어트 식품 제조사의 단백질 상품에는 6g의 단백질이 들어있다고 광고하고 있습니다. 이 때 20개의 제품의 함량을 조사한 결과 데이터로 95% 신뢰수준에서 6g을 주장할 수 있는지 판단하세요.

library(readxl)
p <- read_excel("protein.xlsx")
str(p)
## tibble [20 x 2] (S3: tbl_df/tbl/data.frame)
##  $ no     : num [1:20] 1 2 3 4 5 6 7 8 9 10 ...
##  $ protein: num [1:20] 5.8 5.7 6.5 5.6 5.4 5.8 5.7 5.8 5.3 5.8 ...
shapiro.test(p$protein)
## 
##  Shapiro-Wilk normality test
## 
## data:  p$protein
## W = 0.89571, p-value = 0.03429
wilcox.test(p$protein, mu=6, alternative = "two.sided", conf.int=T, conf.level=0.95,exact = F)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  p$protein
## V = 15.5, p-value = 0.000841
## alternative hypothesis: true location is not equal to 6
## 95 percent confidence interval:
##  5.400034 5.750055
## sample estimates:
## (pseudo)median 
##       5.699955


p값이 0.05보다 작으므로 6g이 아니라고 판단할 수 있습니다.


3.5 단일표본 Wilcoxon signed Rank test (서열 척도)


예시: 광고안 5개를 보여주고 순위를 매기는 조사를 시행했습니다. 이 때 광고A의 순위 데이터 20개를 가지고 95% 신뢰수준에서 2위 보다 좋은 순위를 받았다고 주장할 수 있는지 판단하세요.

library(readxl)
r <- read_excel("rank.xlsx")
shapiro.test(r$rank)
## 
##  Shapiro-Wilk normality test
## 
## data:  r$rank
## W = 0.67936, p-value = 2.207e-05
wilcox.test(r$rank, mu=2, alternative = "less", conf.int=T, conf.level=0.95,exact = F)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  r$rank
## V = 32, p-value = 0.02087
## alternative hypothesis: true location is less than 2
## 95 percent confidence interval:
##      -Inf 1.999932
## sample estimates:
## (pseudo)median 
##       1.000063


서열 척도이므로 윌콕슨 테스트를 수행한 결과 p값이 0.05보다 작으므로 2위 보다 좋은 순위를 받았다고 할 수 있습니다.

3.6 단일표본 binomial test


자료가 범주형(categorical)인 경우, 기술 통계는 흔히 비율의 형태로 표현됩니다. 이 비율을 가지고 가설검증을 해야하는 경우가 있습니다.

\(𝐻_1: 𝑝>𝑝_0\) or \(𝑝<𝑝_0\) or \(𝑝≠𝑝_0\)
\(𝐻_0:𝑝=𝑝_0\)

예시: 동전 던지기를 100번 해서 앞면이 45번 나왔습니다. 이 경우 앞면 나올 확률이 0.5인지 신뢰도 95%에서 판단하세요.

binom.test(45,100,p=0.5, alternative = "two.sided",conf.level = 0.95)
## 
##  Exact binomial test
## 
## data:  45 and 100
## number of successes = 45, number of trials = 100, p-value = 0.3682
## alternative hypothesis: true probability of success is not equal to 0.5
## 95 percent confidence interval:
##  0.3503202 0.5527198
## sample estimates:
## probability of success 
##                   0.45


p값이 0.05보다 크므로 동전의 앞면 확률이 0.5라고 판단됩니다.

3.7 단일표본 proportion test


정규분포를 따르는 단일 모집단에서 충분히 큰 규모로 임의로 표본을 추출하여 표본비율을 분석하여 미지의 모수인 모비율에 대한 검정을 하기 위해 사용합니다.

\(𝐻_1: 𝑝>𝑝_0\) or \(𝑝<𝑝_0\) or \(𝑝≠𝑝_0\)
\(𝐻_0:𝑝=𝑝_0\)

예시: 동전 던지기를 1000번 해서 앞면이 450번 나왔습니다. 이경우 앞면 나올 확률이 0.5인지 신뢰도 95%에서 판단하세요.

prop.test(450,1000,p = 0.5, alternative = 'two.sided', conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  450 out of 1000, null probability 0.5
## X-squared = 9.801, df = 1, p-value = 0.001744
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4189204 0.4814685
## sample estimates:
##    p 
## 0.45


p값이 0.05보다 작으므로 동전의 앞면 확률이 0.5가 아니라고 판단됩니다.

4 두 표본 검정


4.1 상황별 두 표본 검정 선택






4.2 두표본 z-검정


\(𝑁(𝜇_1, 𝜎_1^2 ), 𝑁(𝜇_2, 𝜎_2^2 )\) 정규분포를 따르는 모집단에서 2개의 표본을 추출했을 때, ‘\(𝜇_1\)\(𝜇_2\)와 같지않다/크다/작다’에 관한 모평균의 검정 \(𝐻_1:𝜇_1>𝜇_2\) or \(𝜇_1<𝜇_2\) or \(𝜇_1≠𝜇_2\)
\(𝐻_0:𝜇_1=𝜇_2\)

예시: 대한민국 50~54세 남자 50명, 19~24세 50명을 무작위로 표본추출했을 때 신뢰도 95%에서 50~54세 키의 평균이 19~24세 키의 평균 보다 작다고 할 수 있는지 판단하세요. (2017년 기준 50~54세 키 평균 170.2cm, 표준편차 5.78cm, 19~24세 키 평균 174.3cm, 표준편차 5.68cm)

library(BSDA)
library(lattice)

set.seed(55)
x <- rnorm(n=50, mean=170.2, sd=5.78)
y <- rnorm(n=50, mean=174.3, sd=5.68)

z.test(x,y,alternative="less",sigma.x=5.78,sigma.y=5.68,conf.level=.95)
## 
##  Two-sample z-Test
## 
## data:  x and y
## z = -2.7694, p-value = 0.002808
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##         NA -1.288731
## sample estimates:
## mean of x mean of y 
##  170.4882  173.6620


p값이 0.05보다 작으므로 50~54세 키가 19~24세 키 보다 작다고 할 수 있습니다.

4.3 등분산 두 표본 t-검정


정규분포를 따르고 분산이 같은 두 집단에서 2개의 표본을 추출했을 때, ‘\(𝜇_1\)\(𝜇_2\)와 같지않다/크다/작다’에 관한 모평균의 검정 (정규성, 등분산)

\(𝐻_1:𝜇_1>𝜇_2\) or \(𝜇_1<𝜇_2\) or \(𝜇_1≠𝜇_2\)
\(𝐻_0:𝜇_1=𝜇_2\)

예시: mtcars 데이터에서 기어의 형태(자동,수동)에 따른 연비를 찾고 자동 기어의 평균 연비가 수동 기어의 평균 연비에 비해 신뢰도 95%에서 낮은지 판단하세요.

str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
summary(mtcars$mpg)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   10.40   15.43   19.20   20.09   22.80   33.90
x <- mtcars[mtcars$am==1,1]  # 수동
y <- mtcars[mtcars$am==0,1]  # 자동

length(x); length(y)
## [1] 13
## [1] 19
# 정규성 검정
shapiro.test(x); shapiro.test(y)
## 
##  Shapiro-Wilk normality test
## 
## data:  x
## W = 0.9458, p-value = 0.5363
## 
##  Shapiro-Wilk normality test
## 
## data:  y
## W = 0.97677, p-value = 0.8987
# 등분산 검정
var.test(x,y)
## 
##  F test to compare two variances
## 
## data:  x and y
## F = 2.5869, num df = 12, denom df = 18, p-value = 0.06691
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.934280 8.040391
## sample estimates:
## ratio of variances 
##           2.586911
# t-test
t.test(y,x, paired = FALSE, alternative="less", var.equal = TRUE, conf.level = 0.95)
## 
##  Two Sample t-test
## 
## data:  y and x
## t = -4.1061, df = 30, p-value = 0.0001425
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##       -Inf -4.250255
## sample estimates:
## mean of x mean of y 
##  17.14737  24.39231


t-test p값이 0.05보다 작으므로 낮다고 할 수 있습니다.

4.4 이분산 두 표본 t-검정(Welch t-test)


정규분포를 따르고 분산이 같지 않은 두 집단에서 2개의 표본을 추출했을 때,
, ‘\(𝜇_1\)\(𝜇_2\)와 같지않다/크다/작다’에 관한 모평균의 검정 (정규성, 이분산)

\(𝐻_1:𝜇_1>𝜇_2\) or \(𝜇_1<𝜇_2\) or \(𝜇_1≠𝜇_2\)
\(𝐻_0:𝜇_1=𝜇_2\)

예시: mtcars 데이터에서 엔진의 형태(V-shaped,straight)에 따른 마력을 찾고 V-shaped 엔진의 평균 마력이 straight 엔진의 평균 마력에 비해 신뢰도 95%에서 높은지 판단하세요.

x1 <- mtcars[mtcars$vs==1,4] # straight  
y1 <- mtcars[mtcars$vs==0,4] # V-shaped

shapiro.test(x1); shapiro.test(y1) # 정규성 검정
## 
##  Shapiro-Wilk normality test
## 
## data:  x1
## W = 0.89932, p-value = 0.1102
## 
##  Shapiro-Wilk normality test
## 
## data:  y1
## W = 0.9578, p-value = 0.5598
var.test(x1,y1) # 등분산 검정
## 
##  F test to compare two variances
## 
## data:  x1 and y1
## F = 0.16417, num df = 13, denom df = 17, p-value = 0.002002
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.0589191 0.4931365
## sample estimates:
## ratio of variances 
##          0.1641657
# t-test
t.test(y1, x1, paired = F, alternative="greater", var.equal = F, conf.level = 0.95)
## 
##  Welch Two Sample t-test
## 
## data:  y1 and x1
## t = 6.2908, df = 23.561, p-value = 9.099e-07
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  71.5933     Inf
## sample estimates:
## mean of x mean of y 
## 189.72222  91.35714


t-test p값이 0.05보다 작으므로 높다고 할 수 있습니다.

4.5 두 표본 Wilcoxon Rank sum test


데이터가 정규성을 충족하지 않거나 서열형 데이터일 때 두 집단의 평균 ‘\(𝜇_1\)\(𝜇_2\)와 같지않다/크다/작다’에 관한 모평균의 검정 (정규성, 이분산)

\(𝐻_1:𝜇_1>𝜇_2\) or \(𝜇_1<𝜇_2\) or \(𝜇_1≠𝜇_2\)
\(𝐻_0:𝜇_1=𝜇_2\)

예시: Cars93 데이터에서 생산지(미국산,비미국산)에 따른 가격 데이터를 근거로 생산지에 따른 가격 차이가 있는지 신뢰도 95%에서 판단하세요.

library(MASS)

# ?Cars93
a <- subset(Cars93$Price,Cars93$Origin=="USA")
b <- subset(Cars93$Price,Cars93$Origin=="non-USA")

qqnorm(a) # normal Q-Q plot
qqline(a,col=2) # Normal line

shapiro.test(a)
## 
##  Shapiro-Wilk normality test
## 
## data:  a
## W = 0.88411, p-value = 0.0002006
qqnorm(b) # normal Q-Q plot
qqline(b,col=2) # Normal line

shapiro.test(b)
## 
##  Shapiro-Wilk normality test
## 
## data:  b
## W = 0.87756, p-value = 0.0002036
summary(b)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    8.00   11.60   19.10   20.51   26.70   61.90
summary(a)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    7.40   13.47   16.30   18.57   20.73   40.10
wilcox.test(a,b,exact = F, alternative = c("two.sided"), conf.int = T, conf.level = 0.95)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  a and b
## W = 1024.5, p-value = 0.6724
## alternative hypothesis: true location shift is not equal to 0
## 95 percent confidence interval:
##  -4.399986  2.599967
## sample estimates:
## difference in location 
##             -0.7000468


p값이 0.05보다 크므로 차이가 없다고 판단됩니다.

4.6 두 표본 Wilcoxon Rank sum test (서열 척도)



예시: 광고안 5개를 보여주고 순위를 매기는 조사를 시행했습니다. 이 때 광고A가 광고B 보다 95% 신뢰수준에서 좋은 순위를 받았다고 주장할 수 있는지 판단하세요.

library(readxl)
rank <- read_excel("rank.xlsx", sheet = "two")

shapiro.test(rank$A); shapiro.test(rank$B) # 정규성
## 
##  Shapiro-Wilk normality test
## 
## data:  rank$A
## W = 0.67936, p-value = 2.207e-05
## 
##  Shapiro-Wilk normality test
## 
## data:  rank$B
## W = 0.74089, p-value = 0.0001284
wilcox.test(rank$A, rank$B, alternative = "less", conf.int=T, conf.level=0.95,exact = F)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  rank$A and rank$B
## W = 130, p-value = 0.02041
## alternative hypothesis: true location shift is less than 0
## 95 percent confidence interval:
##           -Inf -9.477129e-07
## sample estimates:
## difference in location 
##             -0.9999886


p값이 0.05보다 작으므로 광고A가 좋은 평가를 받았다고 판단됩니다.

4.7 chi-square test for large samples (명목 척도)


자료가 명목 척도(nominal)인 경우, 각 셀 별 빈도가 모두 5 이상인 경우 두 집단의 분포가 같은지, 다른지를 검정해야 하는 경우 카이스퀘어 검정으로 판단할 수 있다.
\(𝐻_1\): 분포가 같지 않다
\(𝐻_0\): 분포가 같다


예시: Titanic data를 근거로 남녀 간 생존율의 차이가 있는지 확인하세요.

library(carData)
## 
## Attaching package: 'carData'
## The following objects are masked from 'package:BSDA':
## 
##     Vocab, Wool
str(TitanicSurvival)
## 'data.frame':    1309 obs. of  4 variables:
##  $ survived      : Factor w/ 2 levels "no","yes": 2 2 1 1 1 2 2 1 2 1 ...
##  $ sex           : Factor w/ 2 levels "female","male": 1 2 1 2 1 2 1 2 1 2 ...
##  $ age           : num  29 0.917 2 30 25 ...
##  $ passengerClass: Factor w/ 3 levels "1st","2nd","3rd": 1 1 1 1 1 1 1 1 1 1 ...
table(TitanicSurvival$sex)
## 
## female   male 
##    466    843
table(TitanicSurvival$survived)
## 
##  no yes 
## 809 500
tab <- table(TitanicSurvival$sex,TitanicSurvival$survived)
chisq.test(tab)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tab
## X-squared = 363.62, df = 1, p-value < 2.2e-16


chisquare-test p값이 0.05보다 작으므로 남녀 생존률 차이가 있다고 판단됩니다.

4.8 Fisher’s test (명목 척도)


자료가 명목 척도(nominal)인 경우, 각 셀 별 빈도가 5 이하인 경우가 20%가 넘는 경우 두 집단의 분포가 같은지, 다른지를 검정해야 하는 경우 Fisher’s test 로 판단할 수 있다. Odds ration=1이면 두집단 분포 차이가 없다고 판단한다.

\(𝐻_1: 𝑂𝑑𝑑𝑠 𝑟𝑎𝑡𝑖𝑜 ≠1\)
\(𝐻_0: 𝑂𝑑𝑑𝑠 𝑟𝑎𝑡𝑖𝑜=1\)


예시: # 라면을 끓일 때 면 먼저 넣고 끓인 것과 스프 먼저 넣고 끓인 것의 맛 차이가 있다고 주장하는 사람이 있어 블라인드 테스트를 진행했습니다. 자기가 좋아하는 순서의 라면이 좋다고 한 경우를 Yes, 못 맞혔을 때 No일 때 구분 능력이 있는지 판단하세요.

library(readxl)
noodle_soup <- read_excel("noodle_soup.xlsx", sheet = "noodle_soup")

tab2 <- table(noodle_soup$fact,noodle_soup$guess_soup)

#Fisher's exact test
fisher.test(tab2, alternative = "two.sided")
## 
##  Fisher's Exact Test for Count Data
## 
## data:  tab2
## p-value = 0.04056
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##    0.9040436 953.3729037
## sample estimates:
## odds ratio 
##   13.95942


p값이 0.05보다 작으므로 구분능력이 없다고 판단됩니다.

4.9 쌍체비교 두 표본 t-검정(paired two sample t-test)


정규분포를 따르는 쌍체 비교에서, ‘\(𝜇_1\)\(𝜇_2\)와 같지않다/크다/작다’에 관한 모평균의 검정

\(𝐻_1:𝜇_1>𝜇_2\) or \(𝜇_1<𝜇_2\) or \(𝜇_1≠𝜇_2\)
\(𝐻_0:𝜇_1=𝜇_2\)


예시: Membership 가입 전, 가입 후의 구매금액 데이터를 근거로 가입 후 구매금액이 가입 전 보다 높은지 95% 신뢰도에서 판단하세요.

library(readxl)
bf <- read_excel("before_after_sales.xlsx", sheet = "sales")
x <- bf$before
y <- bf$after
shapiro.test(x)
## 
##  Shapiro-Wilk normality test
## 
## data:  x
## W = 0.99236, p-value = 0.8466
shapiro.test(y)
## 
##  Shapiro-Wilk normality test
## 
## data:  y
## W = 0.99218, p-value = 0.8339
# t-test
t.test(x, y, paired = T, alternative="less", conf.level = 0.95)
## 
##  Paired t-test
## 
## data:  x and y
## t = -6.4554, df = 99, p-value = 2.014e-09
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##       -Inf -6.734136
## sample estimates:
## mean of the differences 
##                  -9.066


p값이 0.05보다 작으므로 가입후가 가입전 보다 구매금액이 크다고 판단됩니다.

4.10 쌍체비교 두 표본 Wilcoxon signed Rank test


쌍체 비교에서 정규성이 없는 경우\(𝜇_1\)\(𝜇_2\)와 같지않다/크다/작다’에 관한 모평균의 검정

\(𝐻_1:𝜇_1>𝜇_2\) or \(𝜇_1<𝜇_2\) or \(𝜇_1≠𝜇_2\)
\(𝐻_0:𝜇_1=𝜇_2\)


예시: # 신제품 A와 기존제품 B에 대한 선호도 36명의 타겟고객 대상으로 실시한 설문 데이터를 근거로 신제품 A가 기존제품 B 보다 선호도가 높다고 판단할 수 있는지 95% 신뢰도에서 판단하세요.

library(readxl)
p <- read_excel("newp_preference.xlsx", sheet = "Data")

shapiro.test(p$신제품A)
## 
##  Shapiro-Wilk normality test
## 
## data:  p$신제품A
## W = 0.76591, p-value = 3.667e-06
shapiro.test(p$기존제품B)
## 
##  Shapiro-Wilk normality test
## 
## data:  p$기존제품B
## W = 0.81253, p-value = 2.917e-05
# wilcox signed rank test
wilcox.test(p$신제품A, p$기존제품B, alternative = c("greater"), paired = TRUE, conf.level = 0.95, conf.int=T, exact=F)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  p$신제품A and p$기존제품B
## V = 326, p-value = 0.02498
## alternative hypothesis: true location shift is greater than 0
## 95 percent confidence interval:
##  5.827244e-05          Inf
## sample estimates:
## (pseudo)median 
##      0.5000303


p값이 0.05보다 작으므로 신제품A의 선호도가 높다고 판단됩니다.

4.11 쌍체비교 명목 척도 검정(McNemar’s test)


명목 척도의 쌍체 비교에서, 비율 차이가 있는지 없는지에 대한 검정

\(𝐻_1:비율 차이가 있다\)
\(𝐻_0: 비율 차이가 없다\)


예시: 치료약 복용 전 후의 질병 유무를 100명의 자원자 대상 조사한 결과를 근거로 치료약의 효과가 있는지 95% 신뢰수준에서 판단하세요.

library(readxl)
dbf <- read_excel("before_after_comparision.xlsx", sheet = "bf_comp")
tab3 <- table(dbf$before,dbf$after); tab3
##          
##           absent present
##   absent      43      10
##   present     23      24
mcnemar.test(tab3)
## 
##  McNemar's Chi-squared test with continuity correction
## 
## data:  tab3
## McNemar's chi-squared = 4.3636, df = 1, p-value = 0.03671


p값이 0.05보다 작으므로 치료약의 효과가 있다고 판단됩니다.