Menu

R의 t-검정: 일표본, 이표본, 대응표본 t.test()

t.test()로 일표본, 이표본, 대응표본 t-검정을 수행하고 - 정말 중요한 부분인 - 출력의 모든 줄을 읽어 보세요: t, 자유도, p값, 신뢰구간.

이 페이지에는 실행 가능한 에디터가 있습니다 - 편집하고 실행하면 결과를 바로 볼 수 있습니다.

t-검정이 묻는 것

모든 t-검정은 같은 근본 질문에 답합니다: 이 평균의 차이는 실재하는가, 아니면 잡음일 뿐인가? 표본은 흔들립니다 - 열 사람의 반응 시간을 두 번 측정하면 아무것도 바뀌지 않았어도 서로 다른 평균이 나옵니다. t-검정은 관측된 차이를 우연으로 기대되는 흔들림과 비교하고, 참 차이가 0이라면 여러분의 데이터가 얼마나 놀라운 것인지 보고합니다.

세 가지 갈래, 하나의 함수입니다:

  • 일표본 - 이 그룹의 평균이 고정된 값과 다른가?
  • 이표본 - 독립적인 이 두 그룹의 평균이 다른가?
  • 대응표본 - 같은 대상이 두 측정 사이에 변했는가?

일표본: t.test(x, mu = ...)

어떤 공정이 평균 5.0초여야 하고 열 번의 실행 시간을 측정했다고 합시다:

표본 평균은 5.61입니다 - 그런데 실행이 열 번뿐인데 목표보다 0.61 높은 것이 의미 있는 차이일까요, 아니면 정상적인 흔들림 범위일까요? 출력이 정확히 그것에 답합니다.

출력을 한 줄씩 읽기

여기가 값어치를 하는 절입니다 - 모든 t.test() 변형의 출력은 같은 모양이므로 한 번 읽는 법을 익혀 두세요. 위 블록을 실행하고 각 줄과 맞춰 보세요:

  • t = 4.26 - 검정통계량입니다: 관측된 차이(5.61 − 5 = 0.61)를 평균의 표준오차(약 0.143)로 나눈 값이죠. 표본 평균이 가설 값에서 표준오차 네 개 조금 넘게 떨어져 있다는 뜻입니다. |t|가 클수록 귀무가설 아래에서 더 놀라운 결과입니다.
  • df = 9 - 자유도이며 여기서는 n − 1입니다. 자유도가 작다는 것은 표본이 작다는 뜻이고, 그러면 검정이 감명받기 위해 더 큰 t를 요구합니다.
  • p-value ≈ 0.002 - 참 평균이 정말 5라면, 평균이 5에서 (양쪽 어느 방향으로든) 최소한 이만큼 떨어진 표본을 뽑을 확률이 약 0.2%라는 뜻입니다. 그것이 의미의 전부입니다. 참 평균이 5일 확률이 아니며, p값이 작다고 해서 여러분이 좋아하는 설명이 증명되는 것도 아닙니다 - 그저 "우연 탓으로 돌리기 어렵다"는 말일 뿐입니다. 통상적인 0.05 기준에서 여기서는 귀무가설을 기각합니다.
  • alternative hypothesis - "기각"이 무엇을 뜻하는지 다시 진술한 것입니다. not equal to 5는 이것이 양측 검정이었음을 확인해 줍니다.
  • 95 percent confidence interval: 5.29 to 5.93 - 데이터와 양립 가능한 참 평균의 범위입니다. 5가 그 바깥 에 있다는 점에 주목하세요 - p < 0.05와 같은 판정을 데이터 자체의 단위로 진술한 것이며, 동시에 p값이 결코 말해 주지 않는 효과의 그럴듯한 크기 도 알려 줍니다.
  • sample estimates - 관측된 평균입니다. 독자가 검정 대상인 원 사실을 볼 수 있게 해 줍니다.

각 부분이 프로그램으로 필요하다면 result <- t.test(times, mu = 5)result$p.value, result$conf.int, result$estimate를 쓰세요.

이표본: 독립 그룹 비교하기

독립적인 두 그룹이라면 수식 인터페이스가 질문 자체처럼 읽힙니다. ToothGrowth는 오렌지 주스(OJ)나 아스코르브산(VC)으로 비타민 C를 투여한 기니피그의 치아 성장을 기록합니다:

"supp로 나눈 len을 검정하라"로 읽으세요. 이제 출력에는 표본 추정치가 두 개 나타나고(그룹별 평균, 약 20.7 대 17.0), 신뢰구간은 둘 사이의 차이 에 대한 것입니다. 여기서 p ≈ 0.061이고 구간은 약 −0.17에서 7.57까지입니다: 0을 가로지르므로 0.05 수준에서 "차이 없음"을 배제할 수 없습니다 - 다만 구간이 +7.6까지 뻗어 있다는 사실은 차이가 없다고 선언하는 것도 경계하라고 경고합니다. "유의하지 않음"은 증명되지 않음 이지 없음이 증명됨 이 아닙니다.

Welch가 기본값이며, 그것은 좋은 일입니다

출력 머리글을 보세요: Welch Two Sample t-test이고 자유도가 소수입니다(약 55.3). 고전적인 Student t-검정은 두 그룹의 분산이 같다고 가정하지만, Welch 방식은 그 가정을 버리고 자유도를 조정해 보정합니다. 분산이 정말 같으면 Welch는 본질적으로 동일한 답을 주고, 다르면 Student 검정은 심하게 어긋날 수 있는 반면 Welch는 정직하게 남습니다. 그러니 R의 기본값이 안전한 선택이며, 이를 덮어쓸 이유는 거의 없습니다.

