I test di ipotesi per dati di grandi dimensioni dovrebbero tenere conto del livello di differenza desiderato, piuttosto che se vi sia o meno una differenza. Non ti interessa H0 che la stima sia esattamente 0. Un approccio generale sarebbe quello di verificare se la differenza tra l'ipotesi nulla e il valore osservato sia maggiore di un dato valore di cut-off.
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)
HAX1¯−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)
Che dà :
> 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