Büyük veriler için hipotez testi, bir fark olup olmadığı yerine, istenen fark seviyesini dikkate almalıdır. Tahminin tam olarak 0 olduğu H0 ile ilgilenmiyorsunuz. Genel bir yaklaşım, boş hipotez ile gözlenen değer arasındaki farkın verilen bir kesme değerinden daha büyük olup olmadığını test etmek olacaktır.
X1¯> X2¯
T= X1¯- X2¯- δS2n---√+ δS2n---√≈ N( δS2n---√, 1 )
T= X1¯- X2¯S2n---√≈ N( δS2n---√, 1 )
'H0: X1¯- X2¯= δ
X1¯- X2¯- δS2n---√≈ N( 0 , 1 )
'HbirX1¯- X2¯> δ
mod.test <- function(x1,x2,dif,...){
avg.x1 <- mean(x1)
avg.x2 <- mean(x2)
sd.x1 <- sd(x1)
sd.x2 <- sd(x2)
sd.comb <- sqrt((sd.x1^2+sd.x2^2)/2)
n <- length(x1)
t.val <- (abs(avg.x1-avg.x2))*sqrt(n)/sd.comb
ncp <- (dif*sqrt(n)/sd.comb)
p.val <- pt(t.val,n-1,ncp=ncp,lower.tail=FALSE)
return(p.val)
}
n <- 5000
test1 <- replicate(100,
t.test(rnorm(n),rnorm(n,0.05))$p.value)
table(test1<0.05)
test2 <- replicate(100,
t.test(rnorm(n),rnorm(n,0.5))$p.value)
table(test2<0.05)
test3 <- replicate(100,
mod.test(rnorm(n),rnorm(n,0.05),dif=0.3))
table(test3<0.05)
test4 <- replicate(100,
mod.test(rnorm(n),rnorm(n,0.5),dif=0.3))
table(test4<0.05)
Hangi verir:
> table(test1<0.05)
FALSE TRUE
24 76
> table(test2<0.05)
TRUE
100
> table(test3<0.05)
FALSE
100
> table(test4<0.05)
TRUE
100