Outro exemplo de teste com resultados possivelmente inconclusivos é um teste binomial para uma proporção quando apenas a proporção, e não o tamanho da amostra, está disponível. Isso não é completamente irrealista - geralmente vemos ou ouvimos afirmações mal relatadas da forma "73% das pessoas concordam que ..." e assim por diante, onde o denominador não está disponível.
H0 0: π= 0,5H1 1: π≠ 0,5α = 0,05
p = 5 %1 1195 %α = 0,05
p = 49 %
p = 50 %H0 0
p = 0 %p = 50 %p = 5 %p = 0 %p = 100 %p = 16 %Pr ( X≤ 3 ) ≈ 0,00221 < 0,025p = 17 %Pr ( X≤ 1 ) ≈ 0,109 > 0,025p =16 %p = 18 %Pr ( X≤ 2 ) ≈ 0,0327 > 0,025p = 19 %Pr ( X≤ 3 ) ≈ 0,0106 < 0,025
p = 24 %p = 13 %α = 0,05: os pontos abaixo da linha são inequivocamente significativos, mas os acima são inconclusivos. O padrão dos valores-p é tal que não haverá limites único inferior e superior na porcentagem observada para que os resultados sejam inequivocamente significativos.
Código R
# need rounding function that rounds 5 up
round2 = function(x, n) {
posneg = sign(x)
z = abs(x)*10^n
z = z + 0.5
z = trunc(z)
z = z/10^n
z*posneg
}
# make a results data frame for various trials and successes
results <- data.frame(successes = rep(0:100, 100),
trials = rep(1:100, each=101))
results <- subset(results, successes <= trials)
results$percentage <- round2(100*results$successes/results$trials, 0)
results$pvalue <- mapply(function(x,y) {
binom.test(x, y, p=0.5, alternative="two.sided")$p.value}, results$successes, results$trials)
# make a data frame for rounded percentages and identify which are unambiguously sig at alpha=0.05
leastsig <- sapply(0:100, function(n){
max(subset(results, percentage==n, select=pvalue))})
percentages <- data.frame(percentage=0:100, leastsig)
percentages$significant <- percentages$leastsig
subset(percentages, significant==TRUE)
# some interesting cases
subset(results, percentage==13) # inconclusive at alpha=0.05
subset(results, percentage==24) # unambiguously sig at alpha=0.05
# plot graph of greatest p-values, results below red line are unambiguously significant at alpha=0.05
plot(percentages$percentage, percentages$leastsig, panel.first = abline(v=seq(0,100,by=5), col='grey'),
pch=19, col="blue", xlab="Rounded percentage", ylab="Least significant two-sided p-value", xaxt="n")
axis(1, at = seq(0, 100, by = 10))
abline(h=0.05, col="red")
(O código de arredondamento é extraído desta pergunta StackOverflow .)