#-----------------------------------------------------------------------
# Prof. Dr. Walmes M. Zeviani
# leg.ufpr.br/~walmes · github.com/walmes
# walmes@ufpr.br · @walmeszeviani
# Laboratory of Statistics and Geoinformation (LEG)
# Department of Statistics · Federal University of Paraná
# 2021-out-04 · Curitiba/PR/Brazil
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
# Pacotes.
# rm(list = ls())
library(emmeans)
library(lme4)
library(lmerTest)
library(tidyverse)
library(readxl)
Objetivo: Comparação de médias de variáveis da qualidade da pulverização por meio de papeis hidrossensíveis, em diferentes pulverizadores (spray), duas alturas da copa (Canopy strata) e superficies da folha (leaf surface).
Experimento em parcelas sub-subdivididas. A unidade experimental é uma planta. A casualização do tipo de spray foi feito às plantas (UE). Cada planta foi subdividida em 3 alturas. Em cada altura, um papel hidrosolúvel teve cada um dos lados mensurado.
O experimento foi realizado em blocos ao acaso com 3 repetições. Cada parcela foi composta por 2 plantas.
O experimento foi realizado em duas datas diferentes. Uma diferença entre as duas datas é que na primeiro havia maior quantidade de folhas e na segunda um pouco menos devido a desfolha, e isso pode influenciar na qualidade de pulverização. Células vazias correspondem a papeis hidrosensíveis perdidos
#-----------------------------------------------------------------------
# Importação e inspeção.
tb <- read_excel("planilhas para R - Walmes.xlsx",
sheet = "Analise média - subsubdividida",
skip = 1)
str(tb)
## tibble [47 × 9] (S3: tbl_df/tbl/data.frame)
## $ Data : POSIXct[1:47], format: "2018-02-06" ...
## $ Spray : chr [1:47] "Electrostatic" "Electrostatic" "Electrostatic" "Electrostatic" ...
## $ Canopy strata: chr [1:47] "Upper" "Upper" "Upper" "Upper" ...
## $ Leaf surface : chr [1:47] "Adaxial" "Adaxial" "Adaxial" "Abaxial" ...
## $ Block : num [1:47] 1 2 3 1 2 3 1 2 3 1 ...
## $ n. droplets : num [1:47] 1502 26 2851 672 75 ...
## $ n. diameter : num [1:47] 376 14 278 138 20 136 26 190 17 158 ...
## $ Coverage (%) : num [1:47] 40.62 0.689 24.583 8.085 0.946 ...
## $ MVD (mm) : num [1:47] 645 640 293 1293 683 ...
# dput(names(tb))
names(tb) <- c("data", "spray", "strata", "side", "block",
"ndroplets", "ndiameter", "coverage", "mvd")
# Faz testemunha ser o último nível do fator.
tb <- tb %>%
mutate_at(c("strata", "spray", "side", "data", "block"), factor) %>%
drop_na()
str(tb)
## tibble [45 × 9] (S3: tbl_df/tbl/data.frame)
## $ data : Factor w/ 2 levels "2018-02-06","2018-02-23": 1 1 1 1 1 1 1 1 1 1 ...
## $ spray : Factor w/ 2 levels "Convencional",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ strata : Factor w/ 2 levels "Lower","Upper": 2 2 2 2 2 2 1 1 1 1 ...
## $ side : Factor w/ 2 levels "Abaxial","Adaxial": 2 2 2 1 1 1 2 2 2 1 ...
## $ block : Factor w/ 3 levels "1","2","3": 1 2 3 1 2 3 1 2 3 1 ...
## $ ndroplets: num [1:45] 1502 26 2851 672 75 ...
## $ ndiameter: num [1:45] 376 14 278 138 20 136 26 190 17 158 ...
## $ coverage : num [1:45] 40.62 0.689 24.583 8.085 0.946 ...
## $ mvd : num [1:45] 645 640 293 1293 683 ...
# Número de casos experimentais.
xtabs(~spray + strata + side + block, data = tb) %>%
ftable()
## block 1 2 3
## spray strata side
## Convencional Lower Abaxial 2 1 1
## Adaxial 2 2 2
## Upper Abaxial 2 2 2
## Adaxial 2 2 2
## Electrostatic Lower Abaxial 2 2 2
## Adaxial 2 2 2
## Upper Abaxial 2 2 2
## Adaxial 1 2 2
#-----------------------------------------------------------------------
# Análise exploratória.
tb %>%
pivot_longer(cols = ndroplets:mvd,
names_to = "responses",
values_to = "values") %>%
ggplot(data = .,
mapping = aes(x = interaction(strata, side, spray),
y = values,
color = data)) +
facet_wrap(facets = ~responses, scales = "free_y") +
geom_jitter(width = 0.05) +
stat_summary(geom = "line", fun = "mean") +
labs(x = "Leaf surface",
y = "Number of droplets",
color = "Data") +
theme(axis.text.x = element_text(angle = 15, hjust = 1))
## geom_path: Each group consists of only one observation. Do you need
## to adjust the group aesthetic?
## geom_path: Each group consists of only one observation. Do you need
## to adjust the group aesthetic?
## geom_path: Each group consists of only one observation. Do you need
## to adjust the group aesthetic?
## geom_path: Each group consists of only one observation. Do you need
## to adjust the group aesthetic?
#-----------------------------------------------------------------------
O modelo considerado para a análise dos dados sob a presente estrutura experimental é \[ \begin{aligned} y_{hijkl} &= \text{DATA}_h + \text{DATA:BLOCO}_{hi} + \text{SPRAY}_j + e_{hij} \\ &+ \text{STRATA}_k + \text{SPRAY:STRATA}_{jk} + e_{hijk} \\ &+ \text{SIDE}_l + \text{SPRAY:SIDE}_{jl} + \text{STRATA:SIDE}_{kl}\\ &+ \text{SPRAY:STRATA:SIDE}_{jkl} + e_{hijkl} \\ e_{hij} &\sim \text{N}(0, \sigma^2_a) \quad \text{(variância entre UE das parcelas)}\\ e_{hijk} &\sim \text{N}(0, \sigma^2_b) \quad \text{(variância entre UE das subparcelas)}\\ e_{hijkl} &\sim \text{N}(0, \sigma^2_c) \quad \text{(variância entre UE das subsubparcelas)}\\ \end{aligned} \]
Caso diagnostique-se que na escala original não há atendimento dos pressupostos serão aplicadas transformações nos dados na buscando o atendimentos dos pressupostos.
O modelo será ajustado aos dados por máxima verossimilhança restrita (REML). Havendo efeito dos termos experimentais ou interações, o estudo se dará dos termos de maior ordem (interações triplas) para os de menor (efeitos principais). O estudo será feito por comparação múltiplas de médias.
#-----------------------------------------------------------------------
# Modelo incorreto nos componentes de variância que serve apenas para
# avaliar as suposições sobre o erro residual.
m0 <- lm(ndroplets ~ data/block + spray * strata * side +
data:block:spray/strata,
data = tb)
# Análise de diagnóstico.
par(mfrow = c(2, 2))
plot(m0)
layout(1)
# Transformação Box-Cox.
MASS::boxcox(m0)
# Ajuste do modelo aos dados.
mm0 <- lmer(log10(ndroplets) ~ data/block + spray * strata * side +
(1 | data:block:spray) + (1 | data:block:spray:strata),
data = tb)
## boundary (singular) fit: see ?isSingular
# Quadro de testes de Wald para os termos de efeito fixo.
anova(mm0)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## data 0.34502 0.34502 1 32 0.7077 0.4065
## spray 0.15236 0.15236 1 32 0.3125 0.5800
## strata 0.46915 0.46915 1 32 0.9623 0.3340
## side 0.47855 0.47855 1 32 0.9816 0.3292
## data:block 2.13614 0.53404 4 32 1.0954 0.3756
## spray:strata 0.83985 0.83985 1 32 1.7226 0.1987
## spray:side 0.17827 0.17827 1 32 0.3657 0.5496
## strata:side 0.38056 0.38056 1 32 0.7806 0.3836
## spray:strata:side 0.05880 0.05880 1 32 0.1206 0.7307
# Componentes de variância.
VarCorr(mm0)
## Groups Name Std.Dev.
## data:block:spray:strata (Intercept) 0.00000
## data:block:spray (Intercept) 0.00000
## Residual 0.69824
#-----------------------------------------------------------------------
# Modelo incorreto nos componentes de variância que serve apenas para
# avaliar as suposições sobre o erro residual.
m0 <- lm(ndiameter ~ data/block + spray * strata * side +
data:block:spray/strata,
data = tb)
# Análise de diagnóstico.
par(mfrow = c(2, 2))
plot(m0)
layout(1)
# Transformação Box-Cox.
MASS::boxcox(m0)
# Ajuste do modelo aos dados.
mm0 <- lmer(log10(ndiameter) ~ data/block + spray * strata * side +
(1 | data:block:spray) + (1 | data:block:spray:strata),
data = tb)
## boundary (singular) fit: see ?isSingular
# Quadro de testes de Wald para os termos de efeito fixo.
anova(mm0)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## data 0.07254 0.07254 1 14.165 0.2891 0.5992
## spray 0.00005 0.00005 1 14.487 0.0002 0.9891
## strata 0.06253 0.06253 1 14.487 0.2492 0.6251
## side 0.26019 0.26019 1 18.696 1.0369 0.3215
## data:block 0.94572 0.23643 4 14.044 0.9422 0.4683
## spray:strata 0.48255 0.48255 1 14.256 1.9230 0.1868
## spray:side 0.17581 0.17581 1 18.764 0.7006 0.4131
## strata:side 0.10831 0.10831 1 18.764 0.4316 0.5192
## spray:strata:side 0.02466 0.02466 1 18.696 0.0983 0.7574
# Componentes de variância.
VarCorr(mm0)
## Groups Name Std.Dev.
## data:block:spray:strata (Intercept) 0.12002
## data:block:spray (Intercept) 0.00000
## Residual 0.50093
#-----------------------------------------------------------------------
# Modelo incorreto nos componentes de variância que serve apenas para
# avaliar as suposições sobre o erro residual.
m0 <- lm(mvd ~ data/block + spray * strata * side +
data:block:spray/strata,
data = tb)
# Análise de diagnóstico.
par(mfrow = c(2, 2))
plot(m0)
layout(1)
MASS::boxcox(m0)
# m0 <- update(m0, formula = log10(.) ~ .)
# Ajuste do modelo aos dados.
mm0 <- lmer(log10(mvd) ~ data/block + spray * strata * side +
(1 | data:block:spray) + (1 | data:block:spray:strata),
data = tb)
## boundary (singular) fit: see ?isSingular
# Quadro de testes de Wald para os termos de efeito fixo.
anova(mm0)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## data 0.02563 0.02563 1 15.194 0.6646 0.427530
## spray 0.47464 0.47464 1 15.446 12.3081 0.003049 **
## strata 0.08942 0.08942 1 15.446 2.3188 0.148031
## side 0.03065 0.03065 1 18.791 0.7948 0.383936
## data:block 0.22505 0.05626 4 15.103 1.4589 0.263355
## spray:strata 0.00978 0.00978 1 15.309 0.2537 0.621652
## spray:side 0.05591 0.05591 1 18.898 1.4498 0.243418
## strata:side 0.51184 0.51184 1 18.898 13.2729 0.001742 **
## spray:strata:side 0.35960 0.35960 1 18.791 9.3250 0.006595 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Componentes de variância.
VarCorr(mm0)
## Groups Name Std.Dev.
## data:block:spray:strata (Intercept) 1.3826e-01
## data:block:spray (Intercept) 1.4566e-05
## Residual 1.9637e-01
# Desdobramento da interação tripla.
# Efeito de spray dentro das combinações dos demais.
emm <- emmeans(mm0, spec = ~spray | strata + side) %>%
multcomp::cld(Letters = letters)
## NOTE: A nesting structure was detected in the fitted model:
## block %in% data
emm
## strata = Lower, side = Abaxial:
## spray emmean SE df lower.CL upper.CL .group
## Convencional 2.98 0.123 29.1 2.73 3.23 a
## Electrostatic 2.99 0.098 23.7 2.79 3.19 a
##
## strata = Lower, side = Adaxial:
## spray emmean SE df lower.CL upper.CL .group
## Electrostatic 2.90 0.098 23.7 2.70 3.10 a
## Convencional 3.40 0.098 23.7 3.20 3.60 b
##
## strata = Upper, side = Abaxial:
## spray emmean SE df lower.CL upper.CL .group
## Electrostatic 2.86 0.098 23.7 2.65 3.06 a
## Convencional 3.30 0.098 23.7 3.10 3.50 b
##
## strata = Upper, side = Adaxial:
## spray emmean SE df lower.CL upper.CL .group
## Electrostatic 2.70 0.109 26.6 2.47 2.92 a
## Convencional 2.92 0.098 23.7 2.71 3.12 a
##
## Results are averaged over the levels of: block, data
## Degrees-of-freedom method: kenward-roger
## Results are given on the log10 (not the response) scale.
## Confidence level used: 0.95
## significance level used: alpha = 0.05
# Calcula a coverage passando a transformação inversa.
emm <- emm %>%
as.data.frame() %>%
mutate(emmean_mvd = 10^(emmean),
lower = 10^(lower.CL),
upper = 10^(upper.CL))
# Na escala logit, na qual a análise foi realizada para atendimento dos
# pressupostos.
ggplot(data = emm,
mapping = aes(x = spray, y = emmean)) +
facet_wrap(facets = ~strata + side, nrow = 1) +
geom_point() +
geom_errorbar(mapping = aes(ymin = lower.CL, ymax = upper.CL),
width = 0.05) +
geom_text(mapping = aes(label = sprintf("%0.2f %s",
emmean, .group)),
hjust = 0, nudge_x = 0.025)
# Na escala original onde é mais fácil interpretar. NOTE: intervalos de
# confiança podem ficar bem amplos.
ggplot(data = emm,
mapping = aes(x = spray, y = emmean_mvd)) +
# facet_wrap(facets = ~strata + side, nrow = 1) +
facet_grid(facets = strata ~ side) +
geom_point() +
geom_errorbar(mapping = aes(ymin = lower, ymax = upper),
width = 0.05) +
geom_text(mapping = aes(label = sprintf("%0.2f %s",
emmean_mvd, .group)),
hjust = 0, nudge_x = 0.025) +
labs(x = "Spray",
y = "Coverage")
# Efeito de side dentro das combinações dos demais.
emmeans(mm0, spec = ~side | strata + spray) %>%
multcomp::cld(Letters = letters)
## NOTE: A nesting structure was detected in the fitted model:
## block %in% data
## strata = Lower, spray = Convencional:
## side emmean SE df lower.CL upper.CL .group
## Abaxial 2.98 0.123 29.1 2.73 3.23 a
## Adaxial 3.40 0.098 23.7 3.20 3.60 b
##
## strata = Lower, spray = Electrostatic:
## side emmean SE df lower.CL upper.CL .group
## Adaxial 2.90 0.098 23.7 2.70 3.10 a
## Abaxial 2.99 0.098 23.7 2.79 3.19 a
##
## strata = Upper, spray = Convencional:
## side emmean SE df lower.CL upper.CL .group
## Adaxial 2.92 0.098 23.7 2.71 3.12 a
## Abaxial 3.30 0.098 23.7 3.10 3.50 b
##
## strata = Upper, spray = Electrostatic:
## side emmean SE df lower.CL upper.CL .group
## Adaxial 2.70 0.109 26.6 2.47 2.92 a
## Abaxial 2.86 0.098 23.7 2.65 3.06 a
##
## Results are averaged over the levels of: block, data
## Degrees-of-freedom method: kenward-roger
## Results are given on the log10 (not the response) scale.
## Confidence level used: 0.95
## significance level used: alpha = 0.05
# Efeito de strata dentro das combinações dos demais.
emmeans(mm0, spec = ~strata | spray + side) %>%
multcomp::cld(Letters = letters)
## NOTE: A nesting structure was detected in the fitted model:
## block %in% data
## spray = Convencional, side = Abaxial:
## strata emmean SE df lower.CL upper.CL .group
## Lower 2.98 0.123 29.1 2.73 3.23 a
## Upper 3.30 0.098 23.7 3.10 3.50 a
##
## spray = Convencional, side = Adaxial:
## strata emmean SE df lower.CL upper.CL .group
## Upper 2.92 0.098 23.7 2.71 3.12 a
## Lower 3.40 0.098 23.7 3.20 3.60 b
##
## spray = Electrostatic, side = Abaxial:
## strata emmean SE df lower.CL upper.CL .group
## Upper 2.86 0.098 23.7 2.65 3.06 a
## Lower 2.99 0.098 23.7 2.79 3.19 a
##
## spray = Electrostatic, side = Adaxial:
## strata emmean SE df lower.CL upper.CL .group
## Upper 2.70 0.109 26.6 2.47 2.92 a
## Lower 2.90 0.098 23.7 2.70 3.10 a
##
## Results are averaged over the levels of: block, data
## Degrees-of-freedom method: kenward-roger
## Results are given on the log10 (not the response) scale.
## Confidence level used: 0.95
## significance level used: alpha = 0.05
#-----------------------------------------------------------------------
# Modelo incorreto nos componentes de variância que serve apenas para
# avaliar as suposições sobre o erro residual.
m0 <- lm(coverage ~ data/block + spray * strata * side +
data:block:spray/strata,
data = tb)
# Análise de diagnóstico.
par(mfrow = c(2, 2))
plot(m0)
layout(1)
# ATTENTION: essa variável é uma contínua limitada entre 0 e 1. A
# relação média-variância é do tipo da Binomial, algo como p * (1 - p).
# Tentar estabilizar a variância com uma tranformação *it como probit,
# logit, etc.
range(tb$coverage)
## [1] 0.044 98.883
# Usando a transformação logit.
tb$coverage_trans <- binomial(link = logit)$linkfun(tb$coverage/100)
# Inversa da logit.
# binomial()$linkinv(0)
# Modelo incorreto nos componentes de variância que serve apenas para
# avaliar as suposições sobre o erro residual.
m0 <- lm(coverage_trans ~ data/block + spray * strata * side +
data:block:spray/strata,
data = tb)
# Análise de diagnóstico.
par(mfrow = c(2, 2))
plot(m0)
layout(1)
# Pressupostos são melhor atendidos.
# Ajuste do modelo aos dados.
mm0 <- lmer(coverage_trans ~ data/block + spray * strata * side +
(1 | data:block:spray) + (1 | data:block:spray:strata),
data = tb)
# Quadro de testes de Wald para os termos de efeito fixo.
anova(mm0)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## data 10.613 10.613 1 5.2197 3.7106 0.1095914
## spray 45.499 45.499 1 5.3080 15.9070 0.0092549 **
## strata 0.606 0.606 1 10.0435 0.2119 0.6551205
## side 50.803 50.803 1 18.5916 17.7615 0.0004896 ***
## data:block 7.600 1.900 4 5.1836 0.6643 0.6426202
## spray:strata 12.574 12.574 1 10.0122 4.3960 0.0623926 .
## spray:side 2.107 2.107 1 18.6767 0.7366 0.4016290
## strata:side 39.750 39.750 1 18.6767 13.8972 0.0014610 **
## spray:strata:side 36.138 36.138 1 18.5916 12.6343 0.0021747 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Componentes de variância.
VarCorr(mm0)
## Groups Name Std.Dev.
## data:block:spray:strata (Intercept) 1.14803
## data:block:spray (Intercept) 0.63494
## Residual 1.69124
# Desdobramento da interação tripla.
# Efeito de spray dentro das combinações dos demais.
emm <- emmeans(mm0, spec = ~spray | strata + side) %>%
multcomp::cld(Letters = letters)
## NOTE: A nesting structure was detected in the fitted model:
## block %in% data
emm
## strata = Lower, side = Abaxial:
## spray emmean SE df lower.CL upper.CL .group
## Convencional -3.7287 1.085 27.5 -5.952 -1.505 a
## Electrostatic -3.1234 0.874 21.1 -4.940 -1.307 a
##
## strata = Lower, side = Adaxial:
## spray emmean SE df lower.CL upper.CL .group
## Electrostatic -1.2940 0.874 21.1 -3.111 0.523 a
## Convencional 2.6816 0.874 21.1 0.865 4.498 b
##
## strata = Upper, side = Abaxial:
## spray emmean SE df lower.CL upper.CL .group
## Electrostatic -4.8247 0.874 21.1 -6.641 -3.008 a
## Convencional 1.1911 0.874 21.1 -0.626 3.008 b
##
## strata = Upper, side = Adaxial:
## spray emmean SE df lower.CL upper.CL .group
## Electrostatic -3.1661 0.964 24.3 -5.154 -1.179 a
## Convencional 0.0472 0.874 21.1 -1.769 1.864 b
##
## Results are averaged over the levels of: block, data
## Degrees-of-freedom method: kenward-roger
## Confidence level used: 0.95
## significance level used: alpha = 0.05
# Calcula a coverage passando a transformação inversa.
emm <- emm %>%
as.data.frame() %>%
mutate(emmean_coverage = binomial(link = logit)$linkinv(emmean),
lower = binomial(link = logit)$linkinv(lower.CL),
upper = binomial(link = logit)$linkinv(upper.CL))
# Na escala logit, na qual a análise foi realizada para atendimento dos
# pressupostos.
ggplot(data = emm,
mapping = aes(x = spray, y = emmean)) +
facet_wrap(facets = ~strata + side, nrow = 1) +
geom_point() +
geom_errorbar(mapping = aes(ymin = lower.CL, ymax = upper.CL),
width = 0.05) +
geom_text(mapping = aes(label = sprintf("%0.2f %s",
emmean, .group)),
hjust = 0, nudge_x = 0.025)
# Na escala original onde é mais fácil interpretar. NOTE: intervalos de
# confiança podem ficar bem amplos.
ggplot(data = emm,
mapping = aes(x = spray, y = emmean_coverage)) +
# facet_wrap(facets = ~strata + side, nrow = 1) +
facet_grid(facets = strata ~ side) +
geom_point() +
geom_errorbar(mapping = aes(ymin = lower, ymax = upper),
width = 0.05) +
geom_text(mapping = aes(label = sprintf("%0.2f %s",
emmean_coverage, .group)),
hjust = 0, nudge_x = 0.025) +
labs(x = "Spray",
y = "Coverage")
# Efeito de side dentro das combinações dos demais.
emmeans(mm0, spec = ~side | strata + spray) %>%
multcomp::cld(Letters = letters)
## NOTE: A nesting structure was detected in the fitted model:
## block %in% data
## strata = Lower, spray = Convencional:
## side emmean SE df lower.CL upper.CL .group
## Abaxial -3.7287 1.085 27.5 -5.952 -1.505 a
## Adaxial 2.6816 0.874 21.1 0.865 4.498 b
##
## strata = Lower, spray = Electrostatic:
## side emmean SE df lower.CL upper.CL .group
## Abaxial -3.1234 0.874 21.1 -4.940 -1.307 a
## Adaxial -1.2940 0.874 21.1 -3.111 0.523 a
##
## strata = Upper, spray = Convencional:
## side emmean SE df lower.CL upper.CL .group
## Adaxial 0.0472 0.874 21.1 -1.769 1.864 a
## Abaxial 1.1911 0.874 21.1 -0.626 3.008 a
##
## strata = Upper, spray = Electrostatic:
## side emmean SE df lower.CL upper.CL .group
## Abaxial -4.8247 0.874 21.1 -6.641 -3.008 a
## Adaxial -3.1661 0.964 24.3 -5.154 -1.179 a
##
## Results are averaged over the levels of: block, data
## Degrees-of-freedom method: kenward-roger
## Confidence level used: 0.95
## significance level used: alpha = 0.05
# Efeito de strata dentro das combinações dos demais.
emmeans(mm0, spec = ~strata | spray + side) %>%
multcomp::cld(Letters = letters)
## NOTE: A nesting structure was detected in the fitted model:
## block %in% data
## spray = Convencional, side = Abaxial:
## strata emmean SE df lower.CL upper.CL .group
## Lower -3.7287 1.085 27.5 -5.952 -1.505 a
## Upper 1.1911 0.874 21.1 -0.626 3.008 b
##
## spray = Convencional, side = Adaxial:
## strata emmean SE df lower.CL upper.CL .group
## Upper 0.0472 0.874 21.1 -1.769 1.864 a
## Lower 2.6816 0.874 21.1 0.865 4.498 b
##
## spray = Electrostatic, side = Abaxial:
## strata emmean SE df lower.CL upper.CL .group
## Upper -4.8247 0.874 21.1 -6.641 -3.008 a
## Lower -3.1234 0.874 21.1 -4.940 -1.307 a
##
## spray = Electrostatic, side = Adaxial:
## strata emmean SE df lower.CL upper.CL .group
## Upper -3.1661 0.964 24.3 -5.154 -1.179 a
## Lower -1.2940 0.874 21.1 -3.111 0.523 a
##
## Results are averaged over the levels of: block, data
## Degrees-of-freedom method: kenward-roger
## Confidence level used: 0.95
## significance level used: alpha = 0.05