R의 가설 검정
R은 가설 검정을 수행하는 많은 기능을 제공합니다.
이 기사에서는 t
및 Wilcoxon 테스트를 수행하는 데 도움이 되는 두 가지 기능을 소개합니다. 또한 R에 내장된 다른 많은 테스트를 발견하는 방법도 살펴보겠습니다.
R에서 t
테스트
함수 t.test()
는 학생의 t
테스트에 사용됩니다. 동일한 함수를 일표본 및 이표본 검정과 양측 검정 및 단측 검정에 사용할 수 있습니다.
주요 주장은 다음과 같습니다.
x
: 숫자 벡터.mu
: 평균의 알려지지 않은 값 또는 평균의 알려지지 않은 차이.alternative
: 단측 테스트의 경우 대체 가설에 대해greater
또는less
를 지정해야 합니다.conf.level
: 구간의 신뢰 수준입니다. 기본적으로 0.95 수준이 사용됩니다.
두 샘플 테스트의 경우 다음도 사용합니다.
공식
:numeric_vector ~ two-factor_vector
형식입니다.데이터
: 이 데이터 프레임에는공식
에 언급된 변수가 포함되어야 합니다.var.equal
:TRUE
인 경우 풀링된 샘플에 대해 분산이 계산됩니다.FALSE
(기본값)인 경우 Welch 근사값이 사용됩니다.
출력에는 다음이 포함됩니다.
- 표본 평균 주변의 주어진 신뢰 수준에서의 신뢰 구간.
- 샘플 평균이 주어지면 실제 평균이 지정된 값
mu
일 확률을 나타내는p-값
.
R에서 일표본 양측 t
테스트
이제 샘플 데이터에 대해 단일 샘플 양측 t
테스트를 수행하고 출력을 살펴보겠습니다.
예제 코드:
# Data
# Population Mean = 8; Population SD = 3.
set.seed(3232)
one = rnorm(232,8,3)
# One-sample two-tailed t tests.
# mu is the correct value.
t.test(one, mu = 8)
# mu is some desired value.
# Let us check if mu is 10
t.test(one, mu = 10)
# Change the confidence level.
t.test(one, mu = 10, conf.level = 0.99)
출력:
> # One-sample two-tailed t tests.
> # mu is the correct value.
> t.test(one, mu = 8)
One Sample t-test
data: one
t = 0.59131, df = 231, p-value = 0.5549
alternative hypothesis: true mean is not equal to 8
95 percent confidence interval:
7.741578 8.480045
sample estimates:
mean of x
8.110811
> # mu is some desired value.
> # Let us check if mu is 10
> t.test(one, mu = 10)
One Sample t-test
data: one
t = -10.081, df = 231, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 10
95 percent confidence interval:
7.741578 8.480045
sample estimates:
mean of x
8.110811
mu
가 8이라는 가설을 테스트했을 때 첫 번째 경우에 매우 큰 p-값
을 얻었습니다. 우리는 귀무가설을 기각할 수 없습니다.
샘플 평균에 대한 신뢰 구간에는 mu
값이 포함됩니다.
두 번째 테스트에서 작은 p-값
은 mu
가 10일 확률이 매우 낮다는 것을 나타냅니다. 세 번째 사례는 신뢰 수준을 변경하기 위한 구문을 보여줍니다.
R의 일표본 단측 t
검정
단측 테스트의 경우 alternative
인수가 사용됩니다. 이것이 대안 가설입니다.
예제 코드:
# One-sample, one-tailed t test.
t.test(one, mu = 10, alternative = "less", conf.level = 0.99)
# Change mu
t.test(one, mu = 8.3, alternative = "less", conf.level = 0.99)
출력:
> # One-sample, one-tailed t test.
> t.test(one, mu = 10, alternative = "less", conf.level = 0.99)
One Sample t-test
data: one
t = -10.081, df = 231, p-value < 2.2e-16
alternative hypothesis: true mean is less than 10
99 percent confidence interval:
-Inf 8.549816
sample estimates:
mean of x
8.110811
> # Change mu
> t.test(one, mu = 8.3, alternative = "less", conf.level = 0.99)
One Sample t-test
data: one
t = -1.0095, df = 231, p-value = 0.1569
alternative hypothesis: true mean is less than 8.3
99 percent confidence interval:
-Inf 8.549816
sample estimates:
mean of x
8.110811
먼저 mu
가 10 이상이고 낮은 p-값
을 얻었다는 가설을 테스트했습니다.
두 번째 경우에서 mu
가 8.3 이상이라는 가설을 테스트했습니다. 이제 p-값
이 더 높아졌습니다.
R에서 두 샘플 t
테스트
두 샘플 t
테스트의 경우 데이터는 데이터 프레임 또는 행렬 형식이어야 합니다.
- 단일 숫자 벡터에 두 샘플이 모두 있어야 합니다.
- 샘플/그룹은 2요소 벡터를 사용하여 지정해야 합니다.
- 따라서 데이터 프레임 또는 행렬의 각 행에는 관찰과 그것이 속한 그룹이 포함됩니다.
- 요인이 첫 번째와 두 번째인지에 따라 인수
mu
에 대한 첫 번째 평균 빼기 두 번째 평균의 차이를 계산해야 합니다. 이건 매우 중요합니다.
먼저 두 표본의 평균이 같다는 가설을 검정합니다. 두 번째 테스트는 평균이 mu
에 따라 다른지 여부를 확인합니다.
예제 코드:
# Create vectors and data frame.
set.seed(6565)
two_a = rnorm(75, 8, 3.5)
set.seed(9898)
two_b = rnorm(65, 8.5, 3)
two = c(two_a, two_b)
ftr = c(rep("A",75), rep("B",65))
dtf = data.frame(DV = two, FV = ftr)
# Two-sample t test for no difference in means.
t.test(formula=DV~FV, data=dtf)
# Two-sample t test for a difference of mu between the means.
t.test(formula=DV~FV, data=dtf, mu=-1.5)
# Two-sample t test with pooled variance at 90 percent confidence interval.
t.test(formula=DV~FV, data=dtf, var.equal=TRUE, conf.level=0.9)
출력:
> # Two-sample t test for no difference in means.
> t.test(formula=DV~FV, data=dtf)
Welch Two Sample t-test
data: DV by FV
t = -2.2723, df = 137.16, p-value = 0.02462
alternative hypothesis: true difference in means between group A and group B is not equal to 0
95 percent confidence interval:
-2.3975526 -0.1663727
sample estimates:
mean in group A mean in group B
7.815221 9.097184
> # Two-sample t test for a difference of mu between the means.
> t.test(formula=DV~FV, data=dtf, mu=-1.5)
Welch Two Sample t-test
data: DV by FV
t = 0.38648, df = 137.16, p-value = 0.6997
alternative hypothesis: true difference in means between group A and group B is not equal to -1.5
95 percent confidence interval:
-2.3975526 -0.1663727
sample estimates:
mean in group A mean in group B
7.815221 9.097184
먼저 기본 두 표본 t
테스트인 Welch 테스트를 수행하고 평균의 차이가 0이라는 귀무 가설을 테스트했습니다. p-값
은 약 0.02입니다.
둘째, 평균의 차이가 -1.5인지 테스트했습니다.
세 번째 사례는 두 샘플의 분산이 동일하다고 가정하여 t
테스트의 구문을 보여줍니다.
R의 Wilcoxon 테스트
Wilcoxon 검정의 구문은 비슷합니다.
R의 일표본 양측 Wilcoxon 검정
인수 mu
는 우리가 테스트하는 귀무 가설에 따른 중앙값입니다.
예제 코드:
# Wilcoxon test.
# One-sample two-tailed test.
wilcox.test(one, mu=8)
# Try a different mu.
wilcox.test(one, mu=9, )
출력:
> wilcox.test(one, mu=8)
Wilcoxon signed rank test with continuity correction
data: one
V = 13992, p-value = 0.6408
alternative hypothesis: true location is not equal to 8
> # Try a different mu.
> wilcox.test(one, mu=9, )
Wilcoxon signed rank test with continuity correction
data: one
V = 8953, p-value = 8.341e-06
alternative hypothesis: true location is not equal to 9
첫 번째 경우 표본은 중앙값이 8이라는 귀무가설을 지지합니다.
두 번째 경우에는 매우 작은 p-값
을 얻습니다.
R의 2표본 Wilcoxon 검정
이를 Mann-Whitney 테스트라고도 합니다.
예제 코드:
# Test whether two locations differ by mu.
wilcox.test(formula=DV~FV, data=dtf, mu=-1.5)
wilcox.test(formula=DV~FV, data=dtf)
출력:
> # Test whether two two locations differ by mu.
> wilcox.test(formula=DV~FV, data=dtf, mu=-1.5)
Wilcoxon rank sum test with continuity correction
data: DV by FV
W = 2530, p-value = 0.7007
alternative hypothesis: true location shift is not equal to -1.5
> wilcox.test(formula=DV~FV, data=dtf)
Wilcoxon rank sum test with continuity correction
data: DV by FV
W = 1888, p-value = 0.0218
alternative hypothesis: true location shift is not equal to 0
첫 번째 경우에는 두 샘플의 위치가 -1.5만큼 다르다는 가설을 테스트했습니다. 큰 p-값
은 귀무 가설을 뒷받침합니다.
두 번째 사례에서 두 샘플이 동일한 위치에 있다는 가설을 테스트했습니다.
R에서 페어링된 t
및 Wilcoxon 테스트
데이터가 쌍을 이루면 단위당 두 개의 관측값이 있습니다. 샘플의 쌍을 이룬 관찰 사이에 차이가 없거나 지정된 차이가 있다는 가설을 검정하기 위해 이러한 테스트의 쌍을 이룬 버전을 사용해야 합니다.
- 이러한 테스트에는
paired = TRUE
인수를 사용합니다. - 데이터는
x
및y
인수에 대해 동일한 길이의 두 개의 개별 숫자 벡터로 제공되어야 합니다.
예제 코드:
# Data
set.seed(4455)
m = rnorm(92, 15, 3)
set.seed(7788)
n = rnorm(92, 14, 2.5)
# Paired t test. Testing for NO DIFFERENCE.
t.test(x=m, y=n, paired = TRUE)
# Paired Wilcoxon test.
wilcox.test(x=m, y=n, paired = TRUE, mu=1)
출력:
> # Paired t test. Testing for NO DIFFERENCE.
> t.test(x=m, y=n, paired = TRUE)
Paired t-test
data: m and n
t = 2.5187, df = 91, p-value = 0.01353
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
0.1962145 1.6605854
sample estimates:
mean of the differences
0.9283999
> # Paired Wilcoxon test.
> wilcox.test(x=m, y=n, paired = TRUE, mu=1)
Wilcoxon signed rank test with continuity correction
data: m and n
V = 1930, p-value = 0.4169
alternative hypothesis: true location shift is not equal to 1
쌍을 이룬 t
검정의 예에서 차이가 0이라는 귀무가설은 이 표본에서 뒷받침될 수 없습니다.
대응 Wilcoxon 테스트에서 차이가 1이라는 가설을 테스트했습니다. p-값
이 높은 것을 발견했습니다.
R의 stats
패키지에 있는 다른 테스트
R의 기본 설치에는 stats
패키지가 포함됩니다. 이 패키지는 샘플 통계에 대한 가설을 테스트하는 다른 많은 기능을 제공합니다.
아래 코드를 실행하여 패키지의 모든 함수 목록을 가져옵니다.
예제 코드:
library(help = "stats")
R은 내장된 도움말을 통해 액세스할 수 있는 각 테스트 기능에 대한 문서와 예제를 제공합니다.