source("config/setup.R")
#----------------------------------------------------------------------- # Carrega os pacotes necessários. rm(list = ls()) library(lattice) library(latticeExtra) library(doBy) library(multcomp) library(wzRfun) library(EACS) #----------------------------------------------------------------------- # Funções. # Função para obter a matriz de contrastes pelos índices (li). contr <- function(li, L) { #' @param li Lista com dois elementos onde cada um é um conjunto de #' índices da matriz \code{L}. #' @param L Matriz proveniente da função \code{LSmeans()$L} ou #' \code{LE_matrix}. #' @return Retorna uma matriz de contrastes de uma linha. stopifnot(length(li) == 2L) li <- lapply(li, function(i) { if (length(i) == 1) i <- c(i, i) else i }) l <- lapply(li, function(i) colMeans(L[i, ])) k <- rbind(Reduce("-", l)) if (!is.null(names(li))) { rownames(k) <- paste(names(li), collapse = " x ") } return(k) } # Função para obter o intervalo de confiança a partir de um modelo e uma # matriz de funções lineares. ic <- function(L, model) { conf <- confint(glht(model, linfct = L), calpha = univariate_calpha())$confint conf <- as.data.frame(conf) if (!is.null(rownames(L))) { r <- rownames(L) g <- factor(r, levels = r[order(conf[, 1])]) conf <- cbind(data.frame(contr = g, conf)) } return(conf) }
O experimento foi realizado para estudar o efeito de bioestimulantes na produção de milho safrinha. Foram estudados 3 fatores descritos a seguir.
base
: Adubação NPK de base com 3 níveis: 0
-- representa sem
adubação de base; NK
-- representa adubação feita com mistura de
uréia e cloreto de potássio, fornecendo portanto apenas N e K; NPK
-- representa a adubação feita com formulação de fertilizante que
contém N, P e K.Pe
: Uso ou não de P energetic (bioestimulante mineral) como
complemento à adubação de base.Bk
: Uso ou não de Bokashi (bioestimulante orgânico) como
complmento à adubação de base.Dos 3 fatores acima descritos, foram estudadas 10 das 12 possíveis combinações entre os seus níveis, portanto, configurando um experimento em arranjo fatorial triplo incompleto $3 \times 2 \times 2 - 2 = 10$.
A análise dos resultados, após obtenção da análise de variância e verificação dos pressupostos, será por contrastes planejados. Dois conjuntos de contrastes foram elaborados para serem aplicados ao caso em que houver interação entre os fatores (Tabela 1) e o caso em que apenas for verificado efeitos aditivos (Tabela 2).
tab <- data.frame( Combinação = levels(bioest_corn$adub), I1 = c(1/4, 1/4, 1/4, 1/4, 0, 0, -1/4, -1/4, -1/4, -1/4), I2 = c(0, 0, 0, 0, 1/2, 1/2, -1/4, -1/4, -1/4, -1/4), I3 = c(0, 0, 0, 0, 0, 0, -1, 1/3, 1/3, 1/3), I4 = c(0, 0, 0, 0, 0, 0, 0, -1/2, -1/2, 1), I5 = c(0, 0, 0, 0, 0, 0, 0, -1/2, 1/2, 0), I6 = c(0, 0, 0, 0, -1, 1, 0, 0, 0, 0), I7 = c(-1, 1/3, 1/3, 1/3, 0, 0, 0, 0, 0, 0), I8 = c(0, -1/2, -1/2, 1, 0, 0, 0, 0, 0, 0), I9 = c(0, -1/2, 1/2, 0, 0, 0, 0, 0, 0, 0), stringsAsFactors = FALSE) tab <- sapply(tab, FUN = function(x) { if (is.numeric(x)) { x <- as.character(MASS::fractions(x)) x[x == "0"] <- "" } return(x) }) tab <- as.data.frame(tab, stringsAsFactors = FALSE) cap <- "**Tabela 1**. Contrastes entre médias aplicados quando houver interação entre os fatores." kable(tab, caption = cap, align = rep(c("l", "r"), c(1, ncol(tab) - 1)))
tab <- data.frame( Combinação = levels(bioest_corn$adub), II1 = c(1/4, 1/4, 1/4, 1/4, 0, 0, -1/4, -1/4, -1/4, -1/4), II2 = c(0, 0, 0, 0, 1/2, 1/2, -1/2, -1/2, 0, 0), II3 = c(-1/2, 1/6, 1/6, 1/6, 0, 0, -1/2, 1/6, 1/6, 1/6), II4 = c(0, 1/2, -1/2, 0, 0, 0, 0, 1/2, -1/2, 0), stringsAsFactors = FALSE) tab <- sapply(tab, FUN = function(x) { if (is.numeric(x)) { x <- as.character(MASS::fractions(x)) x[x == "0"] <- "" } return(x) }) tab <- as.data.frame(tab, stringsAsFactors = FALSE) cap <- "**Tabela 2**. Contrastes entre médias aplicados quando não houver interação entre os fatores." kable(tab, caption = cap, align = rep(c("l", "r"), c(1, ncol(tab) - 1)))
str(bioest_corn) # Nomes curtos são mais fáceis de manipular. bio <- bioest_corn # Número de níveis por cela experimental. cbind(xtabs(~adub, data = bio)) # Estrutura de fatorial incompleto. ftable(xtabs(~bk + pe + base, data = bio)) xyplot(prod + icol + m1k ~ adub, data = bio, outer = TRUE, layout = c(NA, 1), groups = bloc, type = c("a", "p"), xlab = "Forma de adubação", ylab = "Valor da variável resposta", scales = list(y = list(relation = "free"), x = list(rot = 90), alternating = 1)) + as.layer(xyplot(prod + icol + m1k ~ adub, data = bio, type = "a", col = 1, lwd = 2)) useOuterStrips( combineLimits( resizePanels( xyplot(prod + icol + m1k ~ adub | base, data = bio, outer = TRUE, xlab = "Formas de adubação", ylab = "Produção de grãos (kg/ha)", scales = list(y = list(relation = "free"), x = list(relation = "free", rot = 90)), type = c("a", "p")), w = c(4, 2, 4)) ) )
#----------------------------------------------------------------------- # Ajuste do modelo. # Modelo com um fator de 10 níveis. m0 <- lm(prod ~ bloc + adub, data = bio) # Verificação dos pressupostos. par(mfrow = c(2, 2)) plot(m0) layout(1) # Quadro de anova. anova(m0) #----------------------------------------------------------------------- # Obtendo as médias para fazer contrastes. # Médias ajustadas. lsm <- LSmeans(m0, effect = "adub") str(lsm) # Matriz de coeficientes para obter as ls-means. L <- lsm$L # Tabela com o nome dos tratamentos na ordem das médias. grid <- equallevels(lsm$grid, bio) rownames(L) <- grid$adub
#----------------------------------------------------------------------- # Contrastes da tabela 1. # I1. li <- list("NPK" = 1:4, "0" = 7:10) K <- contr(li, L) summary(glht(m0, linfct = K)) # I2. li <- list("NK" = 5:6, "0" = 7:8) K <- contr(li, L) summary(glht(m0, linfct = K)) #-------------------------------------------- # Dentro de sem aduação 0. # I3. li <- list("0 | Com+" = 8:10, "Com-" = 7) K <- contr(li, L) summary(glht(m0, linfct = K)) # I4. li <- list("0 | Pe + Bk" = 8:9, "Pe&Bk" = 10) K <- contr(li, L) summary(glht(m0, linfct = K)) # I5. Pe vs Bk. li <- list("0 | Bk" = 9, "Pe" = 8) K <- contr(li, L) summary(glht(m0, linfct = K)) #-------------------------------------------- # Dentro de abubação NK. # I6. li <- list("NK | Pe+" = 6, "Pe-" = 5) K <- contr(li, L) summary(glht(m0, linfct = K)) #-------------------------------------------- # Dentro de adubação NPK. # I7. li <- list("NPK | Com+" = 2:4, "Com-" = 1) K <- contr(li, L) summary(glht(m0, linfct = K)) # I8. li <- list("NPK | Pe&Bk" = 4, "Pe + Bk" = 2:3) K <- contr(li, L) summary(glht(m0, linfct = K)) # I9. li <- list("NPK | Bk" = 3, "Pe" = 2) K <- contr(li, L) summary(glht(m0, linfct = K))
#----------------------------------------------------------------------- # Contrastes da tabela 2. # Note que II1 = I1 e II2 = I2. Então já foram feitos. #-------------------------------------------- # Contrastes sobre a aplicação de Pe e Bk, considerando NPK e 0. # II3. li <- list("Com+" = c(2:4, 8:10), "Com-" = c(1, 7)) K <- contr(li, L) summary(glht(m0, linfct = K)) # II4. li <- list("Pe" = c(2, 8), "Bk" = c(3, 9)) K <- contr(li, L) summary(glht(m0, linfct = K)) #----------------------------------------------------------------------- # Matrizes dos contrastes para o caso de efeitos aditivos e interação. # Matriz de contrastes quando der interação (9 GL). li <- list( list("NPK" = 1:4, "0" = 7:10), list("NK" = 5:6, "0" = 7:8), list("0 | Com+" = 8:10, "Com-" = 7), list("0 | Pe + Bk" = 8:9, "Pe&Bk" = 10), list("0 | Bk" = 9, "Pe" = 8), list("NK | Pe+" = 6, "Pe-" = 5), list("NPK | Com+" = 2:4, "Com-" = 1), list("NPK | Pe&Bk" = 4, "Pe + Bk" = 2:3), list("NPK | Bk" = 3, "Pe" = 2)) K <- lapply(li, FUN = contr, L = L) Ki <- do.call(rbind, K) summary(glht(m0, linfct = Ki), test = adjusted(type = "none")) # Matriz de contrastes quando não der interação (4 GL). li <- list( list("NPK" = 1:4, "0" = 7:10), list("NK" = 5:6, "0" = 7:8), list("Com+" = c(2:4, 8:10), "Com-" = c(1, 7)), list("Pe" = c(2, 8), "Bk" = c(3, 9))) K <- lapply(li, FUN = contr, L = L) Ka <- do.call(rbind, K) summary(glht(m0, linfct = Ka), test = adjusted(type = "none")) #----------------------------------------------------------------------- # Ajustando os modelos e aplicando os contrastes. m0 <- lm(prod ~ bloc + adub, data = bio) # Verificação dos pressupostos. par(mfrow = c(2, 2)) plot(m0) layout(1) # Ajuste do modelo fatorial triplo. m1 <- update(m0, . ~ bloc + base * pe * bk) # Modelo reduzido contendo apenas os efeitos principais. m2 <- update(m0, . ~ bloc + base + pe + bk) # Teste para hipótese de que os termos abandonados (interações) são # nulos. anova(m2, m1) anova(m0) anova(m2) # Contrastes para o caso em que não houve interação. summary(glht(m0, linfct = Ka), test = adjusted(type = "none"))
icc <- ic(Ka, m0) segplot(contr ~ lwr + upr, centers = Estimate, data = icc, draw = FALSE, xlab = "Estimativa do contraste com IC de 95%", ylab = "Contraste") + layer(panel.abline(v = 0, lty = 2)) + layer(panel.text(x = centers, y = z, label = sprintf("%0.3f", centers), pos = 3))
m0 <- lm(m1k ~ bloc + adub, data = bio) # Verificação dos pressupostos. par(mfrow = c(2, 2)) plot(m0) layout(1) # Ajuste do modelo fatorial triplo. m1 <- update(m0, . ~ bloc + base * pe * bk) # Modelo reduzido contendo apenas os efeitos principais. m2 <- update(m0, . ~ bloc + base + pe + bk) # Teste para hipótese de que os termos abandonados (interações) são # nulos. anova(m2, m1) anova(m0) anova(m2) # Contrastes para o caso em que não houve interação. summary(glht(m0, linfct = Ka), test = adjusted(type = "none"))
icc <- ic(Ka, m0) segplot(contr ~ lwr + upr, centers = Estimate, data = icc, draw = FALSE, xlab = "Estimativa do contraste com IC de 95%", ylab = "Contraste") + layer(panel.abline(v = 0, lty = 2)) + layer(panel.text(x = centers, y = z, label = sprintf("%0.2f", centers), pos = 3))
m0 <- lm(icol ~ bloc + adub, data = bio) # Verificação dos pressupostos. par(mfrow = c(2, 2)) plot(m0) layout(1) # Ajuste do modelo fatorial triplo. m1 <- update(m0, . ~ bloc + base * pe * bk) # Modelo reduzido contendo apenas os efeitos principais. m2 <- update(m0, . ~ bloc + base + pe + bk) # Teste para hipótese de que os termos abandonados (interações) são # nulos. anova(m2, m1) anova(m0) anova(m2) # Contrastes para o caso em que não houve interação. summary(glht(m0, linfct = Ka), test = adjusted(type = "none"))
icc <- ic(Ka, m0) segplot(contr ~ lwr + upr, centers = Estimate, data = icc, draw = FALSE, xlab = "Estimativa do contraste com IC de 95%", ylab = "Contraste") + layer(panel.abline(v = 0, lty = 2)) + layer(panel.text(x = centers, y = z, label = sprintf("%0.3f", centers), pos = 3))
cat(format(Sys.time(), format = "Atualizado em %d de %B de %Y.\n\n")) sessionInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.