====== Aula de 15/06/2009 ======
===== Ilustração computacional de conceitos de inferência =====
==== Exemplo 1: Distribuição Amostral de uma proporção====
set.seed(37)
p <- runif(1)
n <- 1000
#p <- 0.025
#n <- 200
## retirando uma amostra de tamanho n e calculando a estimativa de p
am1 <- sample(c(0,1), size=n, prob=c(1-p, p), rep=T)
am1
p1 <- mean(am1)
p1
## IC (assintótico)
p1 + qnorm(c(0.025, 0.975))*sqrt(p1*(1-p1)/n)
## outra amostra...
am2 <- sample(c(0,1), size=n, prob=c(1-p, p), rep=T)
am2
p2 <- mean(am2)
p2
p2 + qnorm(c(0.025, 0.975))*sqrt(p2*(1-p2)/n)
## e mais uma amostra
am3 <- sample(c(0,1), size=n, prob=c(1-p, p), rep=T)
am3
p3 <- mean(am3)
p3
p3 + qnorm(c(0.025, 0.975))*sqrt(p3*(1-p3)/n)
## agora retirando 10,000 amostras de tamanho n
ams <- lapply(1:10000, function(x) sample(c(0,1), size=n, prob=c(1-p, p), rep=T))
## calculando as estimativas das proporções para cada uma das 10,000 amostras
p.sim <- sapply(ams, mean)
length(p.sim)
p.sim
summary(p.sim)
## comparando as distribuições empírica e teórica:
## histogramas das estimativas
hist(p.sim, prob=T)
lines(density(p.sim))
## distribuição amostral (teórica) do estimador
vals <- seq(0.48, 0.62, leng=200)
lines(vals, dnorm(vals, m=p, sd=sqrt(p*(1-p)/n)), col=2, lwd=2)
## "margem de erro" teórica
quantile(p.sim, prob=c(0.025, 0.975))
diff(quantile(p.sim, prob=c(0.025, 0.975)))/2
## IC's para todas as 10,000 amostras
ic.sim <- sapply(ams, function(x){p.est <- mean(x);
p.est + qnorm(c(0.025, 0.975))*sqrt(p.est*(1-p.est)/n)}
)
dim(ic.sim)
ic.sim[,1:8]
sum(ic.sim[1,] <= 0.5)
sum(ic.sim[2,] <= 0.5)
dentro <- apply(ic.sim, 2, function(x) (p> x[1] & p< x[2]))
mean(dentro)
## e qual mesmo é o valor de p verdadeiro?
p
abline(v=p, col=4, lwd=2)
######################################################
#### FIM DO EXEMPLO 1 ####
######################################################
==== Exemplo 2: teste de permutação como uma aproximação ou alternativa a expressões teóricas====
am1 <- c(6.6, 10.3, 10.8, 12.9, 9.2, 12.3, 7)
length(am1)
mean(am1)
am2 <- c(8.1, 9.8, 8.7, 10, 8.2, 8.7, 10.1)
length(am2)
mean(am2)
## comparação de variancias por simulação
var.q <- var(am2)/var(am1)
var.q
am1
am2
ams <- lapply(1:10000,
function(x) matrix(sample(c(am1, am2)), nc=2))
var.sim <- sapply(ams, function(x) var(x[,2])/var(x[,1]))
hist(var.sim, prob=T, ylim=c(0, 0.65))
abline(v=quantile(var.sim, c(0.025, 0.975)))
vals <- seq(0,40, l=200)
lines(vals, df(vals, df1=length(am2)-1, df2=length(am2)-1), col=2, lwd=2)
abline(v=var.q, col=4)
mu.dif <- mean(am2) - mean(am1)
mu.dif
mu.dif.sim <- sapply(ams, function(x) mean(x[,2])-mean(x[,1]))
hist(mu.dif.sim, prob=T)
vals <- seq(-6,6, l=200)
lines(vals, dt(vals, df=9.137), col=2, lwd=2)
abline(v=quantile(mu.dif.sim, prob=c(0.025, 0.975)))
abline(v=mu.dif, col=4)
## resultado usando uma função já pronta do R
t.test(am1, am2, alt="two", mu =0, pair=F, var.equal=F,
conf=0.95)
##