Modelagem e análise de dados experimentais com o programa computacional R

Modelagem e análise de dados experimentais com o programa computacional R

Descrição

Disciplina: Tópicos Especiais (AF 722) - Modelagem e análise de dados experimentais com o programa computacional R
Professor Coordenador: PhD. Louise Larissa May De Mio
Professor Coordenador: PhD. Paulo Justiniano Ribeiro Júnior, LEG/UFPR
Professor Colaborador: MSc. Walmes Marques Zeviani, LEG/UFPR
Nº de Créditos: 4
Carga horária: 60h
Período Letivo: 2º semestre de 2012

Referências bibliográficas

[2009, techreport | www]
Ribeiro Júnior, P. J. (2009). Introdução ao Ambiente Estatístico R.
[2002, techreport | www]
Faraway, J. J. (2002). Practical Regression and Anova using {R}.
[2005, book | www]
Faraway, J. J. (2005). Linear models with R Chapman \& Hall/{CRC}.
[2002, book | www]
Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S Birkhäuser.
[2009, book | www]
Everitt, B. S., & Hothorn, T. (2009). A Handbook of Statistical Analyses Using R, Second Edition (2 ed.) Chapman \& Hall.
[2008, book | www]
Dalgaard, P. (2008). Introductory Statistics with R (2nd ed.) Springer.
[2008, book | www]
Dobson, A. J., & Barnett, A. (2008). An Introduction to Generalized Linear Models, Third Edition (3 ed.) Chapman and {Hall/CRC}.
[2008, book | www]
Ritz, C., & Streibig, J. C. (2008). Nonlinear Regression with R (1 ed.) Springer.
[2008, book | www]
Sarkar, D. (2008). Lattice: Multivariate Data Visualization with R (1 ed.) Springer.
[2005, book | www]
Murrell, P. (2005). R Graphics (1 ed.) Chapman and {Hall/CRC}.

Material usado no curso

Diretório com arquivos de dados e scripts do curso: af722_2012

Cronograma de atividades do Curso

Data Atividade Script
aula 01, 10/08 (M) sex Informações gerais sobre à disciplina. Introdução ao R, download, instação, primeiros passos. http://www.leg.ufpr.br/~walmes/cursoR/af722_2012/aula1.R
aula 02, 10/09 (M) seg Importação de dados no formato texto. http://www.leg.ufpr.br/~walmes/cursoR/af722_2012/aula2.R
aula 03, 13/09 (M) qui Importação e visualização de dados. http://www.leg.ufpr.br/~walmes/cursoR/af722_2012/aula3.R
aula 04, 14/09 (M) sex Aplicando filtros, selecionando subconjuntos e gráficos da lattice. http://www.leg.ufpr.br/~walmes/cursoR/af722_2012/aula4.R
aula 05, 22/10 (M) seg Simulando dados, regressão polinomial e não linear. http://www.leg.ufpr.br/~walmes/cursoR/af722_2012/aula5.R
aula 06, 25/10 (M) qui Análise de experimento com alternativas para satisfazer os pressupostos. http://www.leg.ufpr.br/~walmes/cursoR/af722_2012/aula6.R
aula 07, 26/10 (M) sex Análise de experimento, ajuste de polinômio e modelos segmentados. http://www.leg.ufpr.br/~walmes/cursoR/af722_2012/aula7.R
aula 08, 01/11 (M) qui Programado: aula teórica análise contagem e proporção.
aula 09, 01/11 (T) qui Programado: exposição dos casos experimentais.
aula 10, 28/11 (M) qua Programado: (08:00-12:00) exposição das análises dos dados.

Vídeos

Código

#------------------------------------------------------------------------------------------

vol <- read.table("http://www.leg.ufpr.br/~walmes/data/volume.txt",
                  header=TRUE, sep="\t")
str(vol)
vol$dos <- factor(vol$dose)

xyplot(volu~dose|gen, data=vol)

m0 <- aov(volu~gen+dos+gen:dos, data=vol)
anova(m0)

