t- 검정의 t- 값에서 수동으로 P 값 계산


48

31 값의 샘플 데이터 세트가 있습니다. 실제 평균이 10과 같은지 테스트하기 위해 R을 사용하여 양측 t- 검정을 실행했습니다.

t.test(x=data, mu=10, conf.level=0.95)

산출:

t = 11.244, df = 30, p-value = 2.786e-12
alternative hypothesis: true mean is not equal to 10 
95 percent confidence interval:
 19.18980 23.26907 
sample estimates:
mean of x 
 21.22944 

이제 동일한 작업을 수동으로 수행하려고합니다.

t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data))) 
p.value = dt(t.value, df=length(lengths-1))

이 방법을 사용하여 계산 된 t- 값은 t- 검정 R 함수의 출력과 동일합니다. 그러나 p- 값은 3.025803e-12입니다.

내가 잘못하고있는 아이디어가 있습니까?

감사!

편집하다

내 데이터 세트를 포함한 전체 R 코드는 다음과 같습니다.

# Raw dataset -- 32 observations
data = c(21.75, 18.0875, 18.75, 23.5, 14.125, 16.75, 11.125, 11.125, 14.875, 15.5, 20.875,
            17.125, 19.075, 25.125, 27.75, 29.825, 17.825, 28.375, 22.625, 28.75, 27, 12.825, 
            26, 32.825, 25.375, 24.825, 25.825, 15.625, 26.825, 24.625, 26.625, 19.625)

# Student t-Test
t.test(x=data, mu=10, conf.level=0.95)

# Manually calculate p-value
t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data)))
p.value = dt(t.value, df=length(data) - 1)

답변:


43

사용 pt하고 양측으로 만듭니다.

> 2*pt(11.244, 30, lower=FALSE)
[1] 2.785806e-12

1
나는 누락 된 세부 사항이 있다고 생각합니다 : lower = F를 언제 사용해야합니까? -여기 내 질문을 참조하십시오 : stats.stackexchange.com/questions/133091/…
vonjd

3
값은 양수 여야하므로 음수 일 수있는 변수와 함께 사용할 경우 줄 바꿈하십시오 abs.
복직 자 Monica Monica

3
양측 검정의 경우 값이 -11.244보다 작거나 +11.244보다 클 확률을 찾고 있습니다. lower = F는 R에게 값이 첫 번째 매개 변수보다 큰 확률을 계산하도록 지시합니다. 그렇지 않으면 값이 첫 번째 매개 변수보다 작을 가능성이 있습니다. 따라서 2 * pt (-11.244, 30)를 수행 할 수도 있습니다. 개인적으로, R의 기본값은 lower = T이므로 일반적으로 2 * pt (-abs (q), df = n-1)를 수행합니다.
ashic

9

나는 이것을 주석으로 게시했지만 편집에 조금 더 추가하고 싶을 때 너무 길어서 여기로 옮겼습니다.

편집 : 테스트 통계 및 df가 정확합니다. 다른 답변은에 대한 호출에서 꼬리 영역 계산 pt()및 두 꼬리 두 배 의 문제로 문제 를 해결합니다. 그럼에도 불구하고 나는 이전의 토론 / 의견을 남길 것입니다. 극단적 인 꼬리에서 p- 값에 대해 더 일반적으로 관련있는 점을 제시하기 때문입니다.

잘못된 일을하고 여전히 차이를 얻을 수는 있지만 재현 가능한 예제를 게시하면 오류가 있는지 여부를 더 자세히 조사 할 수 있습니다 (df와 같이).

이러한 것들은 매우 극단적 인 꼬리에서 특히 정확하지 않을 수있는 근사치로부터 계산됩니다.

두 가지가 동일한 근사치를 사용하지 않으면 밀접하게 동의하지 않을 수도 있지만 동의가 부족한 것은 중요하지 않습니다 (정확한 꼬리 영역이 의미있는 숫자가 될 수 있기 위해서는 필요한 가정이 놀라운 정도를 유지해야합니다) 정확성). 정확한 정규성, 정확한 독립성, 정확히 일정한 분산이 있습니까?

2×1012×10120.0001


6

수동으로 계산하는 가장 좋은 방법은 다음과 같습니다.

t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data))) 
p.value = 2*pt(-abs(t.value), df=length(data)-1)

1


0

abs의견 과 함께 @Aaron이 제공 한 답변을 정말 좋아합니다 . 편리한 확인은 실행하는 것입니다.

pt(1.96, 1000000, lower.tail = F) * 2

어느 것이 생산 0.04999607됩니다.

여기서 우리는 정규 분포 하에서 면적의 95 %가 ~ 1.96 표준 편차에서 발생한다는 잘 알려진 속성을 사용하므로 ~ 0.05의 출력은 p- 값을 제공합니다. N이 크면 t 분포가 정규 분포와 거의 동일하기 때문에 1000000을 사용했습니다. 이것을 실행하면 @Aaron의 솔루션에서 편안함을 얻었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.