"먼저 등분산을 검정한 뒤 검정 방법을 고르라"는 사전 의식은 낡은 조언입니다. 그냥 Welch를 쓰세요.

대응표본: 전과 후

두 측정이 같은 대상에서 나온다면 그룹은 독립이 아니며, 독립으로 취급하면 검정력을 버리는 셈입니다. 여덟 사람의 교육 과정 전후 점수입니다:

paired = TRUE개인 내부 차이 의 평균을 검정합니다(여기서는 평균 2.75점, p ≈ 0.001). 짝짓기가 모든 것을 바꾸는 이유는 이렇습니다: 사람들 사이의 차이가 교육이 만든 변화보다 훨씬 크기 때문에, 65에서 80에 이르는 개인 간 산포가 대응시키지 않은 검정에서는 2–3점의 향상을 삼켜 버립니다. 차이를 취하면 각자의 기저값이 빠져나가고 변화만 남습니다. 규칙은 이렇습니다: 데이터에 "같은 단위를 두 번 측정한" 자연스러운 구조가 있다면 짝지으세요. (그리고 그룹이 진짜로 독립일 때는 절대 paired = TRUE를 쓰지 마세요 - 짝짓기가 허구가 됩니다.)

단측 검정: 조심해서 다루세요

기본적으로 검정은 양측입니다: 어느 방향의 차이든 증거로 셉니다. 만약 - 데이터를 보기 전에 - 여러분의 가설이 한쪽 방향으로만 말이 되었다면 그렇게 지정할 수 있습니다:

양측 검정에 비해 p값이 절반이 되는데, 바로 그래서 유혹이 생깁니다: 데이터를 훔쳐본 뒤에 단측으로 바꾸는 것은 p-해킹입니다. 진정으로 사전에 등록된 방향이 있을 때만 alternative = "greater""less"를 쓰고, 애매하면 양측을 유지하세요.

가정, 그리고 대안

t-검정은 관측이 독립적 이며 표본 평균이 근사적으로 정규분포를 따른다고 가정합니다 - 데이터 자체가 대체로 정규이거나 또는 표본이 충분히 클 때 성립합니다(중심극한정리가 무거운 일을 대신 해 줍니다. 그룹당 n ≈ 30 이상이면 어느 정도의 비정규성은 문제가 되지 않습니다). 형태는 간단한 히스토그램이나 상자그림으로 확인하세요. 다만 독립성은 어떤 검정으로도 구제할 수 없습니다 - 데이터를 어떻게 수집했느냐에서 나오니까요.

표본이 작고 데이터가 뚜렷하게 치우쳐 있거나 극단적 이상치가 있다면, 표준적인 비모수 대안은 한 줄입니다: wilcox.test(len ~ supp, data = ToothGrowth)는 평균 대신 순위로 분포를 비교합니다.

핵심 정리

  • 일표본에는 t.test(x, mu = ), 이표본에는 t.test(y ~ group, data = ), 전후 비교에는 paired = TRUE를 씁니다.
  • p값은 "참 차이가 0이라면 이 데이터가 얼마나 놀라운가"일 뿐입니다. 효과의 그럴듯한 크기는 신뢰구간이 실제 단위로 알려 줍니다.
  • R의 이표본 기본값은 Welch 검정(소수 자유도)입니다 - 그대로 두세요.
  • 짝짓기는 대상 간 잡음을 제거합니다. 같은 단위를 두 번 측정했다면 언제나 사용하세요.
  • 단측 대립가설은 사전에 확정한 방향이 있을 때만 쓰고, wilcox.test()가 순위 기반 대안입니다.

다음 주제: 세 개 이상 그룹의 평균을 한 번에 비교하기 - aov()로 하는 분산분석입니다.

자주 묻는 질문

R에서 t-검정은 어떻게 수행하나요?

t.test()를 사용합니다. 고정된 값과 비교하는 일표본: t.test(x, mu = 5). 독립적인 두 그룹: t.test(value ~ group, data = df). 같은 대상의 전후 측정: t.test(after, before, paired = TRUE).

R에서 t-검정의 p값은 어떻게 해석하나요?

참 차이가 0이라면 여러분이 본 것만큼 큰 차이가 나타날 확률입니다. p값이 작으면(관례적으로 0.05 미만) 데이터를 잡음으로 설명하기 어렵다는 뜻이므로 귀무가설을 기각합니다. 귀무가설이 참일 확률이 아니며, 차이가 얼마나 크거나 중요한지에 대해서도 아무것도 말하지 않습니다 - 그것은 신뢰구간을 보세요.

R은 왜 기본적으로 Welch t-검정을 보고하나요?

R의 이표본 t.test()는 두 그룹의 분산이 같다고 가정하지 않는 Welch 방식을 기본으로 씁니다 - 그래서 자유도가 소수로 나옵니다. Welch는 분산이 같을 때 고전적인 Student 검정과 거의 동일하게 동작하고 다를 때는 더 안전하므로 기본값이 올바른 선택입니다. 과제에서 고전적인 합동 분산 검정을 명시적으로 요구할 때만 var.equal = TRUE를 쓰세요.

R에서 대응표본 t-검정은 언제 써야 하나요?

두 측정 집합이 자연스러운 쌍을 이룰 때입니다 - 같은 대상을 전후로 측정했거나, 같은 항목을 두 방법으로 평가한 경우죠. t.test(after, before, paired = TRUE)는 쌍 내부 차이의 평균을 검정하므로 대상 간 변동을 제거해 주며, 그룹을 독립으로 취급할 때보다 대개 훨씬 큰 검정력을 얻습니다.

Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기