par(mfrow=c(2,2)); plot(m0); layout(1)

boxcox(m0)

m1 <- aov((volu^(1/3))~gen+dos+gen:dos, data=vol)
par(mfrow=c(2,2)); plot(m1); layout(1)
anova(m1)

with(vol, fat2.crd(gen, dos, volu^(1/3), mcomp=c("sk","tukey")))

#------------------------------------------------------------------------------------------

plot(residuals(m0)~vol$dos)
plot(residuals(m0)~vol$dose)

qqmath(~residuals(m0)|vol$dose)

pesos <- tapply(residuals(m0), vol$dose, var)
vol$pesos <- rep(pesos, each=27)

m2 <- aov(volu~gen+dos+gen:dos, data=vol, weights=1/vol$pesos)
par(mfrow=c(2,2)); plot(m2); layout(1)
anova(m2)

require(doBy)

popMeans(m2, effect="gen")
popMeans(m2, effect="dos")
popMeans(m2, effect=c("gen", "dos"))

require(agricolae)
glr <- df.residual(m2)
s2 <- deviance(m2)/df.residual(m2)

with(subset(vol, dose=="0"),
     HSD.test(volu, gen, DFerror=glr, MSerror=pesos[1]*s2))

with(subset(vol, dose=="5"),
     HSD.test(volu, gen, DFerror=glr, MSerror=pesos[2]*s2))

with(subset(vol, dose=="25"),
     HSD.test(volu, gen, DFerror=glr, MSerror=pesos[3]*s2))

#------------------------------------------------------------------------------------------
# dose em cada genótipo

X <- popMatrix(m2, effect=c("gen", "dos"))
contr <- expand.grid(gen=levels(vol$gen), dos=levels(vol$dos))
which(contr$gen=="ATF06B")

contr.x <- rbind("0vs5"=X[1,]-X[10,],
                 "0vs25"=X[1,]-X[19,],
                 "5vs25"=X[10,]-X[19,])
contr.x%*%coef(m2) # estimativas dos contrastes
contr.x%*%vcov(m2)%*%t(contr.x)

summary(glht(m2, linfct=contr.x))

#------------------------------------------------------------------------------------------
# fizemos isso para um único nível de gen, o código abaixo faz para todos

lM <- lapply(levels(vol$gen),
             function(g){
               X[contr$gen==g,]
             })
lM

com <- combn(3, 2)

compr <- lapply(lM,
                function(i){
                  m <- t(apply(com, 2, function(j) i[j[1],]-i[j[2],]))
                })
names(compr) <- levels(vol$gen)
compr

lapply(compr, function(g) summary(glht(m2, linfct=g)))

#------------------------------------------------------------------------------------------
# colocando os resultados em um gráfico com IC

IC <- lapply(compr, function(g) confint(glht(m2, linfct=g)))
IC <- lapply(IC, "[[", "confint") #IC[[1]]$confint
IC <- do.call(rbind, IC)
nm <- apply(com, 2, function(i) paste(levels(vol$dos)[i[1]], levels(vol$dos)[i[2]], sep="vs"))

IC <- cbind(expand.grid(compr=nm, gen=levels(vol$gen)), IC)
str(IC)

require(latticeExtra)

segplot(compr~lwr+upr|gen, data=IC)

segplot(compr~lwr+upr|gen, data=IC, layout=c(1,9),
        strip.left=TRUE, strip=FALSE,
        draw.bands=FALSE, centers=Estimate,
        segments.fun=panel.arrows, ends="both",
        angle=90, length=1, unit="mm")

segplot(compr~lwr+upr|gen, data=IC, layout=c(1,9),
        strip.left=TRUE, strip=FALSE,
        draw.bands=FALSE, centers=Estimate,
        segments.fun=panel.arrows, ends="both",
        angle=90, length=1, unit="mm",
        panel=function(...){
          panel.segplot(...)
          panel.abline(v=0, col=2)
        })

#------------------------------------------------------------------------------------------