원시 데이터 대신 샘플 통계를 입력하여 R에서 2- 표본 t- 검정을 수행하는 방법은 무엇입니까?


32

아래에 주어진 통계가 있다고 가정 해 봅시다.

gender mean sd n
f 1.666667 0.5773503 3
m 4.500000 0.5773503 4

실제 데이터가 아닌 이와 같은 통계를 사용하여 2- 표본 t- 검정을 수행하는 방법 (일부 변수의 남녀 평균간에 유의 한 차이가 있는지 확인)은 무엇입니까?

인터넷 어디에서 나이 작업을 수행하는 방법을 찾을 수 없었습니다. 대부분의 학습서 및 매뉴얼까지도 실제 데이터 세트 만 사용하여 테스트를 처리합니다.


2
이 Wikipedia 기사 와 R의 t- 분포 함수에 대한 도움말 페이지 ( ?pt특히 by ) pt()는이 작업을 수행하는 데 필요한 모든 정보를 가지고 있습니다. 그리고 당신이 그렇게하면 통계와 R에 대해 많이 배울 것입니다.
Josh O'Brien

2
여기에 이미 좋은 답변이 있으며 실제로 직접 함수를 작성하는 것은 매우 쉬운 일입니다. 그러나 제공 하는 요약 데이터에서 t- 검정 (2 개의 샘플, Welch 또는 등분 산 및 1 개의 샘플)을 구현하는 BSDAtsum.test 패키지 의 기능을 살펴볼 수 있다고 덧붙 입니다. 기본적으로 바닐라 R의 t- 테스트와 같지만 요약 정보는 작동합니다.
Glen_b-복지 주 모니카

1
솔직히 말해서, 나는 선생님을 프로그램하는 법을 배울 때 항상 "바퀴를 다시 발명하지 마십시오"라고 말했습니다. 따라서, 가장 논리적 인 기능이 될 것이다 tsum.test()으로부터 BSDA library@Nick 콕스에 의해 명시된 바와 같이. @macro가 코드 라인에서 작성한 것과 정확히 동일한 기능을 수행합니다. 질문이 R에서 t- 검정 통계량을 계산하기위한 배경 계산에 대한 이해는 무엇입니까? 그러면 Marco가 더 적합 할 것입니다. 본인은 전문가의 배경과 관련된 개인적인 의견을 말하면서 다른 사람을 화나게하지 않습니다. 그 어떤 깔끔 @marco 그리고 :) 코딩
tcratius

답변:


37

우리는 2- 표본 -test 의 역학에 대해 알고있는 것에 기초하여 자신의 함수를 작성할 수 있습니다 . 예를 들어, 다음 작업을 수행합니다.

# m1, m2: the sample means
# s1, s2: the sample standard deviations
# n1, n2: the same sizes
# m0: the null value for the difference in means to be tested for. Default is 0. 
# equal.variance: whether or not to assume equal variance. Default is FALSE. 
t.test2 <- function(m1,m2,s1,s2,n1,n2,m0=0,equal.variance=FALSE)
{
    if( equal.variance==FALSE ) 
    {
        se <- sqrt( (s1^2/n1) + (s2^2/n2) )
        # welch-satterthwaite df
        df <- ( (s1^2/n1 + s2^2/n2)^2 )/( (s1^2/n1)^2/(n1-1) + (s2^2/n2)^2/(n2-1) )
    } else
    {
        # pooled standard deviation, scaled by the sample sizes
        se <- sqrt( (1/n1 + 1/n2) * ((n1-1)*s1^2 + (n2-1)*s2^2)/(n1+n2-2) ) 
        df <- n1+n2-2
    }      
    t <- (m1-m2-m0)/se 
    dat <- c(m1-m2, se, t, 2*pt(-abs(t),df))    
    names(dat) <- c("Difference of means", "Std Error", "t", "p-value")
    return(dat) 
}
x1 = rnorm(100)
x2 = rnorm(200) 
# you'll find this output agrees with that of t.test when you input x1,x2
t.test2( mean(x1), mean(x2), sd(x1), sd(x2), 100, 200)
Difference of means       Std Error               t         p-value 
        -0.05692268      0.12192273     -0.46687500      0.64113442 

1
편집 을 비교 t.test거부있어, 그래서 여기에 확인하는 몇 가지 코드입니다 :(tt2 <- t.test2(mean(x1), mean(x2), sd(x1), sd(x2), length(x1), length(x2))); (tt <- t.test(x1, x2)); tt$statistic == tt2[["t"]]; tt$p.value == tt2[["p-value"]]
최대 Ghenis

20

당신은 그냥 손으로 계산 :

=(평균에프평균)예상되는 차이에스이자형  에스이자형=에스에프2에프+에스2  어디에,    에프=+에프2

예상되는 차이는 아마도 0입니다.

p- 값을 원하면 간단히 pt()함수 를 사용하십시오 .

pt(t, df)

따라서 코드를 정리하면 다음과 같습니다.

> p = pt((((1.666667 - 4.500000) - 0)/sqrt(0.5773503/3 + 0.5773503/4)), (3 + 4 - 2))
> p
[1] 0.002272053

이것은 동일한 표준 편차를 가지기 때문에 동일한 분산을 가정합니다.


몇 가지 :이 "어떻게 R"에? 검정 통계량의 분포는 무엇입니까 (즉,이 값에서 어떻게 이동 합니까)?
매크로

이 경우 제공된 자유도는 올바르지 않습니다! 동일하지 않은 분산을 가정하는 풀링되지 않은 분산을 사용합니다. 따라서 Scatterwaite Approximation을 사용하면 자유도가 더 정확합니다.
lzstat

7

웹 페이지에서 책의 수식을 기반으로 계산을 수행하거나 속성이 명시된 임의의 데이터를 생성 mvrnorm하고 ( MASS패키지 의 함수 참조 ) t.test시뮬레이션 된 데이터 에서 일반 함수를 사용할 수 있습니다.


"속성이 명시된 임의의 데이터를 생성 할 수 있습니다"라고 말하면 모집단 평균 및 표준 편차가 표본 값과 동일한 데이터를 시뮬레이션하거나 표본 평균 및 표준 편차가 사전 평균과 같다는 제약 조건에서 시뮬레이션하는 것을 의미합니까? 지정된 값?
매크로

2
시뮬레이션 된 데이터가 문제에 언급 된 것과 정확히 동일한 평균 및 변수를 갖기를 원합니다. 이 작업을 수행하는 한 가지 방법 (다른 방법이 많이 있음)은 패키지 의 mvrnorm함수 를 사용하는 것입니다 MASS(경험적 인수를 TRUE로 설정해야 함).
Greg Snow

2

이 질문은 R에 관한 것이지만 다른 통계 소프트웨어에서는 문제가 발생할 수 있습니다. 예를 들어 Stata에는 요약 통계만으로 계산할 수있는 다양한 즉시 명령이 있습니다. 여기에 적용되는 명령 의 특정 경우에 대해서는 http://www.stata.com/manuals13/rttest.pdf 를 참조 ttesti하십시오.

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