O objetivo do teste é que você deseja rejeitar sua hipótese nula, não confirmá-la. O fato de não haver diferença significativa não é de forma alguma uma prova da ausência de uma diferença significativa. Para isso, você precisará definir qual tamanho de efeito você considera razoável para rejeitar o nulo.
s l o p e - 1
set.seed(20); y = rnorm(20); x = y + rnorm(20, 0, 0.2)
model <- lm(y~x)
coefx <- coef(summary(model))[2,1]
seslope <- coef(summary(model))[2,2]
DF <- model$df.residual
# normal test
p <- (1 - pt(coefx/seslope,DF) )*2
# test whether different from 1
p2 <- (1 - pt(abs(coefx-1)/seslope,DF) )*2
Agora você deve estar ciente do fato de que o tamanho do efeito para o qual uma diferença se torna significativa é
> qt(0.975,DF)*seslope
[1] 0.08672358
desde que tenhamos um estimador decente do erro padrão na inclinação. Portanto, se você decidir que uma diferença significativa deve ser detectada apenas de 0,1, poderá calcular o DF necessário da seguinte maneira:
optimize(
function(x)abs(qt(0.975,x)*seslope - 0.1),
interval=c(5,500)
)
$minimum
[1] 6.2593
Veja bem, isso depende bastante da estimativa da inclinação. Para obter uma estimativa melhor do seslope, você pode fazer uma nova amostragem dos seus dados. Uma maneira ingênua seria:
n <- length(y)
seslope2 <-
mean(
replicate(n,{
id <- sample(seq.int(n),1)
model <- lm(y[-id]~x[-id])
coef(summary(model))[2,2]
})
)
colocando seslope2 na função de otimização, retorna:
$minimum
[1] 6.954609
Tudo isso lhe dirá que seu conjunto de dados retornará um resultado significativo mais rapidamente do que você julga necessário e que você precisará apenas de 7 graus de liberdade (neste caso, 9 observações) se quiser ter certeza de que não significativo significa o que você deseja. significa.