t-test

31 개의 값이있는 샘플 데이터 세트가 있습니다. R을 사용하여 양측 t- 테스트를 실행하여 실제 평균이 10인지 테스트했습니다.

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-test 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) 

Answer

두 꼬리로 만듭니다.

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

댓글

  • I 누락 된 세부 사항이 있다고 생각하십시오. 언제 lower = F를 사용해야합니까? -여기에서 내 질문을 참조하십시오. stats.stackexchange.com/questions/133091/ …
  • 값은 양수 여야하므로 음수 일 수있는 변수와 함께 사용하는 경우 abs로 래핑합니다.
  • 양수 테스트의 경우 ' 값이 -11.244보다 작거나 +11.244보다 클 확률을 찾습니다. lower = F는 R에게 값이 첫 번째 매개 변수보다 클 확률을 계산하도록 지시합니다. 그렇지 않으면 값이 첫 번째 매개 변수보다 작을 확률을 제공합니다. 따라서 2 * pt (-11.244, 30)를 수행 할 수도 있습니다. 개인적으로 R은 기본적으로 lower = T로 설정되므로 일반적으로 2 * pt (-abs (q), df = n-1)을 수행합니다.

Answer

댓글로 게시했는데 편집에 조금 더 추가하고 싶을 때 너무 길어 져서 여기로 옮겼습니다.

편집 : 테스트 통계 및 df가 정확합니다. 다른 답변은 pt() 및 두 꼬리에 대한 두 배로 차이를 해결합니다. 그럼에도 불구하고 극단적 인 꼬리의 p- 값에 대한 관련 포인트를보다 일반적으로 만들기 때문에 이전 논의 / 댓글을 남길 것입니다.

아무것도 잘못하지 않고 여전히 차이가있을 수 있지만 재현 가능한 예제를 게시하면 오류가 있는지 자세히 조사 할 수 있습니다 (예 : df).

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

두 가지가 동일한 근사치를 사용하지 않으면 밀접하게 일치하지 않을 수 있지만 일치의 부족은 중요하지 않습니다. 놀라운 정확도를 유지해야합니다). 당신은 정말로 정확한 정규성, 정확한 독립성, 정확히 일정한 분산을 가지고 있습니까?

어쨌든 숫자가 의미하는 바가없는 곳에서 반드시 큰 정확성을 기 대해서는 안됩니다. 계산 된 근사 p- 값이 $ 2 \ times 10 ^ {-12} $ 또는 $ 3 \ times 10 ^ {-12} $이면 어느 정도까지 중요합니까? 두 수치 모두 실제 상황의 실제 p- 값을 측정하지 않습니다. 숫자 중 하나가 실제 상황의 실제 p- 값을 나타내더라도 약 $ 0.0001 $ 미만이되면 그 값이 실제로 무엇인지 왜 신경 쓰겠습니까?

답변

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

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

abs () 함수는 그렇지 않으면 p- 값이 $ 1 $보다 커질 위험이 있기 때문입니다 (데이터의 평균이 주어진 평균보다 클 때)!

답변

@Aaron이 제공 한 답변과 abs 댓글이 정말 마음에 듭니다. 편리한 확인은

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

를 실행하여 0.04999607를 생성하는 것입니다.

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

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다