R의 가설 검정

Jesse John 2023년6월21일
  1. R에서 t 테스트
  2. R의 Wilcoxon 테스트
  3. R에서 페어링된 t 및 Wilcoxon 테스트
  4. R의 stats 패키지에 있는 다른 테스트
R의 가설 검정

R은 가설 검정을 수행하는 많은 기능을 제공합니다.

이 기사에서는 t 및 Wilcoxon 테스트를 수행하는 데 도움이 되는 두 가지 기능을 소개합니다. 또한 R에 내장된 다른 많은 테스트를 발견하는 방법도 살펴보겠습니다.

R에서 t 테스트

함수 t.test()는 학생의 t 테스트에 사용됩니다. 동일한 함수를 일표본 및 이표본 검정과 양측 검정 및 단측 검정에 사용할 수 있습니다.

주요 주장은 다음과 같습니다.

  1. x: 숫자 벡터.
  2. mu: 평균의 알려지지 않은 값 또는 평균의 알려지지 않은 차이.
  3. alternative: 단측 테스트의 경우 대체 가설에 대해 greater 또는 less를 지정해야 합니다.
  4. conf.level: 구간의 신뢰 수준입니다. 기본적으로 0.95 수준이 사용됩니다.

두 샘플 테스트의 경우 다음도 사용합니다.

  1. 공식: numeric_vector ~ two-factor_vector 형식입니다.
  2. 데이터: 이 데이터 프레임에는 공식에 언급된 변수가 포함되어야 합니다.
  3. var.equal: TRUE인 경우 풀링된 샘플에 대해 분산이 계산됩니다. FALSE(기본값)인 경우 Welch 근사값이 사용됩니다.

출력에는 다음이 포함됩니다.

  1. 표본 평균 주변의 주어진 신뢰 수준에서의 신뢰 구간.
  2. 샘플 평균이 주어지면 실제 평균이 지정된 값 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 테스트의 경우 데이터는 데이터 프레임 또는 행렬 형식이어야 합니다.

  1. 단일 숫자 벡터에 두 샘플이 모두 있어야 합니다.
  2. 샘플/그룹은 2요소 벡터를 사용하여 지정해야 합니다.
  3. 따라서 데이터 프레임 또는 행렬의 각 행에는 관찰과 그것이 속한 그룹이 포함됩니다.
  4. 요인이 첫 번째와 두 번째인지에 따라 인수 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 테스트

데이터가 쌍을 이루면 단위당 두 개의 관측값이 있습니다. 샘플의 쌍을 이룬 관찰 사이에 차이가 없거나 지정된 차이가 있다는 가설을 검정하기 위해 이러한 테스트의 쌍을 이룬 버전을 사용해야 합니다.

  1. 이러한 테스트에는 paired = TRUE 인수를 사용합니다.
  2. 데이터는 xy 인수에 대해 동일한 길이의 두 개의 개별 숫자 벡터로 제공되어야 합니다.

예제 코드:

# 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은 내장된 도움말을 통해 액세스할 수 있는 각 테스트 기능에 대한 문서와 예제를 제공합니다.

작가: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

관련 문장 - R Test