# R code from vignette source 'cap04inferencia.Rnw' # Encoding: UTF-8 #=========================================================================================== # code chunk number 1: cap04inferencia.Rnw:3-4 #=========================================================================================== options(prompt=" ", continue=" ") #=========================================================================================== # code chunk number 2: cap04inferencia.Rnw:18-113 (eval = FALSE) #=========================================================================================== . #------------------------------------------------------------------------------------------ # quantos testes o R têm? apropos("test") # funções que possuem a palavra "test" no nome #------------------------------------------------------------------------------------------ # para a média de uma população normal x <- rnorm(30, mean=8, sd=2.2) t.test(x, mu=7) #------------------------------------------------------------------------------------------ # para uma proporção (germinação amostral) germ <- 82 # germinação observada na amostra prop.test(germ, 100, p=0.90) # testa se a germinação é 0.9 em 100 ensaios #------------------------------------------------------------------------------------------ # teste para a igualdade de duas médias de dados normais cA <- c(7.8, 6.7, 8, 7, 6.1, 7.7, 7.1, 6.6, 8.9, 5.3, 6.9, 7.9) cB <- c(4.6, 5.7, 4.5, 5.5, 5, 3.8, 3.3, 6, 3.5, 5.1, 4.2, 4.3) t.test(cA, cB, var=TRUE) # especifica as variâncias são iguais t.test(cA, cB, var=FALSE) # aproximação de Welch para variâncias diferentes #------------------------------------------------------------------------------------------ # teste para igualdade de duas variâncias de dados normais var.test(cA, cB) help(bartlett.test) # usado após anova #------------------------------------------------------------------------------------------ # teste para a normalidade de uma amostra (deve ter única média é variância) shapiro.test(x) #------------------------------------------------------------------------------------------ # teste para aderência de dados à qualquer distribuição ks.test(scale(x), "pnorm") ks.test(x, "pnorm", mean=mean(x), sd=sd(x)) #------------------------------------------------------------------------------------------ # teste para correlação entre duas variáveis normais (assume-se 1 média para cada) #agr <- read.table("http://www.leg.ufpr.br/~walmes/cursoR/cnpaf/agreg.txt", header=TRUE, sep="\t") area5 <- agr$area[agr$profundidade==5] roun5 <- agr$roundness[agr$profundidade==5] plot(area5, roun5) cor.test(area5, roun5) #------------------------------------------------------------------------------------------ # teste de aderência de qui-quadrado (os acidentes de trabalho ocorrem uniforme na semana?) ac <- c(seg=32, ter=40, qua=20, qui=25, sex=33) mosaicplot(ac) chisq.test(ac) #------------------------------------------------------------------------------------------ # outro teste de aderência, será que esses dados tem distribuição normal? beta? qqnorm(roun5); qqline(roun5) plot(density(roun5)); rug(roun5) #------------------------------------------------------------------------------------------ # se forem beta, quais são os parâmetros? (obtive esses parâmetros via maximização da f.v.) plot(density(roun5)); rug(roun5) curve(dbeta(x, shape1=18.4, shape2=3.4), col="red", add=TRUE) #------------------------------------------------------------------------------------------ # teste para a normal e para a beta (ver função MASS::fitdistr()) ks.test(roun5, "pnorm", mean=mean(roun5), sd=sd(roun5)) ks.test(roun5, "pbeta", shape1=18.4, shape2=3.4) #------------------------------------------------------------------------------------------ # visualização gráfica das distribuições plot(ecdf(roun5), pch=NULL, cex=0.2) rug(roun5) curve(pnorm(x, mean(roun5), sd(roun5)), add=TRUE, col=2) curve(pbeta(x, shape1=18.4, shape2=3.4), add=TRUE, col=3) #------------------------------------------------------------------------------------------ # como calcular a estatística do teste x <- sort(roun5) # ordena a amostra n <- length(x) # tamanho da amostra ecdf <- sapply(x, function(i){ 1/n*sum(x<=i) }) # prob acu empírica p.norm <- pnorm(x, mean=mean(x), sd=sd(x)) # prob acu pela normal p.beta <- pbeta(x, shape1=18.4, shape2=3.4) # prob acu pela beta max(abs(ecdf-p.norm)) # estatística do teste max(abs(ecdf-p.beta)) # estatística do teste wn <- which.max(abs(ecdf-p.norm)) # index das maiores distâncias wb <- which.max(abs(ecdf-p.beta)) #------------------------------------------------------------------------------------------ # gráfico para interpretar a estatística do teste plot(ecdf(roun5), pch=NULL, cex=0.2) # gráfico da prob acu empírica rug(roun5) curve(pnorm(x, mean(roun5), sd(roun5)), add=TRUE, col=2) curve(pbeta(x, shape1=18.4, shape2=3.4), add=TRUE, col=3) segments(x[wn], p.norm[wn], x[wn], ecdf[wn], col=2, lwd=3); abline(v=x[wn], lty=3) segments(x[wb], p.norm[wb], x[wb], ecdf[wb], col=3, lwd=3); abline(v=x[wb], lty=3) #------------------------------------------------------------------------------------------ .