Software R para Análise Estatística Agrícola
Software R para Análise Estatística Agrícola
Santa Maria, RS
2018
Prefácio
1
Comissão Organizadora
Alessandro Dal’Col Lúcio
Possui graduação em Agronomia pela Universidade Federal do Espir-
ito Santo (1994), mestrado em Agronomia pela Universidade Federal
de Santa Maria (1997), doutorado em Agronomia (Produção Vegetal)
[Jaboticabal] pela Universidade Estadual Paulista Júlio de Mesquita
Filho (1999) e pós-doutorado no Instituto Politécnico de Bragança [Por-
tugal] (2015). É professor titular do Departamento de Fitotecnia do
Centro de Ciências Rurais da Universidade Federal de Santa Maria e líder
do grupo de pesquisa Experimentação registrado no CNPq. Atualmente é associado e ocupa o
cargo de Conselheiro da Região Brasileira da Sociedade Internacional de Biometria - RBRAS,
é membro da The International Biometric Society, da Associação Brasileira de Horticultura
- ABH e da Sociedade Brasileira para o Progresso da Ciência - SBPC. Tem experiência
na área de Probabilidade e Estatística, com ênfase em Experimentação Agrícola, atuando
principalmente nos seguintes temas: planejamento de experimentos, precisão experimental,
ambiente protegido, amostragem e variabilidade.
Tiago Olivoto
Engenheiro agrônomo pela Universidade do Oeste de Santa Catarina
(2014). Mestre em Agronomia: Agricultura e Ambiente pela Univer-
sidade Federal de Santa Maria (2017). Doutorando do Programa de
Pós Graduação em Agronomia da Universidade Federal de Santa Maria.
Exerce atividades relacionadas estatística experimental, planejamento de
experimentos, com ênfase no desenvolvimento de métodos para melhorar
a acurácia experimental. Em seu Currículo, os termos mais frequentes
na contextualização da produção científica são: Manejo cultural, Seleção Indireta, Interação
Genótipo x Ambiente, Modelos Mistos e Parâmetros Genéticos.
2
Sumário
1 Introdução ao ambiente R 6
1.1 Tipos de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.1 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.2 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.3 Data Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.4 Lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1.5 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1.6 Identificando os tipos de objetos . . . . . . . . . . . . . . . . . . . . . 18
1.2 Operações matemáticas e algebra de matrizes . . . . . . . . . . . . . . . . . 19
1.3 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4 Construindo uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.5 Entrada de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.6 Funções gráficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.6.1 Gráficos utilizando a função plot() . . . . . . . . . . . . . . . . . . . 28
1.6.2 Histogramas utilizando a função hist() . . . . . . . . . . . . . . . . 33
1.6.3 Gráficos quantil-quantil utilizando a função qqnorm() . . . . . . . . . 33
1.6.4 Gráfico de caixas usando a função boxplot() . . . . . . . . . . . . . 36
1.6.5 Gráficos usando a função curve() . . . . . . . . . . . . . . . . . . . . 36
1.7 Exportando dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.7.1 Exportando com diferentes extensões . . . . . . . . . . . . . . . . . . 40
1.7.2 Exportanto gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3
3.1.2 Ajustando regressões com a função lm() . . . . . . . . . . . . . . . . 146
3.1.3 Seleção de variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.1.4 Falta de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.1.5 Análise dos resíduos . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
3.1.6 Pontos influentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
3.2 Regressão não linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
3.2.1 Estimação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
3.2.2 Ajustando o modelo com a função nls() . . . . . . . . . . . . . . . . 163
3.2.3 Análise dos resíduos . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
3.2.4 Medidas de não linearidade . . . . . . . . . . . . . . . . . . . . . . . 169
3.2.5 Comparação de parâmetros . . . . . . . . . . . . . . . . . . . . . . . 169
3.2.6 Representação gráfica dos modelos . . . . . . . . . . . . . . . . . . . 173
3.3 Regressão bisegmentada com platô . . . . . . . . . . . . . . . . . . . . . . . 173
4
4.9.4 medidas de estabilidade . . . . . . . . . . . . . . . . . . . . . . . . . 236
4.9.5 Regressão individual . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
4.10 Interação genótipo vs ambiente (AMMI) . . . . . . . . . . . . . . . . . . . . 237
4.10.1 Ajustando o modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
4.10.2 Escolha do número de termos multiplicativos . . . . . . . . . . . . . . 240
4.10.3 Biplots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
4.10.4 Predição da variável resposta . . . . . . . . . . . . . . . . . . . . . . 248
4.11 Modelos mistos na avaliação de MET . . . . . . . . . . . . . . . . . . . . . . 249
4.11.1 Ajustando o modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
4.11.2 Componentes de variância e parâmetros genéticos . . . . . . . . . . . 250
4.11.3 Detalhes sobre a análise . . . . . . . . . . . . . . . . . . . . . . . . . 251
4.11.4 Médias preditas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
4.12 AMMI ou BLUP? Decisão em cada caso! . . . . . . . . . . . . . . . . . . . . 253
4.13 Combinando as vantagens dos métodos AMMI e BLUP . . . . . . . . . . . . 255
4.13.1 Decomposição por valores singulares da matriz BLUP . . . . . . . . . 256
4.13.2 Interpretação conjunta da estabilidade e produtividade. . . . . . . . . 258
4.13.3 Atribuindo pesos para a estabilidade e variável resposta . . . . . . . . 259
Referências 264
3
Lista de figuras
1 Interface do RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Selecionando um diretório . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Iniciando um novo R Script . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Instalando pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5 Ajuda para a função nls() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6 Verificando se há atualizações disponíveis . . . . . . . . . . . . . . . . . . . . 9
7 Demonstração do teorema central do limite . . . . . . . . . . . . . . . . . . . 24
8 Importando dados de planilhas eletrônicas do Excel - Passo 1 . . . . . . . . . 26
9 Importando dados de planilhas eletrônicas do Excel - Passo 2 . . . . . . . . . 27
10 Importando dados de planilhas eletrônicas do Excel - Passo 3 . . . . . . . . . 27
11 Dividindo a tela para plotagem de múltiplos gráficos . . . . . . . . . . . . . . 29
12 Alterando a coloração dos pontos ou linhas através do argumento color() . . 31
13 Modificando a posição da legenda em um gráfico . . . . . . . . . . . . . . . . 32
14 Gráficos de diagnóstico de resíduos utilizando a função plot() . . . . . . . . . 34
15 Histograma de frequencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
16 Gráficos quantil-quantil utilizando a função qqnorm() . . . . . . . . . . . . . 37
17 Gráfico de caixas usando a função boxplot() . . . . . . . . . . . . . . . . . . 38
18 Gráficos usando a função curve() . . . . . . . . . . . . . . . . . . . . . . . . 39
19 Gráficos usando a função curve() . . . . . . . . . . . . . . . . . . . . . . . . 41
20 Salvando figuras como imagens . . . . . . . . . . . . . . . . . . . . . . . . . 44
21 Salvando figuras em PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
22 Gráfico dos valores observados vs uma distribuição teórica . . . . . . . . . . 50
23 Gráficos de intervalo de confiança (uma variável) . . . . . . . . . . . . . . . . 53
24 Gráficos de intervalo de confiança (mais de uma variável) . . . . . . . . . . . 54
25 Gráficos de intervalo de confiança (mais de uma variável) . . . . . . . . . . . 55
26 Gráfico de resíduos gerado pela função plotres() . . . . . . . . . . . . . . . . 67
27 Gráfico de barras gerado pela função ggplot() . . . . . . . . . . . . . . . . . 71
28 Regressão quadrática obtida no delineamento DIC . . . . . . . . . . . . . . . 77
29 Gráfico de linhas gerado pela função ggplot() . . . . . . . . . . . . . . . . . . 78
30 Gráfico gerado pela função boxcox() para identificar o valor de lambda . . . 86
31 Rendimento observado de cada híbrido em cada dose de nitrogênio . . . . . . 92
32 Gráfico das médias dos híbridos em cada dose de nitrogênio gerado pela função
plot_fatmeans() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
33 Gráfico com uma regressão ajustada para cada híbrido gerado pela função
plot_fatcurves() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
34 Característica de produção em um experimento bifatorial sem interação signi-
ficativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
35 Curvas ajustadas para híbrido utilizando a função plot_fatcurves() . . . . . 116
36 Característica da produção em um experimento bifatorial sem interação signi-
ficativa (agrupado por fonte de N) . . . . . . . . . . . . . . . . . . . . . . . . 122
37 Característica da produção em um experimento bifatorial sem interação signi-
ficativa (agrupado por fonte híbrido) . . . . . . . . . . . . . . . . . . . . . . 123
38 Gráfico de superfície de resposta utilizando a função plot_supresp() . . . . . 134
39 Gráfico de contornos utilizando a função plot_supresp() . . . . . . . . . . . 138
4
40 Distância de Cook representando a influencia dos pontos na predição das variávies160
41 Manipulando os valores dos parâmetros . . . . . . . . . . . . . . . . . . . . . 165
42 Comportamento da produção acumulada em olerícolas . . . . . . . . . . . . 170
43 Representação gráfica em modelos não lineares . . . . . . . . . . . . . . . . . 174
44 Representação gráfica de regressão bisegmentada com platô . . . . . . . . . . 178
45 Scatter plot de uma matriz de correlação de Pearson . . . . . . . . . . . . . 183
46 Gráfico de pizza de uma matriz de correlação de Pearson . . . . . . . . . . . 186
47 Valores de beta obtidos com 101 valores de k . . . . . . . . . . . . . . . . . . 197
48 Diagrama de trilha utilizando a função [Link]() . . . . . . . . . . . . 205
49 Autovalores da matriz de correlação obtidos pela função pca() . . . . . . . . 211
50 Escores dos genótipos nos dois primeiros PCA obtidos pela função pca() . . 212
51 Escores das variáveis nos dois primeiros PCA obtidos pela função pca() . . . 213
52 Escores dos genótipos e das variáveis nos dois primeiros PCA obtidos pela
função pca() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
53 Escores dos genótipos e das variáveis nos dois primeiros PCA obtidos pela
função pca() considerando os efeitos de ambiente . . . . . . . . . . . . . . . 216
54 Dendrograma gerado pela função distdend() . . . . . . . . . . . . . . . . . . 219
55 Coeficiente de correlação cofenética em matrizes de distância estimadas com
diferentes números de variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . 222
56 Procedimento bootstrap indicando o número de clusters a serem formados no
dendrograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
57 Dendrograma personalizado com cores indicando os grupos . . . . . . . . . . 226
58 Árvore filogenética representando a matriz de distâncias . . . . . . . . . . . . 227
59 Dendrograma circular representando a matriz de distâncias . . . . . . . . . . 228
60 Gráfico para agrupamento k-means gerado pela função kmeans() . . . . . . . 231
61 Gráfico para agrupamento k-means gerado pela função kmeans() . . . . . . . 232
62 Regressão individual da produtividade com o índice ambiental . . . . . . . . 238
63 Barra de progresso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
64 Gráfico boxplot demonstrando o RMSE obtido na validação cruzada dos models
AMMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
65 Biplot da produtividade de grãos com o PC1 gerado pela função [Link]() 245
66 Biplot do PC1 com o PC2 gerado pela função [Link]() . . . . . . . . . . 246
67 Biplot da produtividade de grãos com a média ponderada dos escores absolutos
gerado pela função [Link]() . . . . . . . . . . . . . . . . . . . . . . . . . 247
68 Médias preditas para genótipos considerando um modelo misto . . . . . . . . 252
69 Biplot WAAS x RG (a) e WAASB x RG (b) . . . . . . . . . . . . . . . . . . 259
70 Índice WAASBY proposto para a classificaçaõ dos genotipos de acordo com
pesos atribuídos para produtividade e estabilidade . . . . . . . . . . . . . . . 261
71 Ranqueamento dos genótipos dependendo do número de componentes principais
considerados no modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
72 Ranqueamento dos genótipos dependendo do peso considerado para a produ-
tividade e estabilidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
5
Figure 1: Interface do RStudio
1 Introdução ao ambiente R
Nesta seção serão abordados alguns aspectos básicos para que o usuário do software R
possa desenvolver as suas análises. Será dado enfoque para áreas básicas da interface, cujo
conhecimento é necessário para que um usuário inicante possa fazer as suas análises. Em um
primeiro momento, será explorada a interface do software, para que o usário possa identificar
o script, o console, a “área de trabalho” e o output para gráficos.
Antes de iniciar as análises, recomenda-se escolher um diretório onde devem estar inputs e para
onde serão enviados os outputs . Para selecionar o diretório, basta seguir o caminho Session
> Set Working Directory > Choosing diretory ou utilizar as teclas de atalho Ctrl+Shift+H.
Posteriormente, um R Script é iniciado conforme a figura abaixo ou pelas teclas de atalho
Ctrl+Shift+N. No canto inferior direito, além de servir como output para gráficos (Plots),
também é o local onde os pacotes utilizados nas análises (Packages) são instalados e maiores
informações sobre as funções podem ser encontradas (Help). Para que certas funções possam
ser utilizadas, os pacotes devem ser instalados previamente. Quando o pacote onde se encotra
a função que o usuário deseja utilizar não está instalando, uma mensagem de erro (Error
in FUNÇÃO) aparece no console, indicando que a função não foi encontrada (could not
find). A instalação dos pacotes pode ser realizada conforme a figura abaixo, ou através da
função [Link](). Após a instalação do pacote, o usuário deve utilizar as funções
require() ou library() para que o pacote seja carregado e as suas funções possam ser
utilizadas.
Antes de inicial qualquer análise, os pacotes (com as funções que deseja-se utilizar) devem ser
instalados e carregados. Em um primeiro momento, será mostrado como instalar e carregar
6
Figure 2: Selecionando um diretório
7
Figure 4: Instalando pacotes
8
Figure 6: Verificando se há atualizações disponíveis
Caso o pacote que contenha a função que se deseja utilizar não esteja instalado, uma mensagem
de erro aparecerá no console. Para usar a função nlme() é necessário que o pacote nlme esteja
instalado e carregado. O erro no console indica que a função nlme() não foi encontrada. O
exemplo abaixo foi extraido do livro Mixed-Effects models in S an S-PLUS de Pinheiro and
Bates (2000):
log=nlme(height ~ SSasymp(age, Asym, R0, lrc),
data = Loblolly,
fixed = Asym + R0 + lrc ~ 1,
random = Asym ~ 1,
start = c(Asym = 103, R0 = -8.5, lrc = -3.3))
## Error in nlme(height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly, fixed = Asym + :
Os pacotes disponibilizados no software R estão em constante atualização. Utilizando a
função packageStatus() e summary(packageStatus()) é possível verificar se os pacotes
estão atualizados. Outra forma é ir em Packages > Update que se encontra no canto inferior
direito conforme demonstrado na figura abaixo:
9
## Verifica o status dos pacotes. Upgrade = 0 indica que não há pacotes a serem atualiza
packageStatus()
## Detalha os pacotes. $OK estão atualizados, $update precisam de atualização
summary(packageStatus())
Por fim, para citar os pacotes , recomenda-se verificar a referência através da função
citation().
citation("MASS")
##
## To cite the MASS package in publications use:
##
## Venables, W. N. & Ripley, B. D. (2002) Modern Applied Statistics
## with S. Fourth Edition. Springer, New York. ISBN 0-387-95457-0
##
## A BibTeX entry for LaTeX users is
##
## @Book{,
## title = {Modern Applied Statistics with S},
## author = {W. N. Venables and B. D. Ripley},
## publisher = {Springer},
## edition = {Fourth},
## address = {New York},
## year = {2002},
## note = {ISBN 0-387-95457-0},
## url = {[Link]
## }
Os tipos de objeto mais utilizados na linguagem R são: a) vetores, b)matrizes, c) data frames,
d)listas e e) funções. Um enfoque maior será dado aos vetores, matrizes e data frames, pois
estes são amplamente utilizados, inclusive nas análises mais simples.
1.1.1 Vetores
A função c() combina valores que formam vetores. Como visto anteriormnete, c() foi
utilizado para carregar os pacotes, porém ao invés de valores foram utilizados caracteres
(indicados por ""). Esse exemplo já demostra a grande utilidade desta função. Abaixo, é
demonstrado como vetores podem ser gerados com a função c().
x1=c(1) #Escalar
x2=c(1,2) #Vetor
x3=c(1,2,3) #Vetor
x3.1=c("um","dois","três") #Vetor com caracteres
10
Os vetores foram armazenados em x1, x2 e x3 e ficaram armazenados como valores na área
de trabalho como valores (values). Para que os valores sejam mostrados basta digitar no
console onde os vetores foram armazenados.
x3
## [1] 1 2 3
A função c() pode ser utilizada com outras funções. Não é objetivo deste curso explorar
a potencialidade desta função, mas algunas exemplos serão demonstrados para despertar o
interesse dos usuários:
x4=c(rep(1:4,each=4))
x5=seq(1:5)
x6=c(rep(seq(1:5),each=2))
x6
## [1] 1 1 2 2 3 3 4 4 5 5
x9
## [1] 1 2 4
1.1.2 Matrizes
As matrizes são um conjunto de valores (ou variáveis) dispostos em linhas e colunas, e que
formam um corpo delimitado por [ ]. As matrizes são geralmente representadas genericamente
por AMxN , onde M e N represetam os números de linhas e colunas da matriz, respectivamente.
As matrizes podem ser facilmente construídas utilizandos as funções cbind(), rbind(). A
primeira função adiciona colunas as matrizes, enquanto que a segunda adiciona linhas. A
função matrix() também pode ser utilizada.
### Usando cbind()
x10=cbind(1,2,3,4,5) # ou x10=cbind(1:5), 5 colunas com 1 elemento cada
x11=cbind(c(1,2,3,4,5)) # ou x11=cbind(c(1:5)), 1 coluna com 5 elementos cada
x12=cbind(c(1,2,3,4,5),c(6,7,8,9,10)) # 2 colunas de 5 elementos
x12.1=cbind(x11,c(6:10))
x13=cbind(c(1,2,3,4,5),c(6,7,8,9,10),c(11,12,13,14,15)) # 3 colunas de 5 elementos
x13.1=cbind(x12.1,c(11,12,13,14,15))
### Usando rbind()
x14=rbind(1,2,3,4,5) # x14 = x11, 5 linhas com 1 elemento cada
11
x15=rbind(c(1,2,3,4,5)) # x15 = x10, 1 linha com 5 elementos cada
x16=rbind(c(1,2,3,4,5),c(6,7,8,9,10)) # 2 linhas com 5 elementos cada
x16.1=rbind(x15,c(6,7,8,9,10))
x17=rbind(c(1,6),c(2,7),c(3,8),c(4,9),c(5,10)) # x16 = x12
As funções cbind() e rbind() podem ser utilizadas conjuntamente. Não queremos confundir
a sua cabeça, mas se a lição anterior foi entendida, a próxima se torna fácil.
### Usando rbind() e cbind()
x18=cbind(c(1,2,3,4,5),c(6,7,8,9,10),rbind(c(11),c(12),c(13),c(14),c(15)))
x13
## [,1] [,2] [,3]
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
x18
## [,1] [,2] [,3]
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
Com a função matrix() podemos ter o mesmo resultado que o obtido com o uso das
funções cbind() e rbind(). Porém, para utilizar a função matrix(), alguns argumen-
tos devem ser declarados. Na função matrix(data = NA, nrow = 1, ncol = 1, byrow =
FALSE,dimnames = NULL), os argumentos que devemos inicialmente conhecer são o nrow,
ncol e byrow. O primeiro indica o número de linhas da matriz, o segundo a número de
colunas e o terceiro indica como a matriz é preenchida. Por default, byrow é FALSE, indicando
que as matrizes são preenchidas por colunas. Se TRUE, o preenchimento ocorre por linhas.
### Usando matrix
x19=matrix(c(1:15),nrow=5,ncol=3)
x20=matrix(c(1:15), nrow=5, ncol=3, byrow=TRUE)
x21=matrix(c(1,6,11,2,7,12,3,8,13,4,9,14,5,10,15),nrow=5, ncol=3, byrow=TRUE)
x19
## [,1] [,2] [,3]
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
12
x20
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
## [4,] 10 11 12
## [5,] 13 14 15
x21
## [,1] [,2] [,3]
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
Para selecionar elementos, linhas e colunas da matriz com [ ] utiliza-se um sistema de
coordenadas:
x19[2,3] ## seleciona o elemento que está na linha 2 e coluna 3
## [1] 12
x19[,2] ## "," indica que todas as linhas serão selecionadas na coluna 2
## [1] 6 7 8 9 10
x19[1,] ## "," indica que todas as colunas serão selecionadas na linha 1
## [1] 1 6 11
A função [Link]() cria estruturas cujas colunas podem ser valores numéricos ou carac-
teres. É uma estrutura muito utilizada em funções do software R.
x22=[Link](
"Ambiente"=rep(c("Faxinal do Soturno","Santa Maria"),each=20),
"Genotipo"=rep(c("G1","G2","G3","G4"),each=5),
"Rep"=rep(c(1:5),each=4),
"Y"=rep(c(11:15),each=4)
)
x22
## Ambiente Genotipo Rep Y
## 1 Faxinal do Soturno G1 1 11
## 2 Faxinal do Soturno G1 1 11
## 3 Faxinal do Soturno G1 1 11
13
## 4 Faxinal do Soturno G1 1 11
## 5 Faxinal do Soturno G1 2 12
## 6 Faxinal do Soturno G2 2 12
## 7 Faxinal do Soturno G2 2 12
## 8 Faxinal do Soturno G2 2 12
## 9 Faxinal do Soturno G2 3 13
## 10 Faxinal do Soturno G2 3 13
## 11 Faxinal do Soturno G3 3 13
## 12 Faxinal do Soturno G3 3 13
## 13 Faxinal do Soturno G3 4 14
## 14 Faxinal do Soturno G3 4 14
## 15 Faxinal do Soturno G3 4 14
## 16 Faxinal do Soturno G4 4 14
## 17 Faxinal do Soturno G4 5 15
## 18 Faxinal do Soturno G4 5 15
## 19 Faxinal do Soturno G4 5 15
## 20 Faxinal do Soturno G4 5 15
## 21 Santa Maria G1 1 11
## 22 Santa Maria G1 1 11
## 23 Santa Maria G1 1 11
## 24 Santa Maria G1 1 11
## 25 Santa Maria G1 2 12
## 26 Santa Maria G2 2 12
## 27 Santa Maria G2 2 12
## 28 Santa Maria G2 2 12
## 29 Santa Maria G2 3 13
## 30 Santa Maria G2 3 13
## 31 Santa Maria G3 3 13
## 32 Santa Maria G3 3 13
## 33 Santa Maria G3 4 14
## 34 Santa Maria G3 4 14
## 35 Santa Maria G3 4 14
## 36 Santa Maria G4 4 14
## 37 Santa Maria G4 5 15
## 38 Santa Maria G4 5 15
## 39 Santa Maria G4 5 15
## 40 Santa Maria G4 5 15
Em x22 simulamos como muitos experimentos são organizados no momento de tabulação dos
dados (fatores nas colunas e variáveis nas linhas). Caso o pesquisador opte por analisar os
ambientes separadamente, ele pode lançar mão da função subset() para obter o banco de
dados para um ambiente específico:
x23=subset(x22,Ambiente=="Faxinal do Soturno")
x23
## Ambiente Genotipo Rep Y
14
## 1 Faxinal do Soturno G1 1 11
## 2 Faxinal do Soturno G1 1 11
## 3 Faxinal do Soturno G1 1 11
## 4 Faxinal do Soturno G1 1 11
## 5 Faxinal do Soturno G1 2 12
## 6 Faxinal do Soturno G2 2 12
## 7 Faxinal do Soturno G2 2 12
## 8 Faxinal do Soturno G2 2 12
## 9 Faxinal do Soturno G2 3 13
## 10 Faxinal do Soturno G2 3 13
## 11 Faxinal do Soturno G3 3 13
## 12 Faxinal do Soturno G3 3 13
## 13 Faxinal do Soturno G3 4 14
## 14 Faxinal do Soturno G3 4 14
## 15 Faxinal do Soturno G3 4 14
## 16 Faxinal do Soturno G4 4 14
## 17 Faxinal do Soturno G4 5 15
## 18 Faxinal do Soturno G4 5 15
## 19 Faxinal do Soturno G4 5 15
## 20 Faxinal do Soturno G4 5 15
1.1.4 Lista
No exemplo abaixo, será armazenado em uma lista dois data-frames e uma matriz. Posteri-
omente, será selecionado a matriz que está armazenada na lista:
x24=list(x22,x23,x19)
x25=x24[[3]]
x24
## [[1]]
## Ambiente Genotipo Rep Y
## 1 Faxinal do Soturno G1 1 11
## 2 Faxinal do Soturno G1 1 11
## 3 Faxinal do Soturno G1 1 11
## 4 Faxinal do Soturno G1 1 11
## 5 Faxinal do Soturno G1 2 12
## 6 Faxinal do Soturno G2 2 12
## 7 Faxinal do Soturno G2 2 12
## 8 Faxinal do Soturno G2 2 12
## 9 Faxinal do Soturno G2 3 13
## 10 Faxinal do Soturno G2 3 13
## 11 Faxinal do Soturno G3 3 13
## 12 Faxinal do Soturno G3 3 13
## 13 Faxinal do Soturno G3 4 14
## 14 Faxinal do Soturno G3 4 14
15
## 15 Faxinal do Soturno G3 4 14
## 16 Faxinal do Soturno G4 4 14
## 17 Faxinal do Soturno G4 5 15
## 18 Faxinal do Soturno G4 5 15
## 19 Faxinal do Soturno G4 5 15
## 20 Faxinal do Soturno G4 5 15
## 21 Santa Maria G1 1 11
## 22 Santa Maria G1 1 11
## 23 Santa Maria G1 1 11
## 24 Santa Maria G1 1 11
## 25 Santa Maria G1 2 12
## 26 Santa Maria G2 2 12
## 27 Santa Maria G2 2 12
## 28 Santa Maria G2 2 12
## 29 Santa Maria G2 3 13
## 30 Santa Maria G2 3 13
## 31 Santa Maria G3 3 13
## 32 Santa Maria G3 3 13
## 33 Santa Maria G3 4 14
## 34 Santa Maria G3 4 14
## 35 Santa Maria G3 4 14
## 36 Santa Maria G4 4 14
## 37 Santa Maria G4 5 15
## 38 Santa Maria G4 5 15
## 39 Santa Maria G4 5 15
## 40 Santa Maria G4 5 15
##
## [[2]]
## Ambiente Genotipo Rep Y
## 1 Faxinal do Soturno G1 1 11
## 2 Faxinal do Soturno G1 1 11
## 3 Faxinal do Soturno G1 1 11
## 4 Faxinal do Soturno G1 1 11
## 5 Faxinal do Soturno G1 2 12
## 6 Faxinal do Soturno G2 2 12
## 7 Faxinal do Soturno G2 2 12
## 8 Faxinal do Soturno G2 2 12
## 9 Faxinal do Soturno G2 3 13
## 10 Faxinal do Soturno G2 3 13
## 11 Faxinal do Soturno G3 3 13
## 12 Faxinal do Soturno G3 3 13
## 13 Faxinal do Soturno G3 4 14
## 14 Faxinal do Soturno G3 4 14
## 15 Faxinal do Soturno G3 4 14
## 16 Faxinal do Soturno G4 4 14
## 17 Faxinal do Soturno G4 5 15
16
## 18 Faxinal do Soturno G4 5 15
## 19 Faxinal do Soturno G4 5 15
## 20 Faxinal do Soturno G4 5 15
##
## [[3]]
## [,1] [,2] [,3]
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
x25
## [,1] [,2] [,3]
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
1.1.5 Funções
As funções são a base da linguagem R. Através de argumentos que são indicados em funtion(),
uma expressão (ou série de expressões) é resolvida e um valor (ou um conjunto de valores) é
retornado.
F1=function(x){ # x é o argumento da função
a=2*x+1
return(a) ## retorna a
}
F3=function(x){
if(x<=5)a=2*x+1 # Se x for menor ou igual a 5, resolve essa expressão
if(x>5)a=3*x+1 # Se x estiver entre 6 e 10, resolve essa expressão
if(x>10)a="ERROU!" # Se x for maior que 10
return(a)
}
F1(2)
17
## [1] 5
F2(2,2)
## [1] 7
F3(1)
## [1] 3
F3(6)
## [1] 19
F3(20)
## [1] "ERROU!"
## [1] "[Link]"
[Link](x19)
## [1] TRUE
[Link](x22)
## [1] FALSE
Algumas funções permitem classificar os objetos criados conforme o desejado:
18
x22=[Link](x22)
x19=[Link](x19)
class(x22)
## [1] "matrix"
class(x19)
## [1] "[Link]"
Podemos usar as funções vistas até agora para classificar como fatores e como vetores
numéricos um conjunto de dados (data frame). Vamos usar como exemplo um conjunto
de dados que simula um experimento com quatro genótipos conduzidos em dois ambientes.
Devemos classificar o que é fator e o que é vetor numérico (variáveis) para executar a ANOVA:
x22=[Link](
"Ambiente"=rep(c("Faxinal do Soturno","Santa Maria"),each=20),
"Genotipo"=rep(c("G1","G2","G3","G4"),each=5),
"Rep"=rep(c(1:5),each=4),
"Y"=rep(c(11:15),each=4)
)
x22$Ambiente=[Link](x22$Ambiente)
# $ indica que estamos nos referindo apenas a ambiente
x22$Genotipo=[Link](x22$Genotipo)
# $ indica que estamos nos referindo apenas a genótipo
x22$Rep=[Link](x22$Rep)
# $ indica que estamos nos referindo apenas a repetição
x22$Y=[Link](x22$Y)
# $ indica que estamos nos referindo apenas a variável Y
As operações matemáticas utilizam símbolos que são padrão em outros softwares estatísticos.
1+1 # Soma
2-1 # Subtração
2*2 # Multiplicação
sqrt(4) # Raiz quadrada
4^2 # Potência
log(10) # Por default, o logarítimo é de base e (logarítimo natural)
log(100,10) # Logarítimo de base 10
exp(100) # exponencial
No caso de matrizes, utiliza-se %*% para multiplicat matrizes, t() para transpor matrizes e
solve() e ginv() para inverter matrizes. Para exemplificar como utiliza-los, vamos resolver
o seguinte sistema de equações retirado do livro de Rencher and Schaalje (2008):
19
x1 + 2x2 = 4
x1 − x2 = 1
x1 + x2 = 3
1 2 4
" #
x1
1 −1 1
=
x2
1 1 3
20
## [12,] 1 72.8 17.1
## [13,] 1 88.4 17.4
## [14,] 1 42.9 15.8
## [15,] 1 52.5 17.8
## [16,] 1 85.7 18.4
## [17,] 1 41.3 16.5
## [18,] 1 51.7 16.3
## [19,] 1 89.6 18.1
## [20,] 1 82.7 19.1
## [21,] 1 52.3 16.0
XX=t(X)%*%X # t() = transposta
B=(solve(XX))%*%(t(X)%*%Y) # solve() = inversa
B
## [,1]
## [1,] -68.85707
## [2,] 1.45456
## [3,] 9.36550
O modelo ajustado é dado por Ŷ = −68, 85707 + 1, 45456β1 + 9, 36550β2 + ε. Também
podemos utilizar as funções det() para calcular o determinante de uma matriz. Já a função
eigen() retorna uma lista com os autovalores e autovetores da matriz. A função names()
indica o que contém no objeto av, e usando $ é possivel selecionar os autovalores ou os
autovetores.
detXX=det(XX)
av=eigen(XX)
names(av)
## [1] "values" "vectors"
av$values # Extrai os autovalores
## [1] 9.357825e+04 3.409163e+02 3.348663e-02
av$vectors # Extrai os autovetores
## [,1] [,2] [,3]
## [1,] -0.01443945 0.06534768 0.997758079
## [2,] -0.96800779 -0.25090843 0.002424222
## [3,] -0.25050433 0.96580259 -0.066880041
A função diag() extrai a diagonal da matriz:
XX
## [,1] [,2] [,3]
## [1,] 21.0 1302.40 360.00
## [2,] 1302.4 87707.94 22609.19
## [3,] 360.0 22609.19 6190.26
21
diag(XX)
1.3 Loops
Muitas vezes queremos repetir muitas vezes (em sequência) nossa programação. Isso é muito
comum e pode ser facilmente implementado pela função for(). Nesta função precisamos
apenas indicar o número de vezes (ou de que forma) que ela será executada, e dentro dela
indicar a programação que deve ser repetida n vezes.
dados_loop=[Link](matrix(nrow=10,ncol = 1)) ### onde serão armazenados os dados
names(dados_loop)=c("Dados")
for(i in 1:10){
n=runif(20,0,1)
media=mean(n)
;
dados_loop$Dados[i]=media
}
dados_loop
## Dados
## 1 0.5001109
## 2 0.4384388
## 3 0.5735661
## 4 0.4942515
## 5 0.4422534
## 6 0.4537714
## 7 0.5289987
## 8 0.5636228
## 9 0.3977546
## 10 0.5017746
Os Loops são importantes em estudos que utilizam reamostragens para realizar análises
estatísticas. Através de reamostragnes é possível construir intervalos de confiança e testar
hipóteses não paramétricas. Para fixar como utilizar a função loop(), vamos demonstrar o
teorema central do limite:
dados_loop=[Link](matrix(nrow=1000,ncol = 4)) ### onde serão armazenados os dados
names(dados_loop)=c("Dados1","Dados2","Dados3","Dados4")
for(j in 1:1000){
n=runif(20,0,1)
media[j]=mean(n)
;
dados_loop$Dados1[1:5]=media ## Armazena as 5 primeras médias
22
dados_loop$Dados2[1:10]=media ## Armazena as 10 primeras médias
dados_loop$Dados3[1:50]=media ## Armazena as 100 primeras médias
dados_loop$Dados4[1:1000]=media ## Armazena as 1000 primeras médias
}
par(mfrow=c(2,2))
hist(dados_loop$Dados1,main = "5",ylab="Frequência", xlab="Média")
hist(dados_loop$Dados2,main = "10",ylab="Frequência", xlab="Média")
hist(dados_loop$Dados3,main = "50",ylab="Frequência", xlab="Média")
hist(dados_loop$Dados4,main = "1000",ylab="Frequência", xlab="Média")
Com o que foi visto até agora, é possível construir uma tabela para armazenar dados ou
resultados gerados em uma análise. São inumeras as formas de fazer isso, porém vamos mostrar
apenas uma (devido ao pouco tempo). Utilizaremos as funções matrix() e [Link]()
para a tabela, e a função names() para dar nomeas as colunas. A construção de tabelas é
muito util para armazenar resultados na área de trabalho.
[Link]=matrix(0,ncol=3,nrow=20)
[Link]=[Link]([Link])
[Link]=[Link](matrix(0,ncol=3,nrow=20)) # Utilizando tudo em uma linha só
names([Link])=c("G1","G2","G3")
Yeld1=rnorm(20,10,1)
# gera 20 valores de uma distribuição normal com média 10 e desvio padrão 1
Yeld2=rnorm(20,40,3)
# gera 20 valores de uma distribuição normal com média 40 e desvio padrão 3
Yeld3=rnorm(20,25,2.5)
# gera 20 valores de uma distribuição normal com média 25 e desvio padrão 2,5
[Link]$G1=Yeld1
[Link]$G2=Yeld2
[Link]$G3=Yeld3
[Link]
## G1 G2 G3
## 1 9.552228 43.40519 25.61442
## 2 9.116528 34.59915 23.49314
## 3 9.029065 42.06568 25.70684
## 4 10.719547 41.35450 24.88697
## 5 10.687592 41.99486 22.45169
## 6 9.859372 38.73699 27.44829
## 7 10.165176 38.22968 25.60023
## 8 9.888961 40.44973 27.23555
## 9 10.822013 38.83267 23.31050
## 10 10.563233 37.92885 27.68391
## 11 10.363880 35.80376 25.33431
23
5 10
3.0
4
3
2.0
Frequência
Frequência
2
1.0
1
0.0
0.40 0.45 0.50 0.55 0 0.40 0.45 0.50 0.55 0.60 0.65
Média Média
50 1000
15
200
Frequência
Frequência
10
50 100
5
0
Média Média
24
## 12 11.075796 41.16020 25.39570
## 13 9.572334 38.40035 20.36521
## 14 10.451615 34.61170 26.00877
## 15 9.628439 35.43038 27.48142
## 16 10.292712 39.23545 25.15524
## 17 9.648813 41.52780 29.42458
## 18 9.552438 40.25018 27.22714
## 19 11.568640 41.93661 26.91160
## 20 8.570283 40.63130 29.92856
A entrada de dados pode ser feita de várias maneiras, e em vários formatos. Porém daremos
destaque as formas mais comuns. A forma mais simples (e mais trabalhosa) é digitar os
dados diretamente no console, utilizando para isso a função scan(). Para importar dados
digitados em extensão .txt utiliza-se a função [Link](). Por fim, para carregar arquivos
em extensão .xlsx a maneira mais simples é utilizar o Import Dataset que encontra-se na área
de trabalho.
data=scan() #Enter
1: 10
2: 20
3: 30
4: 40
5: # Duplo enter
data
A função scan() é muito trabalhosa e pouco utilizada. Caso o usuário queira carregar
dados salvos em extensão .txt (bloco de notas), usando a função [Link](), deve-se
ter o cuidado de mover o arquivo para o diretório previamente indicado. Como as colunas
são identificadas por espaços, é importante que o usuário não utilize nomes compostos no
cabeçalho ou no corpo da tabela. Quando isso ocorre, o R identifica o erro no console através
da mensagem Error in [Link]("Dados_1.txt", header = TRUE) : more columns
than column names.
dados=[Link]("Dados_1.txt",header=TRUE)
## Argumento header = TRUE indica a existência de cabeçalho
dados=[Link]("Dados_2.txt",header=TRUE)
## Argumento header = TRUE indica a existência de cabeçalho
dados
## Trat Rep Sta num peso
## 1 bcco_alb_imp 1 1132.789 0.00000 0.00000
## 2 bcco_alb_imp 2 1199.039 0.06250 0.61875
## 3 bcco_alb_imp 3 1265.189 0.06250 0.61875
## 4 bcco_alb_imp 4 1337.789 0.16525 1.48125
25
Figure 8: Importando dados de planilhas eletrônicas do Excel - Passo 1
A forma mais comum do pesquisador digitar seus dados é através de planilhas eletrônicas do
Excel. Para carregar esses dados, basta ir em Import Dataset na área de trabalho. O passo a
passo está descrito abaixo:
Também é possível carregar dados já extistentes dentro do software R. Geralmente, os pacotes
contém dados que são utilizados como exemplo de aplicação das suas funções.
head(iris) ## head() limita os valores que serão impressos no console
Será dado destaque a funções gráficas genéricas, que são muito úteis na demostração de
comportamento de veriáveis ou na análise gráfica dos resíduos de modelos da ANOVA, em
regressão linear e não linear. Será demonstrado como utilizar as funções plot(), hist(),
qqplot(), box-plot() e curve().
26
Figure 9: Importando dados de planilhas eletrônicas do Excel - Passo 2
27
1.6.1 Gráficos utilizando a função plot()
A função plot() pode ser usada para gerar gráficos com uma variável independente vs
dependente. Um exemplo simples de aplicação é dado abaixo.
dados_2=[Link]("[Link]",header=TRUE)
head(dados_2,n=6)
28
Germinação ao longo dos dias Germinação ao longo dos dias
10 20 30 40 50 60
10 20 30 40 50 60
Germinação(%)
Germinação(%)
0
0 2 4 6 8 10 12 14 0 0 2 4 6 8 10 12 14
10 20 30 40 50 60
Germinação(%)
Germinação(%)
0
0 2 4 6 8 10 12 14 0 2 4 6 8 10 12 14
29
plot(Ger~Dias, data=subset(dados_2,Classe=="G2"),xlab="Dias após a emergência"
,ylab="Germinação(%)",col="black")
plot(Ger~Dias, data=subset(dados_2,Classe=="G3"),xlab="Dias após a emergência"
,ylab="Germinação(%)",col="green")
plot(Ger~Dias, data=subset(dados_2,Classe=="G4"),xlab="Dias após a emergência"
,ylab="Germinação(%)",col="blue")
É possível gerar um gráfico com as observações de apenas uma das classes. Posteriormente,
as observações de uma segunda plassa são adicionados através da função point(). Os pontos
serão diferenciados pela cor (preto e vermelho) e pelo tipo de ponto (círculo e triangulo), e
uma legenda será adicionada utilizando a função legend(). O argumento pch indica o tipo
de ponto, pch as cores e bty="n" que a legenda não possui contorno.
par(mfrow=c(2,2))
30
30
50
25
40
Germinação(%)
Germinação(%)
20
30
15
20
10
10
5
0
0 2 4 6 8 10 12 14 0 0 2 4 6 8 10 12 14
10 20 30 40 50 60
50
Germinação(%)
Germinação(%)
40
30
20
10
0
0 2 4 6 8 10 12 14 0 2 4 6 8 10 12 14
Figure 12: Alterando a coloração dos pontos ou linhas através do argumento color()
31
30
30
25
25
Germinação(%)
Germinação(%)
20
20
15
15
10
10
5
5
Classe 1 Classe 1
Classe 2 Classe 2
0
0 2 4 6 8 10 12 14 0 0 2 4 6 8 10 12 14
30
Classe 1 Classe 1
Classe 2 Classe 2
25
25
Germinação(%)
Germinação(%)
20
20
15
15
10
10
5
5
0
0 2 4 6 8 10 12 14 0 2 4 6 8 10 12 14
32
par(mfrow=c(2,2))
dados_3=[Link]("Dados_3.txt",header=TRUE)
a=aov(a~Bloco+Trat, data=dados_3)
plot(a)
par(mfrow=c(2,2))
hist(dados_3$a, xlab = "Valores observados",
ylab = "Frequência absoluta", main = "Histograma")
norm=density(rnorm(64,411.5091,166.912))
hist(dados_3$a, xlab = "Valores observados",
ylab = "Frequência relativa", main = "Histograma", freq=FALSE)
lines(norm)
hist(dados_3$a, xlab = "Valores observados",
ylab = "Frequência relativa", main = "Histograma", freq=FALSE)
lines(norm, lty=2, lwd=2)
Esta função é muito util para verificar a normalidade dos resíduos da ANOVA e regressões
lineares ou não lineares. A programação abaixo foi utilizada no artigo de Lucio and Sari
(2017) para demonstrar a intepretação dos gráficos.
par(mfrow=c(2,2))
dados_esquerda=rbeta(1000,1,7)
dados_direita=rbeta(1000,7,1)
dados_normais=rnorm(1000,0.5,0.15)
qqnorm(dados_normais,main = "Normal")
33
Residuals vs Fitted Normal Q−Q
42 42
3
400
Standardized residuals
38 38
2
14 14
Residuals
200
1
0
0
−200
1.5
Standardized residuals
38
14
2
1.0
1
0
0.5
−1
56
Cook's distance
−2
0.0
300 350 400 450 500 0.00 0.02 0.04 0.06 0.08
34
Histograma Histograma
15
0.0020
Frequência absoluta
Frequência relativa
10
0.0010
5
0.0000
0
200 400 600 800 1000 200 400 600 800 1000
Histograma Histograma
0.0020
0.0020
Frequência relativa
Frequência relativa
0.0010
0.0010
0.0000
0.0000
200 400 600 800 1000 200 400 600 800 1000
35
qqline(dados_normais)
O gráfico de caixas também é muito útil para verificar a distribuição de determinada variável.
A caixa é delimitada pelo terceiro quartil (75%) e pelo primeiro quartil (25%). Uma linha
(ou ponto) marca o terceiro quartil (mediana = 50%).
par(mfrow=c(2,2))
dados_3$Trat=[Link](dados_3$Trat)
boxplot(dados_normais, main = "Normal")
boxplot(dados_direita, main = "Assimétrico à direita")
boxplot(dados_esquerda, main = "Assimétrico à esquerda")
boxplot(a~Trat,dados_3, main = "Avaliações no tempo") ## Plotando várias caixas
A função curve pode ser utilizada para traçar as curvas geradas por regressões lineares ou
não lineares. Ela pode ser utilizada em conjunto com outras funções gráficas, como plot()
por exemplo.
####### Polinômio de segundo grau
Y = c(64,53,46,56,39,46)
Trat = c(15,20,25,30,35,40)
Model=function(x,b0,b1,b2){
b0+b1*x+b2*(x^2)
}
36
Normal Normal
100 150 200 250
1.0
Frequência absoluta
0.8
Sample Quantiles
0.6
0.4
0.2
50
0.0
0
Assimétrico Assimétrico
1.2
100 200 300 400 500
Frequência absoluta
1.0
Sample Quantiles
0.8
0.6
0.4
0
37
Normal Assimétrico à direita
1.0
1.0
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.0
0.2
800
600
0.4
400
0.2
200
0.0
1 3 5 7 9 11 14
38
100
107.128571−4.201429x+0.072857x²
80
60
Produção
40
20
Observado
Estimado
15 20 25 30 35 40
Doses
39
curve(Model(x,b0=107.128571,b1=-4.201429,b2=0.072857),add=TRUE,lty=2,lwd=2)
curve(Model2(x,b0=57.342857,b1=-0.194286),add=TRUE,lty=3,lwd=2)
legend("bottomleft", legend = c("Observado","1º Grau","2º Grau"),
lty=c(NA,3,2),pch=c(16,NA,NA), lwd=c(2,2,2), bty="n")
Será demosnstrado nessa seção como exportar dados e tabelas gerados dentro do software
R. Quanto a saída de resultados, será dado enfase a saídas com extensões .csv, .txt e .xlsx.
Quanto aos gráficos, será mostrado como salvar figuras em alta resolução.
40
100
80
60
Produção
40
20
Observado
1º Grau
2º Grau
15 20 25 30 35 40
Doses
41
Para salvar as saídas em extensão .txt utiliza-se a função sink(), indicando o nome do
arquivo que será exportado (“NOME_ARQUIVO.txt”).
sink("Modelo [Link]")
cat("-------------------------------MODELO------------------------------------\n")
print(mod1)
cat("\n")
cat("-------------------------------ANOVA------------------------------------\n")
print(anova(mod1))
sink()
Salvar em extensão . xls e .xlsx
Para salvar arquivos em extensão .xlsx usaremos a função [Link]() do pacote xlsx.
É necessário também que o pacote rJava estaja instalado e seja carregado. Na função
[Link]() é necesário indicar o nome do objeto que se deseja exportar e o “caminho” do
diretório com o nome do arquivo (“NOME_ARQUIVO.xls” ou “NOME_ARQUIVO.xlsx”).
require(rJava)
require(xlsx)
[Link](x22, "figuresTabela [Link]")
[Link](x22, "figuresTabela [Link]")
Os gráficos podem ser exportados clicando em Export no output dos gráficos. Você pode
escolher entre salvar como imagem ou como PDF. Os formatos de imagem disponíveis são:
.PNG, .TIFF, .JPEG, .BMP , .SVG e .ESP . A outra opção é salvar em um arquivo PDF . A
principal diferença entre estes formatos é o método de renderização utilizado na formação
do gráfico. Existem basicamente dois métodos de renderização de imagens: raster images
e vector-based images. Imagens rasterizadas usam muitos pixels coloridos ou blocos de
construção individuais para formar uma imagem completa. JPEGs, GIFs e PNGs e TIFFs são
tipos de imagem raster mais comuns. Como as imagens raster são criadas usando um número
fixo de pixels coloridos, elas não podem ser redimensionadas drasticamente sem comprometer
sua resolução. Quando esticados para caber em um espaço que eles não foram projetados para
preencher, seus pixels ficam visivelmente granulados e a imagem é distorcida. É importante
que você salve os arquivos raster precisamente nas dimensões necessárias e com a devida
resolução para uma boa apresentação. Para salvar estas imagens é necessário informar a
Density of Pixels per Inch (DPI) , ou seja, quantos pontos por polegada quadrada deverá
conter a imagem. Quanto maior este valor, maior será a qualidade da imagem e também
maior será seu tamanho (em Mb).
Imagens vetoriais (vector-based graphics), por outro lado, permitem mais flexibilidade. Con-
struídos usando fórmulas matemáticas em vez de blocos coloridos individuais, os tipos de
arquivos vetoriais, como .PDF e .EPS *, são excelentes para criar gráficos de alta resolução
sem que seu redimensionamento prejudique a qualidade do gráfico. A maioria das revistas
cintíficas aceitam todos estes tipos de formatos. Na dúvida, escolha sempre o formato .PDF
(ou .EPS)!
42
hist(dados_3$a, xlab = "Valores observados",
ylab = "Frequência relativa", main = "Histograma", freq=FALSE)
lines(norm, lty=2, lwd=2)
Histograma
0.0025
0.0020
0.0015
Frequência relativa
0.0010
0.0005
0.0000
Valores observados
Uma alternativa prática para salvar em pdf as imagens é através da função pdf(). Os
argumentos width e height correspondem a dimensão da figura (em polegadas) e pointsize
corresponde ao tamanho da fonte.
pdf("[Link]",width = 9,height = 8,pointsize = 25)
hist(dados_3$a, xlab = "Valores observados",
43
Figure 20: Salvando figuras como imagens
44
ylab = "Frequência relativa", main = "Histograma", freq=FALSE)
lines(norm, lty=2, lwd=2)
[Link]()
É importante notar que a figura só será salva após o comando [Link]() for executado.
Portanto, para gerar várias figuras ao mesmo tempo, basta colocá-las uma embaixo da outra:
pdf("[Link]",width = 9,height = 8,pointsize = 25)
####### Polinômio de segundo grau
Y = c(64,53,46,56,39,46)
Trat = c(15,20,25,30,35,40)
Model=function(x,b0,b1,b2){
b0+b1*x+b2*(x^2)
}
plot(Y~Trat, xlab="Doses", ylab="Produção", pch=16, ylim=c(10,100), xlim=c(15,40))
curve(Model(x,b0=107.128571,b1=-4.201429,b2=0.072857),add=TRUE,lty=2,lwd=2)
legend("top", legend = c("107.128571-4.201429x+0.072857x2"),bty="n")
legend("bottomleft", legend = c("Observado","Estimado"),
lty=c(NA,2),pch=c(16,NA), lwd=c(2,2), bty="n")
png(filename="[Link]",width=16,height=16,units="cm",pointsize=12,res=1200)
hist(dados_3$a, xlab = "Valores observados", ylab = "Frequência relativa",
45
main = "Histograma", freq=FALSE)
lines(norm, lty=2, lwd=2)
[Link]()
jpeg(filename="[Link]",width=16,height=16,units="cm",pointsize=12,res=1200)
hist(dados_3$a, xlab = "Valores observados", ylab = "Frequência relativa",
main = "Histograma", freq=FALSE)
lines(norm, lty=2, lwd=2)
[Link]()
bmp(filename="[Link]",width=16,height=16,units="cm",pointsize=12,res=1200)
hist(dados_3$a, xlab = "Valores observados", ylab = "Frequência relativa",
main = "Histograma", freq=FALSE)
lines(norm, lty=2, lwd=2)
[Link]()
Nesta seção será abordado aspectos relacionados a análise de experimentos agrícolas. Ressalta-
se que como o tempo é curto, será dado enfase a testes paramétricos. Dividiremos essa seção
em três partes:
Parte 1: medidas de tendência central e de variabilidade. Intervalos de confiança para média.
Testes de hipóteses para verificar a igualdade entre médias de uma ou duas amostras.
Parte 2: delineamentos experimentais inteiramente casualisado (DIC) e blocos ao acaso
(DBC). pressupostos dos modelos estatisticos, testes complementares (média e regressão) e
transformação de dados.
Parte 3: experimentos fatorias e experimentos com parcelas subdivididas.
Nesta seção mostraremos como calular medidas de tendência central e medidas de variabilidade.
As medidas de tendencia central são valores que representam um conjunto de dados. Entre
as mais comuns podemos citar a média, mediana e moda.
mean(dados_normais) ## média
## [1] 0.5002164
median(dados_normais) ## mediana
## [1] 0.5052466
O R calcula a média e mediana através das funções mean() e median() , porém não calcula
a moda. No blog Ridículas, mantido pelo LEG da UFPR, dois métodos são dicutidos.
46
Incentivamos a leitura do material. Já o desvio padrão e a variância podem ser obtidas com
as funções sd() e var() :
sd(dados_normais)
## [1] 0.1520033
var(dados_normais)
## [1] 0.02310502
Para calcular o coeficiente de varição, pode-se usar a função function():
CV=function(dados){
class=class(dados)
if(class=="numeric"){ #Indica que os dados devem ser numéricos
media=mean(dados)
sd=sd(dados)
CV=sd/media*100
}
return(CV) ## Valor que será retornado pela função
}
CV(dados_normais)
## [1] 30.38752
A diatribuição dos dados pode ser determinada através de histograma de frequências, QQ-Plos
e Box-Plot (conforme visto anteriormente). Estatísticas como a amplitude, erro padrão da
média, intervalo de confiança, entre outros, podem ser obtidas pela função [Link]() do
pacote pastecs. A vantagem deste pacote é que um objeto com muitas variáveis ([Link],
por exemplo) pode ser utilizada como argumento.
require(pastecs)
head([Link]) ## dados de três genótipos
## G1 G2 G3
## 1 9.552228 43.40519 25.61442
## 2 9.116528 34.59915 23.49314
## 3 9.029065 42.06568 25.70684
## 4 10.719547 41.35450 24.88697
## 5 10.687592 41.99486 22.45169
## 6 9.859372 38.73699 27.44829
tail([Link]) ## 20 observações
## G1 G2 G3
## 15 9.628439 35.43038 27.48142
## 16 10.292712 39.23545 25.15524
## 17 9.648813 41.52780 29.42458
## 18 9.552438 40.25018 27.22714
47
## 19 11.568640 41.93661 26.91160
## 20 8.570283 40.63130 29.92856
[Link]([Link])
## G1 G2 G3
## [Link] 20.00000000 20.00000000 20.00000000
## [Link] 0.00000000 0.00000000 0.00000000
## [Link] 0.00000000 0.00000000 0.00000000
## min 8.57028299 34.59914616 20.36521294
## max 11.56864033 43.40518930 29.92855937
## range 2.99835735 8.80604314 9.56334643
## sum 201.12866490 786.58501441 516.66406245
## median 10.02706829 39.74281494 25.66062964
## mean 10.05643324 39.32925072 25.83320312
## [Link] 0.16726596 0.58712128 0.50941242
## [Link].0.95 0.35009168 1.22885896 1.06621244
## var 0.55955804 6.89422797 5.19002021
## [Link] 0.74803612 2.62568619 2.27816159
## [Link] 0.07438384 0.06676166 0.08818734
Testes de aderência a distribuições teóricas também são de grande utilizada para as ciências
agrárias. O teste de Shapiro-Wilk, através da função [Link]() , é amplamente
utilizada para realizar o teste de normalidade dos dados. Para testar a aderência a outras
distribuições teóricas, o teste de Kolmolgorov-Smirnov (função [Link]()) é uma alternativa.
Amostra1=rnorm(100,5,10) ## Gera uma amostra com distribuição normal
Amostra2=rpois(100,12) ## Gera uma amostraom distribuição Poisson
Amostra3=rnorm(100,5,10)
[Link](Amostra1)
##
## Shapiro-Wilk normality test
##
## data: Amostra1
## W = 0.98232, p-value = 0.2008
[Link](Amostra2)
##
## Shapiro-Wilk normality test
##
## data: Amostra2
## W = 0.96473, p-value = 0.008869
[Link](Amostra1,Amostra2)
##
## Two-sample Kolmogorov-Smirnov test
##
48
## data: Amostra1 and Amostra2
## D = 0.48, p-value = 1.972e-10
## alternative hypothesis: two-sided
[Link](Amostra1,Amostra3)
##
## Two-sample Kolmogorov-Smirnov test
##
## data: Amostra1 and Amostra3
## D = 0.08, p-value = 0.9062
## alternative hypothesis: two-sided
Uma maneira de verificar a normalidade graficamente através de um gráfico dos valores
observados vs uma distribuição teórica.
hist(dados_normais, xlab="",ylab="",freq=FALSE,main="", nclass = 20)
mean=mean(dados_normais)
sd=sd(dados_normais)
pois=density(rpois(1000,mean))
lines(pois)
A estimação por intervalo não fornece idéia da margem de erro cometida ao estimar deterinado
parâmetro (Ferreira 2009). Por isso, para verificar se uma dada hipótese H0 (de igualdade) é
ou não verdadeira, deve-se utilizar intervalos de confiança ou testes de hipóteses. A construção
destes intervalos, e as particularidades dos testes de hipóteses, serão discutidos a seguir.
Recomendamos como literatura o livro Estatística Básica do prof. Daniel Furtado Ferreira
da UFV (ver aqui). Para verificar a normalidade dos dados, as funções [Link]() e
[Link]() e os gráficos Qq-Plot são de grande utilidade.
Normalidade dos dados
É importante ressaltar que o curso terá como enfase a análise de dados com distribuição
normal. Será demostrado como testar hióteses para uma e duas médias pelo teste t de
Student, o que exiege que os dados tenham distribuição normal univariada (já discutido
anteriormente) ou bivariada (dados emparelhados). Para testar a normalidade bivariada,
basta testar a normalidade da diferença entre as variáveis:
Amostra1=rnorm(100,10,10)
Amostra2=rnorm(100,10,24)
Amostra3=Amostra1-Amostra2
[Link](Amostra3)
##
## Shapiro-Wilk normality test
##
## data: Amostra3
49
2.5
2.0
1.5
1.0
0.5
0.0
50
## W = 0.98829, p-value = 0.5298
A partir de um intervalo que tenha alta probabilidade de conter o valor paramétrico, é possível
diferenciar duas estimativas (Ferreira 2009). Devido ao pouco tempo, será dado enfase a
construnção de intervalos de confiança para a média. O intervalo de confiança de uma média
amostral de 95% é dado por:
" #
S S
P X̄ − tα/2 √ ≤ µ ≤ X̄ + tα/2 √ = 1 − α
n n
Na expressão acima, X̄ é a média, S é o desvio padrão e −tα/2 e +tα/2 são os quantis inferior
e superior, respectivamente, da distribuição t de Student. O intervalo acima indica que o
valor do parâmetro (α) tem 95% de chance de estar contido no intervalo. Ressalta-se que a
expressão acima está relacionada com a precisão e não com a acurácia da estimativa. Para
calcular esse intervalo, podemos utilizar a função [Link]() .
result=[Link](dados_normais)
result$[Link] ## Intervalo de confiança
51
require(ggplot2)
result=[Link](dados_normais)
dados_IC=[Link](
"Factor"=c("Amostra 1"),
"LL"=c(result$[Link][1]), # armazena o limite inferior
"Mean"=c(mean(dados_normais)), # armazena a média
"UL"=c(result$[Link][2]) # armazena o limite superior
)
Amostra1=rnorm(100,10,10)
Amostra2=rnorm(100,10,24)
Amostra3=rnorm(100,25,15)
Amostra4=rnorm(100,20,30)
results1=[Link](Amostra1)
results2=[Link](Amostra2)
results3=[Link](Amostra3)
results4=[Link](Amostra4)
require(ggplot2)
dados_IC=[Link](
"Factor"=c("Amostra 1","Amostra 2", "Amostra 3", "Amostra 4"),
"LL"=c(results1$[Link][1],results2$[Link][1],results3$[Link][1],
results4$[Link][1]),
"Mean"=c(mean(Amostra1),mean(Amostra2),mean(Amostra3),
mean(Amostra4)),
"UL"=c(results1$[Link][2],results2$[Link][2],results3$[Link][2],
results4$[Link][2]))
52
Factor
Amostra 1
53
Amostra 4
Amostra 3 Factor
Amostra 1
Factor
Amostra 2
Amostra 3
Amostra 2 Amostra 4
Amostra 1
0 10 20 30
Mean
54
30
20
Factor
Amostra 1
Mean
Amostra 2
Amostra 3
Amostra 4
10
##
## One Sample t-test
55
##
## data: Amostra1
## t = 10.057, df = 99, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 7.65778 11.42241
## sample estimates:
## mean of x
## 9.540094
[Link](Amostra1,Amostra2) # testa se as amostras difrem entre si
##
## Welch Two Sample t-test
##
## data: Amostra1 and Amostra2
## t = 0.76359, df = 131.71, p-value = 0.4465
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -3.022947 6.823999
## sample estimates:
## mean of x mean of y
## 9.540094 7.639569
O teste t pode ser utilizado para testar tanto hipóteses do tipo HA : µ > 0 ou HA : µ < 0.
Porém, para isso, devemos utilizar o argumento alternative para indicar que o teste utilizado
é unilateral.
[Link](Amostra1, alternative="greater") # unilateral a direita
##
## One Sample t-test
##
## data: Amostra1
## t = 10.057, df = 99, p-value < 2.2e-16
## alternative hypothesis: true mean is greater than 0
## 95 percent confidence interval:
## 7.964975 Inf
## sample estimates:
## mean of x
## 9.540094
[Link](Amostra1, alternative="less") # unilateral a esquerda
##
## One Sample t-test
##
## data: Amostra1
## t = 10.057, df = 99, p-value = 1
56
## alternative hypothesis: true mean is less than 0
## 95 percent confidence interval:
## -Inf 11.11521
## sample estimates:
## mean of x
## 9.540094
Outro pressuposto para realizar o teste t é a homogeneidade das variâncias. Quando as
variâncias sãi heterogêneas, o grau de liberdade utilizado é calculado pela aproximação de
Welch-Satterthwaite:
S12 S22 2
+
ν∼
n1 n2
= S 2 2 S 2 2
1 2
n1 n2
n1 −1
+ n2 −1
##
## F test to compare two variances
##
## data: Amostra1 and Amostra2
## F = 0.16996, num df = 99, denom df = 99, p-value < 2.2e-16
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.1143565 0.2526011
## sample estimates:
## ratio of variances
## 0.1699605
[Link](Amostra1, Amostra2, [Link] = FALSE) ## Por default, usa Welch-Satterthwaite
##
## Welch Two Sample t-test
##
## data: Amostra1 and Amostra2
## t = 0.76359, df = 131.71, p-value = 0.4465
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -3.022947 6.823999
## sample estimates:
## mean of x mean of y
## 9.540094 7.639569
Amostra1 = rnorm(30,10,5)
Amostra2 = rnorm(30,18,5)
[Link](Amostra1, Amostra2)
57
##
## F test to compare two variances
##
## data: Amostra1 and Amostra2
## F = 0.69763, num df = 29, denom df = 29, p-value = 0.3377
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.3320469 1.4657160
## sample estimates:
## ratio of variances
## 0.6976292
[Link](Amostra1, Amostra2, [Link] = TRUE) ## Quando variâncias são iguais
##
## Two Sample t-test
##
## data: Amostra1 and Amostra2
## t = -5.8942, df = 58, p-value = 2.035e-07
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -9.824851 -4.843396
## sample estimates:
## mean of x mean of y
## 10.45246 17.78658
As formas de comparação discutidas acima consideram as amostras como sendo independentes
entre si. Para dados emparelhados, deve-se utiliza o argumento paired= TRUE.
Amostra1 = rnorm(30,10,5)
Amostra2 = rnorm(30,15,5)
##
## F test to compare two variances
##
## data: Amostra1 and Amostra2
## F = 0.67484, num df = 29, denom df = 29, p-value = 0.2953
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.3212015 1.4178423
## sample estimates:
## ratio of variances
## 0.674843
[Link](Amostra1, Amostra2, [Link] = TRUE, paired = TRUE) ## Emparelhadas
##
58
## Paired t-test
##
## data: Amostra1 and Amostra2
## t = -5.2117, df = 29, p-value = 1.408e-05
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -8.102724 -3.535511
## sample estimates:
## mean of the differences
## -5.819117
[Link](Amostra1, Amostra2, [Link] = TRUE, paired = FALSE) ## Independentes
##
## Two Sample t-test
##
## data: Amostra1 and Amostra2
## t = -4.5077, df = 58, p-value = 3.235e-05
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -8.403204 -3.235030
## sample estimates:
## mean of x mean of y
## 10.23740 16.05652
Observa-se que existe uma diferença no valor da estatistica teste, nos graus de liberdade, no
valor tabelado e, consequentemente, no p-valor. Para duas amostras independentes, o teste
para a diferença é dado por
X̄1 − X̄2
tc = q ∼ t(α,ν)
S 1
n1
+ 1
n2
d¯ − µ0
tc = Sd ∼ t(α,ν)
√
n
59
2.3 Delineamentos básicos
As análises realizadas até agora tinham como objetivo verificar a existência de diferenças
entre as médias de duas amostras. Porém, uma das análises estatisticas mais comuns, quando
deseja-se estudar o efeito de “grupos de fatores” sobre determinado fenômeno, é a análise da
variância (ANOVA).A ANOVA atribui a diversos fatores partes da variabilidade dos dados
(Casella 2008).
Os delineamentos experimentais também são parte importante da ANOVA. Será dado mais
destaque aos mais comuns: o delineamento inteiramente casualisado (DIC) e o blocos ao
acaso (DBC) . O bloqueamento tem como objetivo remover parte da variabilidade. Como
não se deseja encotrar diferença entre os blocos, análises complementares não são realizadas
para este fator.
Nessa seção será demostrado como analisar dados experimentais utilizando estes dois delinea-
mentos. Em um primeiro momento, serão demonstrados experimentos unifatorias e, mais
adiante, experimentos bifatoriais com e sem parcelas subdivididas. Formas de como verificar
se os pressupostos do modelo estatistico estão sendo cumpridos, e formas de contornar este
problema caso estejam sendo violados, também serão demonstrados.
Por fim, após a análise da variância,serão mostrados os testes complementares utilizados para
tratamentos quali e quantitativos.
Princípios básicos
Os principios básicos da experimentação são a casualisação e a repetição. A repetição
possibilita que o erro seja estimado, e a casualisação que eles sejam independentes.
Pressupostos
Independente do delineamento, os pressupostos do modelo estatístico são que os erros são
independentes, homocedásticos e normais:
ε ∼ N 0, Iσ 2
60
exemplo hipotético abaixo:
#### Considerando os dados abaixo
dados=[Link](
"Tratamentos"=c(rep(1:4,each=4)),
"Y"=dados_3$a[1:16]
)
dados
## Tratamentos Y
## 1 1 416.1087
## 2 1 292.4907
## 3 1 425.9184
## 4 1 302.5734
## 5 2 369.7512
## 6 2 180.5917
## 7 2 322.3873
## 8 2 290.9101
## 9 3 254.9141
## 10 3 111.9849
## 11 3 206.6612
## 12 3 446.0961
## 13 4 455.4335
## 14 4 607.2445
## 15 4 224.3256
## 16 4 472.1252
#### Usando a função aov()
mod1=aov(Y~factor(Tratamentos), data=dados)
mod1$coefficients
## (Intercept) factor(Tratamentos)2 factor(Tratamentos)3
## 359.27278 -68.36271 -104.35871
## factor(Tratamentos)4
## 80.50939
mod2=lm(Y~factor(Tratamentos), data=dados)
mod2$coefficients
## (Intercept) factor(Tratamentos)2 factor(Tratamentos)3
## 359.27278 -68.36271 -104.35871
## factor(Tratamentos)4
## 80.50939
#### Abordagem matricial
y=[Link](dados_3$a[1:16])
x=[Link](cbind(rep(1,each=16),c(0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0),
c(0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0),
c(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1))) ## reparametrização
x
61
## [,1] [,2] [,3] [,4]
## [1,] 1 0 0 0
## [2,] 1 0 0 0
## [3,] 1 0 0 0
## [4,] 1 0 0 0
## [5,] 1 1 0 0
## [6,] 1 1 0 0
## [7,] 1 1 0 0
## [8,] 1 1 0 0
## [9,] 1 0 1 0
## [10,] 1 0 1 0
## [11,] 1 0 1 0
## [12,] 1 0 1 0
## [13,] 1 0 0 1
## [14,] 1 0 0 1
## [15,] 1 0 0 1
## [16,] 1 0 0 1
beta=solve(t(x)%*%x)%*%t(x)%*%y
beta
## [,1]
## [1,] 359.27278
## [2,] -68.36271
## [3,] -104.35871
## [4,] 80.50939
Abaixo é apresentado o calculo da ANOVA de mod1 através de uma aboragem matricial.
Portanto verifica-se que a reparametrização é o método utilizado pelas funções aov() e lm().
## Anova com uma abrodagem matricial
SQtrat=t(beta)%*%t(x)%*%y-((sum(y))^2)/16
SQtotal=t(y)%*%y-((sum(y))^2)/16
SQRes = SQtotal-SQtrat
Fc=(SQtrat/3)/(SQRes/12)
SQtrat
## [,1]
## [1,] 79680.8
SQRes
## [,1]
## [1,] 169787.4
Fc
## [,1]
## [1,] 1.87719
62
anova(mod1)
O DIC é um delineamento adequado para áreas uniformes (parcelas são uniformes), onde não
há necessidade de controle local (bloqueamento). Com esse delineamento, os tratamentos
devem ser distribuidos aleatoriamente nas parcelas.
O modelo do DIC é dado por
Yij = m + ti + εij
Argumento Descrição
trat Objeto contendo os tratamentos
resp Objeto contendo a variável resposta
quali Se TRUE, o tratamento é qualitativo (default)
mcomp Indicar o teste complementar (Tukey é default)
nl Indica se uma regressão deve ser ajustada (FALSE é o default)
hvar Teste de homogeneidade da variância (Bartlett é o default)
63
Argumento Descrição
sigT Significância da comparação múltipla
sigF Significância do teste F
Para maiores detalhes, ver o pdf do pacote (aqui) ou ir em ajuda (digitar ?ExpDes no console).
64
## 31 8 3 477 7.94 0.00276 2878 2401 3355 3709
## 32 8 4 367 7.13 0.00243 2937 2395 3479 3881
## 33 9 1 534 5.29 0.00191 2773 2081 3465 3977
## 34 9 2 445 5.43 0.00206 2641 2000 3282 3757
## 35 9 3 609 5.11 0.00177 2892 2146 3637 4189
## 36 9 4 547 5.32 0.00191 2785 2096 3475 3985
## 37 10 1 315 5.35 0.00194 2756 2077 3435 3938
## 38 10 2 821 5.07 0.00179 2837 2101 3574 4120
## 39 10 3 608 5.90 0.00202 2912 2261 3562 4044
## 40 10 4 526 5.12 0.00188 2728 2026 3430 3950
## 41 11 1 511 6.59 0.00257 2564 2052 3077 3456
## 42 11 2 929 5.28 0.00189 2795 2098 3492 4009
## 43 11 3 462 5.05 0.00178 2828 2090 3566 4112
## 44 11 4 562 5.81 0.00215 2707 2094 3320 3775
## 45 12 1 637 5.46 0.00198 2757 2092 3422 3915
## 46 12 2 731 6.12 0.00209 2934 2302 3565 4032
## 47 12 3 508 6.41 0.00238 2689 2136 3242 3651
## 48 12 4 618 6.02 0.00212 2845 2223 3468 3929
## 49 13 1 492 5.65 0.00202 2799 2147 3452 3935
## 50 13 2 447 5.75 0.00192 3003 2315 3690 4199
## 51 13 3 320 7.18 0.00266 2698 2203 3193 3559
## 52 13 4 326 6.04 0.00229 2635 2061 3209 3634
## 53 14 1 389 6.52 0.00236 2763 2206 3321 3734
## 54 14 2 388 6.63 0.00248 2672 2141 3203 3596
## 55 14 3 422 5.64 0.00195 2888 2213 3562 4061
## 56 14 4 270 7.60 0.00275 2764 2285 3243 3598
## 57 15 1 472 5.91 0.00217 2731 2122 3339 3789
## 58 15 2 306 6.18 0.00250 2477 1949 3005 3396
## 59 15 3 485 6.33 0.00219 2886 2285 3486 3931
## 60 15 4 416 7.06 0.00262 2692 2190 3194 3567
## 61 16 1 522 7.31 0.00251 2912 2387 3437 3826
## 62 16 2 479 6.17 0.00209 2952 2322 3582 4048
## 63 16 3 739 7.47 0.00257 2910 2397 3423 3803
## 64 16 4 478 6.34 0.00231 2744 2173 3314 3736
trat=[Link](dados_3$Trat)
resp=[Link](dados_3$a)
mod3=crd(trat,resp,sigF = 0.05)
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 15 1009319 67288 4.3305 5.1207e-05
## Residuals 48 745837 15538
## Total 63 1755156
## ------------------------------------------------------------------------
65
## CV = 30.29 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.1899147
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.3466402
## According to the test of bartlett at 5% of significance, residuals can be considered
## ------------------------------------------------------------------------
##
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 12 623.5205
## a 11 615.8117
## ab 10 567.6311
## ab 16 554.2897
## ab 9 533.6724
## ab 4 439.7822
## ab 15 419.6284
## ab 13 396.133
## ab 14 367.076
## ab 1 359.2728
## ab 8 328.184
## b 6 294.6677
## b 2 290.9101
## b 7 274.764
## b 5 263.8872
## b 3 254.9141
## ------------------------------------------------------------------------
É possível extrair os erros através de mod3$residuos. Também é possível fazer diagnóstico
dos pressupostos do modelo estatístico através de gráficos utilizando a função plotres():
plotres(mod3)
O p-valor do teste de Shapiro-Wilk mostrou que os resíduos seguem uma distribuição, o que
pode ser confirmado pelo QQ-Plot. Além disso, a dispersão dos resíduos indica que eles são
homogêneos. Para escolher qual teste utilizar para verificar a homocedasticidade dos erros,
basta indicar a opção levene no argumento hvar. Lembrando que o default da função é o
teste de Bartlett.
66
Histogram Normal Q−Q (95%)
300
0.5
0.4
100
Residuals
Density
0.3
0
0.2
0.1
−200
0.0
−2 −1 0 1 2 3 −2 −1 0 1 2
Standardized Residuals z
2
Standardized Residuals
1
0
0
−1
−1
−2
−2
Fitted Values
67
mod3.1=crd(trat,resp,sigF = 0.05,mcomp = "sk", hvar = "levene") ## Bartlett
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 15 1009319 67288 4.3305 5.1207e-05
## Residuals 48 745837 15538
## Total 63 1755156
## ------------------------------------------------------------------------
## CV = 30.29 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.1899147
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.0001074615
## WARNING: at 5% of significance, residuals can not be considered homocedastic!
## ------------------------------------------------------------------------
##
## Scott-Knott test
## ------------------------------------------------------------------------
## Groups Treatments Means
## 1 a 12 623.5205
## 2 a 11 615.8117
## 3 a 10 567.6311
## 4 a 16 554.2897
## 5 a 9 533.6724
## 6 b 4 439.7822
## 7 b 15 419.6284
## 8 b 13 396.1330
## 9 b 14 367.0760
## 10 b 1 359.2728
## 11 b 8 328.1840
## 12 b 6 294.6677
## 13 b 2 290.9101
## 14 b 7 274.7640
## 15 b 5 263.8872
## 16 b 3 254.9141
## ------------------------------------------------------------------------
Comparação múltipla
68
Em relação a comparação múltipla, o pacote utiliza o teste de Tukey como padrão para
comparar médias. Para utilizar o teste de Scott-Knott para comparar as médias, basta indicar
a opção sk no argumento mcomp.
mod3.2=crd(trat,resp,sigF = 0.05,mcomp = "sk") ## Scott-Knott
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 15 1009319 67288 4.3305 5.1207e-05
## Residuals 48 745837 15538
## Total 63 1755156
## ------------------------------------------------------------------------
## CV = 30.29 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.1899147
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.3466402
## According to the test of bartlett at 5% of significance, residuals can be considered
## ------------------------------------------------------------------------
##
## Scott-Knott test
## ------------------------------------------------------------------------
## Groups Treatments Means
## 1 a 12 623.5205
## 2 a 11 615.8117
## 3 a 10 567.6311
## 4 a 16 554.2897
## 5 a 9 533.6724
## 6 b 4 439.7822
## 7 b 15 419.6284
## 8 b 13 396.1330
## 9 b 14 367.0760
## 10 b 1 359.2728
## 11 b 8 328.1840
## 12 b 6 294.6677
## 13 b 2 290.9101
## 14 b 7 274.7640
## 15 b 5 263.8872
## 16 b 3 254.9141
69
## ------------------------------------------------------------------------
Gráfico de resultados: uma proposta
medias_mod3.2=mod3.2$means ## Armazenando as médias
medias_mod3.2=medias_mod3.2[rev(order(medias_mod3.2$resp)),] ## Ordenando o banco de dad
medias_mod3.2=[Link](
"trat"=factor(medias_mod3.2[,1]),
"resp"=c(medias_mod3.2[,2]),
"grupos"=grupos
)
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 6 11803.9 1967.32 25.805 8.3498e-07
## Residuals 14 1067.3 76.24
## Total 20 12871.2
## ------------------------------------------------------------------------
## CV = 11.56 %
##
70
800
a a
600
a a
a
b
b
resp
400 b
b b
b
b b
b b
b
200
1 10 11 12 13 14 15 16 2 3 4 5 6 7 8 9
trat
71
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.7855485
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.4249146
## According to the test of bartlett at 5% of significance, residuals can be considered
## ------------------------------------------------------------------------
##
## Adjustment of polynomial models of regression
## ------------------------------------------------------------------------
##
## Linear Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 44.5595 3.4349 12.9725 0
## b1 2.0643 0.1905 10.8341 0
## ------------------------------------------
##
## R2 of linear model
## --------
## 0.758112
## --------
##
## Analysis of Variance of linear model
## =====================================================
## DF SS MS Fc [Link]
## -----------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 117.38 0
## Lack of fit 5 2,855.2260 571.0452 7.49 0.00131
## Residuals 14 1,067.3330 76.2381
## -----------------------------------------------------
## ------------------------------------------------------------------------
##
## Quadratic Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 28.3095 4.4002 6.4336 0.00002
## b1 5.9643 0.6870 8.6818 0
## b2 -0.1300 0.0220 -5.9088 0.00004
## ------------------------------------------
72
##
## R2 of quadratic model
## --------
## 0.983609
## --------
##
## Analysis of Variance of quadratic model
## ========================================================
## DF SS MS Fc [Link]
## --------------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 117.38 0
## Quadratic Effect 1 2,661.7500 2,661.7500 34.91 4e-05
## Lack of fit 4 193.4762 48.3691 0.63 0.64625
## Residuals 14 1,067.3330 76.2381
## --------------------------------------------------------
## ------------------------------------------------------------------------
##
## Cubic Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 30.4206 4.8577 6.2623 0.00002
## b1 4.5569 1.5344 2.9698 0.0101
## b2 -0.0033 0.1254 -0.0266 0.9792
## b3 -0.0028 0.0027 -1.0258 0.3224
## ------------------------------------------
##
## R2 of cubic model
## --------
## 0.990405
## --------
##
## Analysis of Variance of cubic model
## ========================================================
## DF SS MS Fc [Link]
## --------------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 117.38 0
## Quadratic Effect 1 2,661.7500 2,661.7500 34.91 4e-05
## Cubic Effect 1 80.2222 80.2222 1.05 0.32239
## Lack of fit 3 113.2540 37.7513 0.5 0.69143
## Residuals 14 1,067.3330 76.2381
## --------------------------------------------------------
## ------------------------------------------------------------------------
O polinômio de segunda grau deve ser o escolhido, pois ele foi o maior grau significativo (p-
valor menor que 0,05). Os desvios da regressão nada mais são do que a FALTA DE AJUSTE
dos modelos. Porém, como é comum em ciências agrárias, ajusta-se apenas polinômios até a
73
terceira ordem, devido a dificuldade de interpretção de polinômios com ordens superiores. É
importante ressaltar que aqui estamos falando de regressões polinomiais. Como veremos
mais pra frente, a falta de ajuste é inaceitável para modelos de regressão múltipla. O valor
de R2 é dado pela razão entre a SQRegressão e a SQT ratamento . No exemplo acima, o R2 da
regressão quadrática (selecionada) é:
## ------------------------------------------------------------------------
74
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 6 11803.9 1967.32 25.805 8.3498e-07
## Residuals 14 1067.3 76.24
## Total 20 12871.2
## ------------------------------------------------------------------------
## CV = 11.56 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.7855485
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.4249146
## According to the test of bartlett at 5% of significance, residuals can be considered
## ------------------------------------------------------------------------
##
## Adjustment of polynomial models of regression
## ------------------------------------------------------------------------
##
## Linear Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 44.5595 3.4349 12.9725 0
## b1 2.0643 0.1905 10.8341 0
## ------------------------------------------
##
## R2 of linear model
## --------
## 0.758112
## --------
##
## Analysis of Variance of linear model
## =====================================================
## DF SS MS Fc [Link]
## -----------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 117.38 0
## Lack of fit 5 2,855.2260 571.0452 7.49 0.00131
## Residuals 14 1,067.3330 76.2381
## -----------------------------------------------------
## ------------------------------------------------------------------------
75
##
## Quadratic Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 28.3095 4.4002 6.4336 0.00002
## b1 5.9643 0.6870 8.6818 0
## b2 -0.1300 0.0220 -5.9088 0.00004
## ------------------------------------------
##
## R2 of quadratic model
## --------
## 0.983609
## --------
##
## Analysis of Variance of quadratic model
## ========================================================
## DF SS MS Fc [Link]
## --------------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 117.38 0
## Quadratic Effect 1 2,661.7500 2,661.7500 34.91 4e-05
## Lack of fit 4 193.4762 48.3691 0.63 0.64625
## Residuals 14 1,067.3330 76.2381
## --------------------------------------------------------
## ------------------------------------------------------------------------
##
## Cubic Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 30.4206 4.8577 6.2623 0.00002
## b1 4.5569 1.5344 2.9698 0.0101
## b2 -0.0033 0.1254 -0.0266 0.9792
## b3 -0.0028 0.0027 -1.0258 0.3224
## ------------------------------------------
##
## R2 of cubic model
## --------
## 0.990405
## --------
##
## Analysis of Variance of cubic model
## ========================================================
## DF SS MS Fc [Link]
## --------------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 117.38 0
76
Figure 28: Regressão quadrática obtida no delineamento DIC
77
90
Y
60
30
0 10 20 30
DOSE
78
Este é um exemplo simples de uso da função ggplot(). Porém, como visto até aqui, esta
função (mesmo em aplicações simples) tem suas complexidades. Pensando nisso, o pacote
Curso R foi desenvolvido para facilitar a vida dos usuários do curso. A partir dos experimentos
fatoriais, apenas as funções deste pacote serão utilizados.
No delineamento blocos ao acaso existe uma restrição (fonte de variação) na sua área
experimental, e por isso as parcelas não são homogeneas entre si. As parcelas dos blocos
devem ser homogeneas, porém os bloco devem ser heterogêneos entre eles. O bloquemento
tem como objetivo reduzir o erro experimental, “transferindo” parte do erro experimental
para efeito de bloco. O modelo do DBC é dado por
Yij = m + bj + ti + εij
Argumento Descrição
trat Objeto contendo os tratamentos
bloco Objeto contendo os blocos
resp Objeto contendo a variável resposta
quali Se TRUE, o tratamento é qualitativo (default)
mcomp Indicar o teste complementar (Tukey é default)
nl Indica se uma regressão deve ser ajustada (FALSE é o default)
hvar Teste de homogeneidade da variância (ONeill e Mathews é o default)
sigT Significância da comparação múltipla
sigF Significância do teste F
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 6 11803.9 1967.32 22.8610 0.00001
## Block 2 34.7 17.33 0.2014 0.82028
## Residuals 12 1032.7 86.06
79
## Total 20 12871.2
## ------------------------------------------------------------------------
## CV = 12.28 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.9025366
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.6303247
## According to the test of oneillmathews at 5% of significance, the variances can be co
## ------------------------------------------------------------------------
##
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 5 100.6667
## a 6 96.33333
## a 7 88.66667
## a 4 85.33333
## ab 3 76
## bc 2 50.66667
## c 1 31
## ------------------------------------------------------------------------
plotres(mod4)
80
Histogram Normal Q−Q (95%)
15
0.6
10
Residuals
5
0.4
Density
0
−5
0.2
0.0
−15
−2 −1 0 1 2 −2 −1 0 1 2
Standardized Residuals z
1.5
Standardized Residuals
0.5
0.5
−0.5
−0.5
−1.5
−1.5
40 60 80 100
Fitted Values
Para realizar a análise de regressão utilizando a função rbd() basta indicar como FALSE os
argumentos quali e nl.
81
require(readxl)
Reg=read_excel("D:/Desktop/final/[Link]")
rbd(Reg$DOSE,Reg$BLOCO,Reg$Y, quali=FALSE,nl=FALSE,sigT=0.05,sigF = 0.05)
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 6 11803.9 1967.32 22.8610 0.00001
## Block 2 34.7 17.33 0.2014 0.82028
## Residuals 12 1032.7 86.06
## Total 20 12871.2
## ------------------------------------------------------------------------
## CV = 12.28 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.9025366
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.6303247
## According to the test of oneillmathews at 5% of significance, the variances can be co
## ------------------------------------------------------------------------
##
## Adjustment of polynomial models of regression
## ------------------------------------------------------------------------
##
## Linear Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 44.5595 3.6494 12.2101 0
## b1 2.0643 0.2024 10.1974 0
## ------------------------------------------
##
## R2 of linear model
## --------
## 0.758112
## --------
##
## Analysis of Variance of linear model
## =====================================================
## DF SS MS Fc [Link]
82
## -----------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 103.99 0
## Lack of fit 5 2,855.2260 571.0452 6.64 0.0035
## Residuals 12 1,032.6670 86.0556
## -----------------------------------------------------
## ------------------------------------------------------------------------
##
## Quadratic Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 28.3095 4.6750 6.0556 0.0001
## b1 5.9643 0.7299 8.1716 0
## b2 -0.1300 0.0234 -5.5615 0.0001
## ------------------------------------------
##
## R2 of quadratic model
## --------
## 0.983609
## --------
##
## Analysis of Variance of quadratic model
## ========================================================
## DF SS MS Fc [Link]
## --------------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 103.99 0
## Quadratic Effect 1 2,661.7500 2,661.7500 30.93 0.00012
## Lack of fit 4 193.4762 48.3691 0.56 0.69475
## Residuals 12 1,032.6670 86.0556
## --------------------------------------------------------
## ------------------------------------------------------------------------
##
## Cubic Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 30.4206 5.1610 5.8943 0.0001
## b1 4.5569 1.6302 2.7953 0.0162
## b2 -0.0033 0.1333 -0.0250 0.9804
## b3 -0.0028 0.0029 -0.9655 0.3533
## ------------------------------------------
##
## R2 of cubic model
## --------
## 0.990405
## --------
83
##
## Analysis of Variance of cubic model
## ========================================================
## DF SS MS Fc [Link]
## --------------------------------------------------------
## Linear Effect 1 8,948.6790 8,948.6790 103.99 0
## Quadratic Effect 1 2,661.7500 2,661.7500 30.93 0.00012
## Cubic Effect 1 80.2222 80.2222 0.93 0.35334
## Lack of fit 3 113.2540 37.7513 0.44 0.72946
## Residuals 12 1,032.6670 86.0556
## --------------------------------------------------------
## ------------------------------------------------------------------------
Esses pressupostos são necessários para que o teste F seja utilizado na análise de variância.
Sob normalidade dos resíduos e hipótese nula H0 , a razão entre as somas de quadrado de
tratamento e resíduo tem distribuição F (Rencher and Schaalje 2008). Já em condições de
não normalidade dos resíduos, o poder do teste (probabilidade de rejeitar H0 ) é reduzido.
Apesar disso, não há grandes mudanças no erro tipo I quando a pressuposição de normalidade
é violada (Senoglu and Tiku 2001), e por isso ele é considerado robusto.
Apesar do teste F de ser robusto a desvios da normalidade, é comum que ela seja cumprida
para que o teste seja aplicado. Quando as pressuposições não são cumpridas, um dos
procedimentos mais comum é transformar os dados. A transformação Box-Cox (Box and Cox
1964) é uma das mais comuns. Ela consiste em transformar os valores de Yi por Yi (λ), sendo
o valor de λ estimado por máxima verossimilhança. Após a transformação de Yi por Yi (λ) os
dados seguem distribuição normal com variância constante.
A função boxcox() , do pacote MASS, pode ser utilizada para estimar o valor de λ. Uma
sequência de valores de λ são estimados, e o escolhido é aquele que maximiza a função de
log-verossimilhança:
mod5=rbd(dados_3$Trat,dados_3$Bloco, dados_3$b,sigF = 0.05)
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 15 60.455 4.0303 5.0617 0.00001
## Block 3 2.359 0.7862 0.9874 0.40726
## Residuals 45 35.831 0.7962
84
## Total 63 98.644
## ------------------------------------------------------------------------
## CV = 13.16 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.02285176
## WARNING: at 5% of significance, residuals can not be considered normal!
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.02448204
## WARNING: at 5% of significance, residuals can not be considered homocedastic!
## ------------------------------------------------------------------------
##
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 8 8.587804
## ab 6 8.356202
## abc 2 7.902417
## abcd 4 7.502882
## abcd 3 7.432862
## abcd 7 7.364687
## abcd 16 6.821353
## abcd 5 6.620139
## abcd 14 6.597912
## abcd 1 6.430431
## abcd 15 6.370027
## bcd 13 6.156438
## cd 12 6.000802
## cd 11 5.681959
## d 10 5.357343
## d 9 5.285228
## ------------------------------------------------------------------------
Os pressupostos de normalidade e homocedasticidade foram violados neste exemplo. O
próximo passo é encontrar o valor de λ para transformar as variáveis, utilizando para isso a
função boxcox().
require(MASS)
boxcox(b~Trat,data=dados_3,
lambda=seq(-5,2,length=20)) ## Indica os valores de lambda
Percebe-se que o intervalo de λ não cruza pelo valor zero, indicando que a transformação log
não é a mais adequada. Vamos focar no valor que maximiza a função de log-verossimilhança,
delimitando o valor de λ através do argumento lambda.
85
15
95%
10
log−Likelihood
5
0
−5
−5 −4 −3 −2 −1 0 1 2
Figure 30: Gráfico gerado pela função boxcox() para identificar o valor de lambda
86
require(MASS)
boxcox(b~Trat,data=dados_3,
lambda=seq(-2,-1,length=20)) ## "Aproximando" os valores de lambda
15.0
14.5
log−Likelihood
14.0
13.5
95%
Uma forma mais prática de encontrar o valor de λ que maximiza a função de log-
verossimilhança é utilizar a função locator() . Após executar a função abaixo, basta clicar
com o cursor sobre o ponto que maximiza a função para que as coordenadas sejam mostradas
no console.
87
locator(n=1)
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Treatament 15 0.0121282 0.00080855 6.3362 0.00000
## Block 3 0.0002768 0.00009228 0.7231 0.54348
## Residuals 45 0.0057424 0.00012761
## Total 63 0.0181474
## ------------------------------------------------------------------------
## CV = 15.65 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.1670394
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## Homogeneity of variances test
## p-value: 0.2008088
## According to the test of oneillmathews at 5% of significance, the variances can be co
## ------------------------------------------------------------------------
##
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 9 0.09728835
## ab 10 0.09595175
## ab 11 0.08938781
## abc 12 0.08184798
## abcd 13 0.07968353
## abcd 15 0.0753837
## abcd 1 0.07410317
## abcd 14 0.07260402
## abcd 5 0.07140962
## abcd 16 0.06882471
## bcd 7 0.06735454
## cd 3 0.06034415
## cd 4 0.05963573
## cd 2 0.05556879
88
## cd 6 0.05419642
## d 8 0.05109492
## ------------------------------------------------------------------------
Os pressupostos de normalidade e homocedasticidade foram cumpridos após a transformação.
Ressalta-se, porém, que os valores das médias que devem ser apresentados como resultado
final (em tabelas ou gráficos) são os originais, e não os transformados.
Experimentos fatoriais são muito comuns nas ciências agrárias, pois permitem o estudo de
dois ou mais fatores em um mesmo experimento. Diversas são as vantagens em se conduzir um
experimento deste tipo. Dentre elas, podemos citar a redução de custos, quando comparado
à realizar um experimento para cada fator, a otimização da área experimental e dos tratos
culturais, bem como a possibilidade de identificar o efeito de dois ou mais fatores sobre a
magnitude da variável resposta. Esta é, talvez, a principal vantagem destes experimentos.
Ao memo tempo, no entanto, é a fonte de um dos maiores desafios encontrados no meio
acadêmico. O surgimento de uma terceira fonte de variação, conhecida por interação.
Vamos considerar como exemplo, um experimento que avaliou a influencia de dois fatores,
digamos α e τ , em uma determinada variável resposta. O modelo estatístico considerado neste
tipo de experimento é: yijk = µ + βk + αi + τj + (ατ )ij + εijk , onde yijk é o valor observado
da combinação do i-ésimo nível do fator α com o j-ésimo nível do fator τ no k-ésimo bloco; µ
é a média geral; βk é o efeito do bloco k; αi é o efeito do i-ésimo nível de α ; τj é o efeito do
j-ésimo nível de τ ; (ατ )ij é o efeito da interação do i-ésimo nível de α com o j-ésimo nível
iid
de τ ; e εijk é o erro aleatório associado a yijk , assumindo εijk ∩ N (0, σ 2 ).
Basicamente, estes fatores podem ser divididos em dois tipos: qualitativos e quantitativos .
Um fator qualitativo é, como o nome já diz, relacionado a qualidade, ou seja, diferentes em
tipo mas não em quantidade. Como exemplo, podemos citar cultivares, defensivos agrícolas,
práticas de manejo, etc. Um fator quantitativo, por outro lado, é caracterizado pela quantidade
utilizada no experimento. Podemos citar, por exemplo, doses de adubação. Cabe ressaltar
que o termo fatorial não indica um delineamento experimental, mas uma forma de arranjo
de tratamentos na área parcela. Estes experimentos podem ser conduzidos tanto em DIC
quanto DBC . Assim, em cada repetição/bloco, o tratamento a ser aplicado é a combinação
dos níveis dos dois fatores. A combinação de diferentes tipos de fatores não influenciará a
análise de variância dos dados, no entanto resultará em algumas particularidades nas análises
complementares, como será visto ao longo desta seção.
Nesta seção, serão analisados dados de experimentos bifatoriais com diferentes tipos de fatores
(qualitativos e quantitativos) na presença de interação significativa e não significativa. Em
todos os exemplos, será considerado o delineamento de blocos completos casualizados, tendo
como variável resposta, o rendimento de grãos (RG). Para isto, utilizaremos cinco conjuntos
89
de dados que serão detalhados a seguir. Maiores informações sobre estes dados podem ser
encontradas em Olivoto T. and Sari (2018a).
Acrônimo Descrição
FAT1_CI Fator 1 qualitativo (híbridos), com quatro níveis; Fator 2 quantitativo
(doses de N), com cinco níveis, com interação significativa
FAT1_SI Fator 1 qualitativo (híbridos), com dois níveis; Fator 2 quantitativo (doses
de N), com cinco níveis, sem interação significativa
FAT2_CI Fator 1 qualitativo (fontes de N), com quatro níveis; Fator 2 qualitativo
(híbridos), com quatro níveis, com interação significativa
FAT2_SI Fator 1 qualitativo (fontes de N), com três níveis; Fator 2 qualitativo
(híbridos), com quatro níveis, sem interação significativa
FAT3 Fator 1 quantitativo (doses de N), com quatro níveis; Fator 2 quantitativo
(doses de K), com cinco níveis, com interação significativa
FAT1_CI = [Link]("[Link]
FAT1_SI = [Link]("[Link]
FAT2_CI = [Link]("[Link]
FAT2_SI = [Link]("[Link]
FAT3 = [Link]("[Link]
Função Descrição
[Link]() Intervalo de confiança para o coeficiente de correlação de
Pearson (matriz)
[Link]() Intervalo de confiança para o coeficiente de correlação de
Pearson (valor)
[Link]() Diferentes opções para visualização gráfica de uma matriz de
correlação
[Link]() Planejamento do tamanho de amostra para o coeficiente de
correlação
distdend() Medidas de dissimilaridade genética e confecção de dendrogramas
ge_stats() Procedimentos estatisticos para análise de interação genótipo vs
ambiente
k_means() Agrupamento k-means com base em uma tabela de dupla entrada
[Link]() Coeficiente de correlação parcial
pass() Converte uma variável para diferentes tipos (numerico, fator,
lógico, etc.)
90
Função Descrição
[Link]() Análise de trilha com algorítmo para seleção de variáveis
[Link]() Diagrama de trilha personalizável
pca() Análise de componentes principais com diversas opções gráficas
plot_fatcurves() Ajuste de curvas em experimentos bifatoriais
plot_fatmeans() Gráficos de barras em experimentos bifatoriais
plot_supresp() Gráicos de superfície de resposta
plot_uni() Gráfico para ajuste de curvas em experimentos unifatoriais
plot_supresp() Gráicos de superfície de resposta
summary_ge_stats() Resume um objeto da classe ge_stats
[Link]() Resume um objeto da classe [Link]
supresp() Análise de superfície de resposta
supresp_col() Cores personalizadas para gráficos de superfície de resposta
O conjunto de dados utilizado neste exemplo será o FAT1_CI. Por se tratar de um ex-
perimento fatorial com um fator qualitativo (hibrido) e outro quantitativo (dose), convém
confeccionar um gráfico com o rendimento observado de cada híbrido em cada dose. Este
gráfico, além de servir como ferramenta para identificar possíveis outliers, também nos per-
mite identificar a resposta de cada híbrido. Cabe salientar que este é um gráfico meramente
ilustrativo. A análise estatistica dos dados será realizada posteriormente.
• Visualização dos dados
library(ggplot2)
library(cursoR)
library(ExpDes)
p = ggplot(FAT1_CI, aes(x = DOSEN, y = RG)) + # cria um objeto ggplot
geom_point(aes(colour = factor(HIBRIDO)), size = 1.5) + # adiciona pontos
geom_smooth(aes(colour = factor(HIBRIDO)), method = "loess") + # adiciona banda
theme_bw() # adiciona tema preto e branco
p
library(plotly)
ggplotly(p) # gera um grafico iterativo para visualização no R
91
12
factor(HIBRIDO)
10
NUPEC_1
RG
NUPEC_2
NUPEC_3
8 NUPEC_4
0 25 50 75 100
DOSEN
92
do gráfico. Maiores informações com relação à síntax ggplot2 para confecção de gráficos de
linhas podem ser encontradas aqui.
• Análise estatística dos dados
Nesta seção, utilizaremos os pacotes cursoR (T. Olivoto 2018a) e ExpDes (Ferreira, Cavalcanti,
and Nogueira 2018) para análise estatistica dos dados. O pacote ExpDes contém funções
úteis para análise de variância de experimentos nos delineamentos experimentais e arranjo
de tratamentos mais conhecidos. A função do pacote ExpDes utilizada neste exemplo será
[Link]() a qual analisa dados de experimentos bifatoriais em delineamento de blocos
completos casualizados. Uma explicação detalhada será dada agora ao passo em que nos
outros experimentos serão apresentadas apenas as linhas de comandos e uma breve discussão.
A delcaração dos argumentos na função é simples. Basta informarmos o nome das colunas
do nosso arquivo correspondentes aos argumentos requeridos pela função. Por exemplo
factor1 e fator2, represetam os fatores em em estudo, que, neste caso, são híbridos e
doses de nitrogênio. No argumento block informamos o nome da coluna de nossos dados
correspondente aos blocos. O mesmo para o argumento resp que é a variável resposta, no
caso, o rendimento de grãos.
Definidos a entrada de dados, precisamos declarar quais as análises complementares a serem
realizadas, em caso de significancia estatística. no argumento quali, informamos qual o tipo
de fator em estudo. A declaração é um vetor lógico de comprimento 2. Em nosso caso, ao
declararmos quali = c(TRUE, FALSE) estamos informando que o primeiro fator (no caso
híbrido) é qualitativo e o segundo fator (dose de N) quantitativo. O argumento mcomp é
utilizado para informar o teste de comparação (ou agrupamento ) de médias utilizado. Em
nosso exemplo, vamos utilizar o teste tukey. No argumento [Link] é possivel informar
nomes específicos para os fatores. Os argumentos sigF e sigT são utilizados para informar
a probabilidade de erro assumida na análise de variância e nas analises de comparação de
médias, respectivamente. Ambos tem padrão 5%.
O resultado da função [Link]() irá depender da significância das fontes de variação do
experimento. Neste caso em específico, em caso de interação significativa (o que já sabemos
devido ao título da subseção), uma regressão é ajustada para cada híbrido e as médias de
cada híbrido são comparadas em cada dose de nitrogênio. Vamos ao exemplo.
library(ExpDes)
attach(FAT1_CI)
F1_CI = [Link](factor1 = HIBRIDO,
factor2 = DOSEN,
block = BLOCO,
resp = RG,
quali = c(TRUE, FALSE),
mcomp = "tukey",
[Link] = c("HIBRIDO", "DOSE"),
sigT = 0.05,
sigF = 0.05)
## ------------------------------------------------------------------------
## Legend:
## FACTOR 1: HIBRIDO
93
## FACTOR 2: DOSE
## ------------------------------------------------------------------------
##
##
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Block 3 0.37 0.122 4.2 0.009578
## HIBRIDO 3 304.85 101.617 3478.6 0.000000
## DOSE 4 31.33 7.831 268.1 0.000000
## HIBRIDO*DOSE 12 18.01 1.500 51.4 0.000000
## Residuals 57 1.67 0.029
## Total 79 356.21
## ------------------------------------------------------------------------
## CV = 1.76 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.095938
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
##
##
## Significant interaction: analyzing the interaction
## ------------------------------------------------------------------------
##
## Analyzing HIBRIDO inside of each level of DOSE
## ------------------------------------------------------------------------
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc [Link]
## Block 3 0.36656 0.12219 4.1827 0.0096
## DOSE 4 31.32538 7.83135 268.0829 0
## HIBRIDO:DOSE 0 3 79.07881 26.3596 902.343 0
## HIBRIDO:DOSE 25 3 81.74143 27.24714 932.7253 0
## HIBRIDO:DOSE 50 3 59.46093 19.82031 678.4896 0
## HIBRIDO:DOSE 75 3 46.79345 15.59782 533.9451 0
## HIBRIDO:DOSE 100 3 55.78144 18.59381 636.5041 0
## Residuals 57 1.66511 0.02921
## Total 79 356.21311
## ------------------------------------------------------------------------
##
##
##
94
## HIBRIDO inside of the level 0 of DOSE
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 2 11.56
## b 4 9.2035
## c 1 8.566
## d 3 5.335
## ------------------------------------------------------------------------
##
##
## HIBRIDO inside of the level 25 of DOSE
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 2 12.595
## b 4 9.9165
## c 1 8.8705
## d 3 6.2885
## ------------------------------------------------------------------------
##
##
## HIBRIDO inside of the level 50 of DOSE
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 2 12.935
## b 4 9.9505
## b 1 9.63975
## c 3 7.52625
## ------------------------------------------------------------------------
##
##
## HIBRIDO inside of the level 75 of DOSE
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 2 12.625
## b 4 10.8145
## c 1 10.246
## d 3 7.84
## ------------------------------------------------------------------------
95
##
##
## HIBRIDO inside of the level 100 of DOSE
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 2 11.5465
## a 4 11.367
## b 1 10.906
## c 3 6.995
## ------------------------------------------------------------------------
##
##
##
## Analyzing DOSE inside of each level of HIBRIDO
## ------------------------------------------------------------------------
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc [Link]
## Block 3 0.36656 0.12219 4.1827 0.0096
## HIBRIDO 3 304.85101 101.617 3478.5573 0
## DOSE:HIBRIDO NUPEC_1 4 14.86175 3.71544 127.187 0
## DOSE:HIBRIDO NUPEC_2 4 6.79944 1.69986 58.1897 0
## DOSE:HIBRIDO NUPEC_3 4 16.21950 4.05487 138.8066 0
## DOSE:HIBRIDO NUPEC_4 4 11.44973 2.86243 97.9869 0
## Residuals 57 1.66511 0.02921
## Total 79 356.21311
## ------------------------------------------------------------------------
##
##
##
## DOSE inside of the level NUPEC_1 of HIBRIDO
## ------------------------------------------------------------------------
## Adjustment of polynomial models of regression
## ------------------------------------------------------------------------
##
## Linear Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 8.4345 0.0662 127.4185 0
## b1 0.0242 0.0011 22.4077 0
## -------------------------------------------
##
96
## R2 of linear model
## --------
## 0.986938
## --------
##
## Analysis of Variance of linear model
## ==============================================
## DF SS MS Fc [Link]
## ----------------------------------------------
## Linear Effect 1 14.6676 14.6676 502.1 0
## Lack of fit 3 0.1941 0.0647 2.22 0.0962
## Residuals 57 1.6651 0.0292
## ----------------------------------------------
## ------------------------------------------------------------------------
##
## Quadratic Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 8.5128 0.0804 105.8458 0
## b1 0.0180 0.0038 4.7126 0.00002
## b2 0.0001 0.00004 1.7138 0.0920
## -------------------------------------------
##
## R2 of quadratic model
## --------
## 0.992711
## --------
##
## Analysis of Variance of quadratic model
## =================================================
## DF SS MS Fc [Link]
## -------------------------------------------------
## Linear Effect 1 14.6676 14.6676 502.1 0
## Quadratic Effect 1 0.0858 0.0858 2.94 0.092
## Lack of fit 2 0.1083 0.0542 1.85 0.16592
## Residuals 57 1.6651 0.0292
## -------------------------------------------------
## ------------------------------------------------------------------------
##
## Cubic Model
## ============================================
## Estimate [Link] tc [Link]
## --------------------------------------------
## b0 8.5539 0.0848 100.8177 0
## b1 0.0062 0.0086 0.7155 0.4772
97
## b2 0.0004 0.0002 1.7852 0.0796
## b3 -0.000002 0 -1.5209 0.1338
## --------------------------------------------
##
## R2 of cubic model
## --------
## 0.997258
## --------
##
## Analysis of Variance of cubic model
## =================================================
## DF SS MS Fc [Link]
## -------------------------------------------------
## Linear Effect 1 14.6676 14.6676 502.1 0
## Quadratic Effect 1 0.0858 0.0858 2.94 0.092
## Cubic Effect 1 0.0676 0.0676 2.31 0.13382
## Lack of fit 1 0.0408 0.0408 1.4 0.24246
## Residuals 57 1.6651 0.0292
## -------------------------------------------------
## ------------------------------------------------------------------------
##
##
## DOSE inside of the level NUPEC_2 of HIBRIDO
## ------------------------------------------------------------------------
## Adjustment of polynomial models of regression
## ------------------------------------------------------------------------
##
## Linear Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 12.2517 0.0662 185.0832 0
## b1 0.00001 0.0011 0.0111 0.9912
## -------------------------------------------
##
## R2 of linear model
## --------
## 0.000001
## --------
##
## Analysis of Variance of linear model
## ============================================
## DF SS MS Fc [Link]
## --------------------------------------------
## Linear Effect 1 0 0 0 0.99118
## Lack of fit 3 6.7994 2.2665 77.59 0
98
## Residuals 57 1.6651 0.0292
## --------------------------------------------
## ------------------------------------------------------------------------
##
## Quadratic Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 11.5550 0.0804 143.6710 0
## b1 0.0557 0.0038 14.6290 0
## b2 -0.0006 0.00004 -15.2523 0
## -------------------------------------------
##
## R2 of quadratic model
## --------
## 0.999458
## --------
##
## Analysis of Variance of quadratic model
## ================================================
## DF SS MS Fc [Link]
## ------------------------------------------------
## Linear Effect 1 0 0 0 0.99118
## Quadratic Effect 1 6.7958 6.7958 232.63 0
## Lack of fit 2 0.0037 0.0018 0.06 0.93889
## Residuals 57 1.6651 0.0292
## ------------------------------------------------
## ------------------------------------------------------------------------
##
## Cubic Model
## ============================================
## Estimate [Link] tc [Link]
## --------------------------------------------
## b0 11.5623 0.0848 136.2751 0
## b1 0.0536 0.0086 6.2132 0
## b2 -0.0005 0.0002 -2.2739 0.0268
## b3 -0.000000 0 -0.2720 0.7866
## --------------------------------------------
##
## R2 of cubic model
## --------
## 0.999775
## --------
##
## Analysis of Variance of cubic model
## ================================================
99
## DF SS MS Fc [Link]
## ------------------------------------------------
## Linear Effect 1 0 0 0 0.99118
## Quadratic Effect 1 6.7958 6.7958 232.63 0
## Cubic Effect 1 0.0022 0.0022 0.07 0.78662
## Lack of fit 1 0.0015 0.0015 0.05 0.81994
## Residuals 57 1.6651 0.0292
## ------------------------------------------------
## ------------------------------------------------------------------------
##
##
## DOSE inside of the level NUPEC_3 of HIBRIDO
## ------------------------------------------------------------------------
## Adjustment of polynomial models of regression
## ------------------------------------------------------------------------
##
## Linear Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 5.8227 0.0662 87.9613 0
## b1 0.0195 0.0011 18.0264 0
## ------------------------------------------
##
## R2 of linear model
## --------
## 0.585259
## --------
##
## Analysis of Variance of linear model
## =============================================
## DF SS MS Fc [Link]
## ---------------------------------------------
## Linear Effect 1 9.4926 9.4926 324.95 0
## Lack of fit 3 6.7269 2.2423 76.76 0
## Residuals 57 1.6651 0.0292
## ---------------------------------------------
## ------------------------------------------------------------------------
##
## Quadratic Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 5.1768 0.0804 64.3666 0
## b1 0.0712 0.0038 18.6715 0
## b2 -0.0005 0.00004 -14.1389 0
100
## -------------------------------------------
##
## R2 of quadratic model
## --------
## 0.945309
## --------
##
## Analysis of Variance of quadratic model
## ================================================
## DF SS MS Fc [Link]
## ------------------------------------------------
## Linear Effect 1 9.4926 9.4926 324.95 0
## Quadratic Effect 1 5.8398 5.8398 199.91 0
## Lack of fit 2 0.8870 0.4435 15.18 1e-05
## Residuals 57 1.6651 0.0292
## ------------------------------------------------
## ------------------------------------------------------------------------
##
## Cubic Model
## ==========================================
## Estimate [Link] tc [Link]
## ------------------------------------------
## b0 5.3211 0.0848 62.7150 0
## b1 0.0298 0.0086 3.4503 0.0011
## b2 0.0006 0.0002 2.9085 0.0052
## b3 -0.00001 0 -5.3396 0
## ------------------------------------------
##
## R2 of cubic model
## --------
## 0.996661
## --------
##
## Analysis of Variance of cubic model
## ================================================
## DF SS MS Fc [Link]
## ------------------------------------------------
## Linear Effect 1 9.4926 9.4926 324.95 0
## Quadratic Effect 1 5.8398 5.8398 199.91 0
## Cubic Effect 1 0.8329 0.8329 28.51 0
## Lack of fit 1 0.0542 0.0542 1.85 0.1787
## Residuals 57 1.6651 0.0292
## ------------------------------------------------
## ------------------------------------------------------------------------
##
##
101
## DOSE inside of the level NUPEC_4 of HIBRIDO
## ------------------------------------------------------------------------
## Adjustment of polynomial models of regression
## ------------------------------------------------------------------------
##
## Linear Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 9.2054 0.0662 139.0636 0
## b1 0.0209 0.0011 19.3345 0
## -------------------------------------------
##
## R2 of linear model
## --------
## 0.953756
## --------
##
## Analysis of Variance of linear model
## ===============================================
## DF SS MS Fc [Link]
## -----------------------------------------------
## Linear Effect 1 10.9202 10.9202 373.82 0
## Lack of fit 3 0.5295 0.1765 6.04 0.0012
## Residuals 57 1.6651 0.0292
## -----------------------------------------------
## ------------------------------------------------------------------------
##
## Quadratic Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 9.2781 0.0804 115.3611 0
## b1 0.0151 0.0038 3.9578 0.0002
## b2 0.0001 0.00004 1.5918 0.1170
## -------------------------------------------
##
## R2 of quadratic model
## --------
## 0.960221
## --------
##
## Analysis of Variance of quadratic model
## ==================================================
## DF SS MS Fc [Link]
## --------------------------------------------------
102
## Linear Effect 1 10.9202 10.9202 373.82 0
## Quadratic Effect 1 0.0740 0.0740 2.53 0.11695
## Lack of fit 2 0.4555 0.2277 7.8 0.00102
## Residuals 57 1.6651 0.0292
## --------------------------------------------------
## ------------------------------------------------------------------------
##
## Cubic Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 9.2414 0.0848 108.9198 0
## b1 0.0256 0.0086 2.9672 0.0044
## b2 -0.0002 0.0002 -1.0756 0.2866
## b3 0.000002 0 1.3599 0.1792
## -------------------------------------------
##
## R2 of cubic model
## --------
## 0.964939
## --------
##
## Analysis of Variance of cubic model
## ==================================================
## DF SS MS Fc [Link]
## --------------------------------------------------
## Linear Effect 1 10.9202 10.9202 373.82 0
## Quadratic Effect 1 0.0740 0.0740 2.53 0.11695
## Cubic Effect 1 0.0540 0.0540 1.85 0.17922
## Lack of fit 1 0.4014 0.4014 13.74 0.00048
## Residuals 57 1.6651 0.0292
## --------------------------------------------------
## ------------------------------------------------------------------------
detach(FAT1_CI)
103
Histogram Normal Q−Q (95%)
0.2
0.4
0.3
Residuals
0.0
Density
0.2
−0.2
0.1
−0.4
0.0
−3 −2 −1 0 1 2 −2 −1 0 1 2
Standardized Residuals z
2
Standardized Residuals
1
0
0
−1
−1
−2
−2
−3
−3
6 8 10 12
Fitted Values
A análise de variância acima indicou efeitos significativos tanto para os efeitos principais,
quanto para a interação. Assim, as análises complementares que foram realizadas foram (i) a
comparação das médias pelo teste Tukey em cada nível da dose de N; e (ii) uma regressão
polinomial ajustada para cada híbrido. Por padrão, o máximo grau do polinômio ajustado é
3 (modelo cúbico).
• Comparação das médias dos híbridos em cada dose de nitrogênio.
As comparações de médias são apresentadas após a análise de variância, na saída acima.
Neste momento, utilizaremos a função plot_fatmeans() do pacote cursoR para plotar as
médias dos híbridos em cada dose de nitrogênio. A apresentação gráfica de resultados, mesmo
104
Rendimento de grãos Mg/ha
10
NUPEC_1
NUPEC_2
NUPEC_3
5 NUPEC_4
0 25 50 75 100
Doses de nitrogênio
Figure 32: Gráfico das médias dos híbridos em cada dose de nitrogênio gerado pela função plot_fatmeans()
considerando médias, é uma alternativa interessante à tabela, pois permite uma interpretação
mais clara e intuitiva dos resultados. Para fazer isto, primeiramente, precisamos criar um novo
conjunto de dados (FAT1_CI_means), considerando a coluna DOSEN como um fator. Isto
é necessário, pois na importação dos dados, por padrão, dados numéricos não são importados
como fator. A função pass() , também do pacote cursoR irá ser utilizada para este fim.
library(cursoR)
FAT1_CI_means = pass(FAT1_CI, "DOSEN", [Link]) # tornando a coluna DOSEN um fator
plot_fatmeans(FAT1_CI_means,
measurevar = "RG",
groupvars = c("DOSEN", "HIBRIDO"),
verbose = FALSE,
xlab = "Doses de nitrogênio",
ylab = "Rendimento de grãos Mg/ha",
palette = "Set3",
[Link] = "right")
105
grau a ser ajustado deve ser identificado na saída da ANOVA , apresentada acima. Para fins
didáticos um resumo é fornecido abaixo.
Utilizando uma equação, é possível estimar a produtividade para uma dose de nitrogênio
específica não testada, desde que ela esteja dentro do intervalo estudado Para isto, basta
substituir o x na equação pela dose a ser testada. Por exemplo para sabermos qual seria a
produtividade do híbrido NUPEC_1 se tivéssemos aplicado 60 kg de N ha−1 basta resolver:
y = 8.4345 + 0.0242 × 60, resultando em y = 9.886. A interpretação deste resultado,
no entanto, deve ser cautelosa. Inconscientemente, concluiríamos que a produtividade do
híbrido aumentaria 0.0242 Mg ha−1 a cada kg de nitrogênio aplicado por hectare. Este fato,
no entanto, não é observado na prática. Por exemplo, a produtividade não irá aumentar
infinitamente a medida em que se aumenta a dose de nitrogênio aplicado. A única conclusão
válida, neste caso, é que a produtividade aumenta linearmente até 100 kg de N ha−1 . Este
resultado se deu em virtude de as doses testadas não terem sido o suficiente para identificar
um outro comportamento na variável testada. Nestes casos, indica-se para estudos futuros
aumentar o número de doses. Quando não se conhece o intervalo de dose em que a variável
em estudo apresenta uma resposta explicável, estudos pilotos podem ser realizados. Neste
caso, testar-se-iam o mesmo número de tratamentos (número de doses), no entanto com
um intervalo maior entre as doses (por exemplo, 0, 100, 200, 300 e 400 kg de N ha−1 .
Possivelmente, nesta amplitude, o comportamento da produtividade não seria linear, pois em
uma determinada dose, a produtividade estabilizaria.
Semelhante ao exemplo das médias nas doses de nitrogênio, utilizaremos a função
plot_fatcurves() para plotar, agora, uma regressão ajustada para cada híbrido. Para isto,
precisaremos definir a coluna híbrido como fator para que uma regressão possa ser ajustada
para cada um de seus níveis. Os argumentos a serem informados são os seguintes: data, o
conjunto de dados (neste caso FAT1_CI_reg); x e y, as colunas dos dados correspondentes
aos eixos x e y do gráfico, respectivamente; group a coluna que contém os níveis dos fatores
em que as regressões serão ajustadas; fit um vetor de comprimento igual ao número
de níveis da coluna informada em group. O número indicado em cada posição do vetor,
corresponde ao grau do polinômio ajustado (máximo grau ajustado = 4). Em nosso exemplo,
utilizaremos fit = c(1, 2, 2, 1) para ajustar uma regressão linear para os híbridos
NUPEC_1 e NUPEC_4, uma regressão quadrática para os híbridos NUPEC 2 e NUPEC_3.
Outro possível valor neste argumento é declaração de apenas um número. Quando isto
ocorre, a função identifica que uma única regressão deve ser ajustada para todos os níveis do
determinado fator. Isto é útil e utilizaremos a seguir em casos de interação não significativa.
library(cursoR)
FAT1_CI_reg = cursoR::pass(FAT1_CI, "HIBRIDO", [Link])
plot_fatcurves(data = FAT1_CI_reg,
x = "DOSEN",
106
NUPEC_1 NUPEC_2
11
13.0
10 12.5
Rendimento de grãos (Mg/ha)
12.0
9
11.5
0 25 50 75 100 0 25 50 75 100
NUPEC_3 NUPEC_4
11.5
8
11.0
7 10.5
6 10.0
9.5
5 9.0
0 25 50 75 100 0 25 50 75 100
Doses de nitrogênio
Figure 33: Gráfico com uma regressão ajustada para cada híbrido gerado pela função plot_fatcurves()
y = "RG",
group = "HIBRIDO",
fit = c(1,2,2,1),
xlab = "Doses de nitrogênio",
ylab = "Rendimento de grãos (Mg/ha)",
grid = T,
col = T,
[Link] = 1.5,
fontfam = "serif")
107
Tomando o híbrido NUPEC_2 como exemplo, temos:
−0.0557
M ET = = 46.41
2 × −0.0006
Logo, a dose que proporciona a máxima produtividade é aproximadamente 46 kg de N ha−1 .
Assim para sabermos qual é esta produtividade estimada, basta substituir o x da equação
por 46.41, resultando em ymáx = 12.84 Mg ha−1 .
Outro ponto importante que é possível de estimar utilizando uma equação de segundo grau,
é a máxima eficiência econômica (MEE) , ou seja, a dose máxima, neste caso de nitrogênio,
em que é possível aplicar obtendo-se lucro. Este ponto é importante, pois a partir de uma
certa dose, os incrementos em produtividade não compensariam o preço pago pelo nitrogênio
aplicado. Este ponto pode ser facilmente estimado por
u
M EE = M ET +
2 × b2 × m
onde u e m são os preços da ureia e do milho em grão, respectivamente, na mesma unidade
utilizada para a estimativa da equação (neste caso, preço da ureia por kg e preço do milho
por tonelada). Considerando o preço de custo da ureia como R$ 1,35 por kg e o preço de
venda do milho a R$ 600,00 por tonelada, substituindo-se na formula obtém-se:
1.35
M EE = 46.41 + = 44.535
2 × (−0.0006) × 600
Assim, a dose máxima de nitrogênio que em que os incrementos de produtividade são lucrativos
é de ~45 N ha−1 .
O conjunto de dados utilizado neste exemplo será o FAT1_SI. Do mesmo modo do exemplo
anterior, iremos confeccionar um gráfico prévio para visualização dos dados.
• Visualização dos dados
p = ggplot(FAT1_SI, aes(x = DOSEN, y = RG)) +
geom_point(aes(colour = factor(HIBRIDO)), size = 1.5) +
geom_smooth(aes(colour = factor(HIBRIDO)), method = "loess") +
theme_bw()
p
108
7.75
7.50
7.25
factor(HIBRIDO)
RG
NUPEC_1
NUPEC_2
7.00
6.75
0 25 50 75 100
DOSEN
109
attach(FAT1_SI)
F1_SI = [Link](factor1 = HIBRIDO,
factor2 = DOSEN,
block = BLOCO,
resp = RG,
quali = c(TRUE, FALSE),
mcomp = "tukey",
[Link] = c("HIBRIDO", "DOSE"),
sigT = 0.05,
sigF = 0.05)
## ------------------------------------------------------------------------
## Legend:
## FACTOR 1: HIBRIDO
## FACTOR 2: DOSE
## ------------------------------------------------------------------------
##
##
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Block 3 0.0257 0.00857 1.593 0.2141
## HIBRIDO 1 0.8054 0.80542 149.758 0.0000
## DOSE 4 2.7775 0.69438 129.110 0.0000
## HIBRIDO*DOSE 4 0.0345 0.00862 1.602 0.2025
## Residuals 27 0.1452 0.00538
## Total 39 3.7883
## ------------------------------------------------------------------------
## CV = 1.03 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.3316718
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## No significant interaction: analyzing the simple effect
## ------------------------------------------------------------------------
## HIBRIDO
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a NUPEC_1 7.28955
## b NUPEC_2 7.00575
## ------------------------------------------------------------------------
##
## DOSE
110
## Adjustment of polynomial models of regression
## ------------------------------------------------------------------------
##
## Linear Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 7.1463 0.0201 355.8227 0
## b1 0.00003 0.0003 0.0823 0.9350
## -------------------------------------------
##
## R2 of linear model
## --------
## 0.000013
## --------
##
## Analysis of Variance of linear model
## ===============================================
## DF SS MS Fc [Link]
## -----------------------------------------------
## Linear Effect 1 0.00004 0.00004 0.01 0.935
## Lack of fit 3 2.7775 0.9258 172.15 0
## Residuals 27 0.1452 0.0054
## -----------------------------------------------
## ------------------------------------------------------------------------
##
## Quadratic Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 6.8326 0.0244 280.0053 0
## b1 0.0251 0.0012 21.7294 0
## b2 -0.0003 0.00001 -22.6358 0
## -------------------------------------------
##
## R2 of quadratic model
## --------
## 0.992149
## --------
##
## Analysis of Variance of quadratic model
## ==================================================
## DF SS MS Fc [Link]
## --------------------------------------------------
## Linear Effect 1 0.00004 0.00004 0.01 0.935
## Quadratic Effect 1 2.7557 2.7557 512.38 0
111
## Lack of fit 2 0.0218 0.0109 2.03 0.15126
## Residuals 27 0.1452 0.0054
## --------------------------------------------------
## ------------------------------------------------------------------------
##
## Cubic Model
## ============================================
## Estimate [Link] tc [Link]
## --------------------------------------------
## b0 6.8469 0.0257 265.9774 0
## b1 0.0210 0.0026 8.0278 0
## b2 -0.0001 0.0001 -2.0545 0.0497
## b3 -0.000001 0 -1.7426 0.0928
## --------------------------------------------
##
## R2 of cubic model
## --------
## 0.998029
## --------
##
## Analysis of Variance of cubic model
## ==================================================
## DF SS MS Fc [Link]
## --------------------------------------------------
## Linear Effect 1 0.00004 0.00004 0.01 0.935
## Quadratic Effect 1 2.7557 2.7557 512.38 0
## Cubic Effect 1 0.0163 0.0163 3.04 0.09279
## Lack of fit 1 0.0055 0.0055 1.02 0.32195
## Residuals 27 0.1452 0.0054
## --------------------------------------------------
## ------------------------------------------------------------------------
detach(FAT1_SI)
112
0.5
Histogram Normal Q−Q (95%)
0.10
0.4
Residuals
0.3
Density
0.00
0.2
0.1
−0.10
0.0
−2 −1 0 1 2 −2 −1 0 1 2
Standardized Residuals z
2
Standardized Residuals
1
0
0
−1
−1
Fitted Values
Como a interação não foi significativa, proceder-se-a a comparação de médias dos dois híbridos
considerando a média de todas as doses de nitrogênio, e o ajuste de apenas uma regressão
para os dois híbridos.
• comparação de médias dos híbridos considerando a média de todas as doses de N.
## --------------------------------------------
## HIBRIDO
## Tukey's test
## --------------------------------------------
113
## Groups Treatments Means
## a NUPEC_1 7.28955
## b NUPEC_2 7.00575
## --------------------------------------------
0
NUPEC_1 NUPEC_2
Doses de nitrogênio
• ajuste de uma única regressão para os dois híbridos.
Diferentemente do exemplo anterior, para o ajuste de uma única regressão para os dois
híbridos, a única alteração que precisamos fazer será declarar apenas um valor no argumento
fit. Neste exemplo, ajustaremos uma regressão quadrática, que foi o grau do polinômio
significativo observado no procedimento da análise de variância. Assim basta declararmos
fit = 2
114
## Quadratic Model
## ===========================================
## Estimate [Link] tc [Link]
## -------------------------------------------
## b0 6.8326 0.0244 280.0053 0
## b1 0.0251 0.0012 21.7294 0
## b2 -0.0003 0.00001 -22.6358 0
## -------------------------------------------
## R2 of quadratic model
## --------
## 0.992149
## --------
## Analysis of Variance of quadratic model
## ==================================================
## DF SS MS Fc [Link]
## --------------------------------------------------
## Linear Effect 1 0.00004 0.00004 0.01 0.935
## Quadratic Effect 1 2.7557 2.7557 512.38 0
## Lack of fit 2 0.0218 0.0109 2.03 0.15126
## Residuals 27 0.1452 0.0054
## --------------------------------------------------
115
7.75
Rendimento de grãos (Mg/ha)
7.50
7.25
7.00
6.75
0 25 50 75 100
Doses de nitrogênio
NUPEC_1 NUPEC_2
116
2.7.1 Com interação significativa
attach(FAT2_CI)
[Link](factor1 = HIBRIDO,
factor2 = FONTEN,
block = BLOCO,
resp = RG,
quali = c(TRUE, TRUE),
mcomp = "tukey",
[Link] = c("HIBRIDO", "FONTEN"),
sigT = 0.05,
sigF = 0.05)
## ------------------------------------------------------------------------
## Legend:
## FACTOR 1: HIBRIDO
## FACTOR 2: FONTEN
## ------------------------------------------------------------------------
##
##
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Block 3 2.55 0.850 1.84 0.15283
## HIBRIDO 3 33.19 11.063 23.99 0.00000
## FONTEN 3 731.71 243.902 528.93 0.00000
## HIBRIDO*FONTEN 9 151.46 16.829 36.50 0.00000
## Residuals 45 20.75 0.461
## Total 63 939.66
## ------------------------------------------------------------------------
## CV = 5.77 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.129189
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
##
##
117
## Significant interaction: analyzing the interaction
## ------------------------------------------------------------------------
##
## Analyzing HIBRIDO inside of each level of FONTEN
## ------------------------------------------------------------------------
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc [Link]
## Block 3 2.55051 0.85017 1.8437 0.1528
## FONTEN 3 731.70503 243.90168 528.9296 0
## HIBRIDO:FONTEN AmonioA 3 64.21549 21.40516 46.4196 0
## HIBRIDO:FONTEN NitratoA 3 11.60853 3.86951 8.3915 2e-04
## HIBRIDO:FONTEN SulfatoA 3 0.51203 0.17068 0.3701 0.7749
## HIBRIDO:FONTEN Ureia 3 107.23754 35.74585 77.5191 0
## Residuals 45 20.75054 0.46112
## Total 63 939.65583
## ------------------------------------------------------------------------
##
##
##
## HIBRIDO inside of the level AmonioA of FONTEN
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 3 13.51395
## b 1 11.26163
## c 4 9.702
## d 2 8.085
## ------------------------------------------------------------------------
##
##
## HIBRIDO inside of the level NitratoA of FONTEN
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 3 8.93592
## ab 4 7.884
## bc 1 7.4466
## c 2 6.57
## ------------------------------------------------------------------------
##
##
## HIBRIDO inside of the level SulfatoA of FONTEN
118
##
## According to the F test, the means of this factor are statistical equal.
## ------------------------------------------------------------------------
## Levels Means
## 1 1 16.7420
## 2 2 17.1975
## 3 3 17.1945
## 4 4 17.1630
## ------------------------------------------------------------------------
##
##
## HIBRIDO inside of the level Ureia of FONTEN
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 4 15.237
## b 2 12.6975
## c 3 10.1007
## d 1 8.41725
## ------------------------------------------------------------------------
##
##
##
## Analyzing FONTEN inside of each level of HIBRIDO
## ------------------------------------------------------------------------
## ------------------------------------------------------------------------
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc [Link]
## Block 3 2.55051 0.85017 1.8437 0.1528
## HIBRIDO 3 33.18888 11.06296 23.9913 0
## FONTEN:HIBRIDO NUPEC_1 3 206.29612 68.76537 149.1258 0
## FONTEN:HIBRIDO NUPEC_2 3 277.34805 92.44935 200.4873 0
## FONTEN:HIBRIDO NUPEC_3 3 166.03794 55.34598 120.0243 0
## FONTEN:HIBRIDO NUPEC_4 3 233.48380 77.82793 168.7791 0
## Residuals 45 20.75054 0.46112
## Total 63 939.65583
## ------------------------------------------------------------------------
##
##
##
## FONTEN inside of the level NUPEC_1 of HIBRIDO
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
119
## Groups Treatments Means
## a 3 16.742
## b 1 11.26163
## c 4 8.41725
## c 2 7.4466
## ------------------------------------------------------------------------
##
##
## FONTEN inside of the level NUPEC_2 of HIBRIDO
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 3 17.1975
## b 4 12.6975
## c 1 8.085
## d 2 6.57
## ------------------------------------------------------------------------
##
##
## FONTEN inside of the level NUPEC_3 of HIBRIDO
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 3 17.1945
## b 1 13.51395
## c 4 10.1007
## c 2 8.93592
## ------------------------------------------------------------------------
##
##
## FONTEN inside of the level NUPEC_4 of HIBRIDO
## ------------------------------------------------------------------------
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a 3 17.163
## b 4 15.237
## c 1 9.702
## d 2 7.884
## ------------------------------------------------------------------------
detach(FAT2_CI)
Como a interação foi significativa, o próximo passo é a comparação das médias considerando
os efeitos da interação. Os valores das médias fixando os níveis de cada fator são, por padrão,
120
calculados pela função [Link]() . A apresentação destas médias em um trabalho científico,
por exemplo, pode ser por meio de tabelas, ou gráficos. A função abaixo permite a confecção
de gráficos personalizáveis. Basta informar groupvars = c("FONTEN", "HIBRIDO") para
que a função reconheça que é necessário apresentar os fatores separadamente. Para maiores
detalhes, veja ?plot_fatmeans.
• Plotagem das médias considerando a interação
plot_fatmeans(FAT2_CI,
measurevar = "RG",
groupvars = c("FONTEN", "HIBRIDO"),
xlab = "Fonte de nitrogênio",
ylab = "Rendimento de grãos (Mg/ha)",
verbose = FALSE,
palette = "Set3",
[Link] = "right")
15
Rendimento de grãos (Mg/ha)
NUPEC_1
10
NUPEC_2
NUPEC_3
NUPEC_4
Após confecionar o gráfico, é possível salvá-lo como imagem e inserir as letras correspondentes
ao teste Tukey. Por exemplo pode-se considerar letras minúsculas para comparação das
médias dos híbridos em cada fonte de nitrogênio e letras maiúsculas para comparar o efeito
da fonte de nitrogênio em cada híbrido.
121
15
Rendimento de grãos
10
0
AmonioA NitratoA Ureia
Fonte de nitrogênio
Figure 36: Característica da produção em um experimento bifatorial sem interação significativa (agrupado
por fonte de N)
Como exemplo de análise de um experimento bifatorial com dois fatores qualitativos sem
interação significativa, utilizaremos o conjunto de dados FAT2_SI. Já sabemos que a
interação não será significativa neste exemplo. Os dois próximos gráficos nos ajudam a
compreender porque.
plot_fatmeans(FAT2_SI,
measurevar = "RG",
groupvars = c("FONTEN",
"HIBRIDO"),
invert = FALSE,
verbose = FALSE,
cex = 16,
palette = "Set3",
xlab = "Fonte de nitrogênio",
ylab = "Rendimento de grãos")
plot_fatmeans(FAT2_SI,
measurevar = "RG",
122
15
Rendimento de grãos
10
0
NUPEC_1 NUPEC_2 NUPEC_3 NUPEC_4
Híbrido
Figure 37: Característica da produção em um experimento bifatorial sem interação significativa (agrupado
por fonte híbrido)
groupvars = c("FONTEN",
"HIBRIDO"),
invert = TRUE,
verbose = FALSE,
cex = 16,
palette = "Set3",
xlab = "Híbrido",
ylab = "Rendimento de grãos")
É possível identificar que o a magnitude da variável resposta, de um fator não é alterada pelo
nível do outro fator. Por exemplo, nota-se que o híbrido NUPEC_2 parece ter uma média
maior que os outros híbridos, independentemente da fonte de nitrogênio utilizada. Do mesmo
modo, a fonte de nitrogênio AmonioA parece proporcionar maior produtividade, independen-
temente do híbrido testado. Estas afirmações, no entanto, só poderão ser confirmadas pela
análise de variância e posterior comparação de médias.
Maiores informações com relação à sintax ggplot2 para gráfico de barras podem ser encontradas
aqui.
• Análise de variância
123
attach(FAT2_SI)
[Link](factor1 = HIBRIDO,
factor2 = FONTEN,
block = BLOCO,
resp = RG,
quali = c(TRUE, TRUE),
mcomp = "tukey",
[Link] = c("HIBRIDO",
"FONTEN"),
sigT = 0.05,
sigF = 0.05)
## ------------------------------------------------------------------------
## Legend:
## FACTOR 1: HIBRIDO
## FACTOR 2: FONTEN
## ------------------------------------------------------------------------
##
##
## Analysis of Variance Table
## ------------------------------------------------------------------------
## DF SS MS Fc Pr>Fc
## Block 3 0.692 0.231 0.549 0.65236
## HIBRIDO 3 114.046 38.015 90.508 0.00000
## FONTEN 2 99.415 49.707 118.345 0.00000
## HIBRIDO*FONTEN 6 2.362 0.394 0.937 0.48173
## Residuals 33 13.861 0.420
## Total 47 230.376
## ------------------------------------------------------------------------
## CV = 5.96 %
##
## ------------------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.08895984
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------------
##
## No significant interaction: analyzing the simple effect
## ------------------------------------------------------------------------
## HIBRIDO
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a NUPEC_2 13.33417
## b NUPEC_3 10.97337
## c NUPEC_4 9.873333
124
## c NUPEC_1 9.311875
## ------------------------------------------------------------------------
##
## FONTEN
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a AmonioA 12.89291
## b Ureia 10.08074
## b NitratoA 9.645917
## ------------------------------------------------------------------------
detach(FAT2_SI)
125
Rendimento de grãos
10
0
AmonioA NitratoA Ureia
Fonte de nitrogênio
plot_fatmeans(FAT2_SI,
measurevar = "RG",
groupvars = c("HIBRIDO"),
verbose = FALSE,
cex = 16,
[Link] = 0.3,
[Link] = 0.15,
xlab = "Hibrido",
ylab = "Rendimento de grãos")
126
Rendimento de grãos
10
0
NUPEC_1 NUPEC_2 NUPEC_3 NUPEC_4
Hibrido
Neste exemplo, iremos avaliar dados de um experimento que testou dois fatores quantitativos.
O conjunto de dados utilizado é o FAT3. A análise de variância, neste caso, é realizada da
mesma maneira que os exemplos anteriores, o que muda agora é que a análise complementar,
em caso de interação significativa será diferente. Por se tratar de dois fatores quantitativos,
neste caso, doses de nitrogênio e de potássio na cultura do milho, é de se esperar que, em caso
de interação significativa, haja uma combinação de doses ótimas que proporcione a maior
magnitude da variável resposta (rendimento de grãos). Assim, uma análise de superfície de
resposta é a mais indicada para este tipo de experimento.
Para a análise neste exemplo, utilizaremos a função supresp() . Nesta função estão implemen-
tadas as seguintes rotinas: análise de variância, ajuste da equação de superfície de resposta,
determinação dos pontos críticos, estatisticas de ajuste e análise residual. O procedimento
para a análise é simples. Os seguintes argumentos precisam ser declarados: data, o conjunto
de dados; factor1 o nome da coluna com o primeiro fator; factor2 o nome da coluna com
o segundo fator; block o nome da coluna com os blocos; e resp o nome da coluna com a
variável resposta que se deseja analizar. Neste exemplo, vamos armazenar os resultados no
objeto sresp. Este procedimento é necessário para a posterior análise gráfica.
• Análise estatística
127
sresp = supresp(FAT3,
factor1 = "DOSEN",
factor2 = "DOSEK",
block = "BLOCO",
resp = "RG")
## -----------------------------------------------------------------
## Resultado da análise de variância
## Modelo: Y = m + bk + Ai + Dj + (AD)ij + eijk
## -----------------------------------------------------------------
##
## Df Sum Sq Mean Sq F value Pr(>F)
## BLOCO 3 158 53 3.621 0.0183 *
## DOSEN 3 65978 21993 1515.063 < 2e-16 ***
## DOSEK 4 11817 2954 203.513 < 2e-16 ***
## DOSEN:DOSEK 12 2363 197 13.563 1.21e-12 ***
## Residuals 57 827 15
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## -----------------------------------------------------------------
## Teste Shapiro-Wilk para normalidade de resíduos:
## W = 0.946194 p-valor = 0.002100403
## -----------------------------------------------------------------
## A interação DOSEN*DOSEK foi significativa!
## p-Valor = 1.206e-12
## Verifique as probabilidades abaixo.
## Valores de probabilidade de erro obtidos na ANOVA
## BLOCO = 1.8336e-02
## DOSEN = 2.6968e-54
## DOSEK = 4.9278e-33
## DOSEN*DOSEK = 1.206e-12
## -----------------------------------------------------------------
## Anova do modelo de superfície de resposta
## RG ~ DOSEN * DOSEK + I(DOSEN^2) + I(DOSEK^2)
## <environment: 0x000000009975b800>
## -----------------------------------------------------------------
## Analysis of Variance Table
##
## Response: RG
## Df Sum Sq Mean Sq F value Pr(>F)
## DOSEN 1 803.8 803.8 3.1304 0.09862 .
## DOSEK 1 1634.6 1634.6 6.3657 0.02436 *
## I(DOSEN^2) 1 12731.3 12731.3 49.5811 5.853e-06 ***
## I(DOSEK^2) 1 1274.5 1274.5 4.9636 0.04280 *
## DOSEN:DOSEK 1 0.3 0.3 0.0011 0.97441
128
## Residuals 14 3594.9 256.8
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## -----------------------------------------------------------------
## Resumo dos parâmetros estimados do modelo de superfície de resposta
##
## Call:
## lm(formula = F2, data = data2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -26.420 -10.060 1.834 7.189 27.470
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.178e+02 7.291e+01 -4.359 0.000654 ***
## DOSEN 1.475e+01 2.181e+00 6.762 9.15e-06 ***
## DOSEK 1.006e+00 5.423e-01 1.855 0.084830 .
## I(DOSEN^2) -1.121e-01 1.593e-02 -7.041 5.85e-06 ***
## I(DOSEK^2) -7.633e-03 3.426e-03 -2.228 0.042797 *
## DOSEN:DOSEK 1.973e-04 6.043e-03 0.033 0.974411
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 16.02 on 14 degrees of freedom
## Multiple R-squared: 0.8206, Adjusted R-squared: 0.7565
## F-statistic: 12.81 on 5 and 14 DF, p-value: 8.241e-05
##
## -----------------------------------------------------------------
## Equação de superfície de resposta
## Y = B0 + B1*A + B2*D + B11*A^2 + B22*D^2 + B12*A*D
## -----------------------------------------------------------------
## Parâmetros estimados
## B0: -317.8340786
## B1: 14.7502633
## B2: 1.0056943
## B11: -0.1121344
## B22: -0.0076331
## B12: 0.0001973
## -----------------------------------------------------------------
## Matriz de parametros (A)
## -0.1121344 9.87e-05
## 9.87e-05 -0.0076331
## -----------------------------------------------------------------
## Inversa da matrix dos parâmetros (invA)
## -8.9179679 -0.1152744
129
## -0.1152744 -131.0091259
## -----------------------------------------------------------------
## Vetor dos parâmetros B1 e B2 (X)
## B1: 14.7502633
## B2: 1.0056943
## -----------------------------------------------------------------
## Equação para estimativa das doses ótimas (A e D)
## -0.5*(invA*X)
## Autovalor 1: -0.007633
## Autovalor 2: -0.112135
## O ponto ótimo é de máxima!
## -----------------------------------------------------------------
## O ponto máximo é obtido com as seguintes doses ótimas:
## Dose ótima (DOSEN): 65.8292
## Dose ótima (DOSEK): 66.7277
## -----------------------------------------------------------------
## Equação de superfície de resposta ajustada
## A = DOSEN
## D = DOSEK
## y = -317.83408+14.75026A+1.00569D+-0.11213A^2+-0.00763D^2+2e-04A*D
## -----------------------------------------------------------------
## Estatisticas de ajuste
## Consulte a função gof do pacote hidroGOF
## [Link]
## statistics
## ME 0.00
## MAE 11.07
## MSE 179.74
## RMSE 13.41
## NRMSE % 41.30
## PBIAS % 0.00
## RSR 0.41
## rSD 0.91
## NSE 0.82
## mNSE 0.57
## rNSE 0.86
## d 0.95
## md 0.78
## rd 0.96
## cp 0.74
## r 0.91
## R2 0.82
## bR2 0.81
## KGE 0.87
## VE 0.93
## -----------------------------------------------------------------
130
## Resultados dos valores observados, preditos e residuais
## -----------------------------------------------------------------
## DOSEN DOSEK N RG predicted residuals
## 1 45 0 4 126.000 118.8555 7.144479
## 2 45 25 4 143.250 139.4492 3.800836
## 3 45 50 4 152.250 150.5014 1.748621
## 4 45 75 4 158.000 152.0122 5.987836
## 5 45 100 4 152.500 143.9815 8.518479
## 6 60 0 4 151.200 163.4977 -12.297721
## 7 60 25 4 171.900 184.1654 -12.265364
## 8 60 50 4 182.700 195.2916 -12.591579
## 9 60 75 4 178.850 196.8764 -18.026364
## 10 60 100 4 162.500 188.9197 -26.419721
## 11 75 0 4 165.000 157.6794 7.320579
## 12 75 25 4 183.750 178.4211 5.328936
## 13 75 50 4 208.250 189.6213 18.628721
## 14 75 75 4 218.750 191.2801 27.469936
## 15 75 100 4 206.250 183.3974 22.852579
## 16 90 0 4 103.320 101.4006 1.919379
## 17 90 25 4 117.465 122.2163 -4.751264
## 18 90 50 4 124.845 133.4905 -8.645479
## 19 90 75 4 128.825 135.2233 -6.398264
## 20 90 100 4 118.090 127.4146 -9.324621
## -----------------------------------------------------------------
## Shapiro-Wilk normality test
## p-value: 0.833218
## According to Shapiro-Wilk normality test at 5% of significance, residuals can be cons
## ------------------------------------------------------------------
Os resultados acima são gerados pela função. Podemos observar que a interação DOSEN
x DOSEK foi significativa, assim a metodologia de superficie de resposta foi corretamente
utilizada. A equação de superfícide considerada é um modelo com termos de segunda
ordem, onde a variável resposta é estimada considerando dois preditores, neste caso doses de
nitrogênio e doses de potássio. Considerando estes fatores como A e D o seguinte modelo
é ajustado: Yi = β0 + β1 Ai + β2 Di + β3 A2i + β4 Di2 + β5 Ai Di + i . Os parametros estimados
estão em Parâmetros estimados.
As doses ótimas são estimadas pela seguinte equação:
−0.5 × (A−1 X)
, Onde !
β3 β5 /2
A=
β5 /2 β4
e !
β1
X=
β2
131
Em nosso exemplo,
−0.11213 9.865e − 05
! !
−8.91796 −0.1152
A= ;A−1 =
9.865e − 05 −0.00763 −0.11527 −131.009
e
14.7502
!
X=
1.00569
Assim
14.7502 65.8292
" ! !# !
−8.91796 −0.1152
−0.5 × × =
−0.11527 −131.009 1.00569 66.7277
• Implementação gráfica da superfície de resposta
A função plot_supresp() do pacote cursoR proporciona uma análise gráfica poderosa da su-
perfície de resposta gerada pela função supresp() . Vimos anteriormente que era importante
armazenar os resultados desta última função em um objeto. Na ocasião, armazenamos no ob-
jeto sresp. Agora é possível utilizálo para a confecção dos gráficos. A função plot_supresp()
tem apenas um argumentos obrigatório: x que é o objeto criado pela função supresp(). Por
default o tipo do gráfico gerado é do tipo surface plot. Outros tipos de gráficos podem ser
gerados utilizando o argumento type. Se type = "residuals, um gráfico com a análise
residual do modelo é gerado. Se type = "contour", um gráfico de contorno é gerado. Os
gráficos são coloridos por padrão. No entanto, diversas opções quanto a personalização estão
disponíveis. para maiores informações veja ?plot_supresp.
• Gráfico dos resíduos
plot_supresp(sresp,
type = "residuals")
132
Residuals vs Fitted Normal Q−Q
30
Standardized residuals
2
14 14
15 15
1
Residuals
10
0
−10
−1
−30
10
−2
10
10 1
Standardized residuals
14
2
15 15
1.2
0.5
1
0.8
0
0.4
−1
20
0.5
−2
Cook's distance
10
0.0
100 120 140 160 180 200 0.0 0.1 0.2 0.3 0.4 0.5
133
200
200
180 180
RG
160
160
140
120 140
50 100
60 80
60 120
DO 70 40 SEK
SE 80
N 20 DO
90 0
134
resfac = 3)
250 200
Rendimento de gr
200 180
150 160
100 140
ãos Dos
50 120
50
60
e
100
de
70 80
60 ssio
Ni
80 40 tá
20 se de Po
tro
90 0
gê
Do
ni
o
135
200
250
Rendimento
180
200
160
150
de grãos
140
100
120
50 90 io
100
Do 80 80 gên
se 60 70 itro
de 40
Po 60 de N
tás 20 50ose
sio 0
D
136
250 200
Rendimento de gr
180
200
160
150
100 140
ãos
50 120
100
Do50 80
se 60 60 s sio
de 70 t á
Nit 80 40 Po
rog 20 e de
ên 90 0 Dos
io
137
100
200
150
80
180
60
160
DOSEK
200
40
140
190
20
120
180
110
0
13
16 170
0
13
0
0
14
0
15
16
12
0
14
15
0
0
0
50 60 70 80 90
DOSEN
138
100
150 200
130
80
200 180
Dose de Potássio
60
160
40
140
190
20
120
180
0
16 170
110
0
13
0
14
0
0
15
12
0 16 13
14
15
0
0
50 60 70 80 90
Dose de Nitrogênio
139
100
150 200
80
180
Dose de Potássio
60
160
200
40
140
190
20
120
180
110
0
13
16 170
0
13
0
0
14
0
15
16
12
0
14
15
0
50 60 70 80 90
Dose de Nitrogênio
Experimentos fatoriais são úteis devido a possibilidade de se testar dois ou mais fatores
em um mesmo experimento. Uma desvantagem deste tipo de experimento é que cada
bloco deve receber todos os tratamentos, ou seja, todas as combinações dos níveis dos dois
fatores. Assim, o número de parcelas no experimento e consequentemente o tamanho da
área experimental crese drastricamente na medida em que são incluídos fatores ou níveis de
fatores no experimento. Uma maneira de se contornar isto, é a condução de experimentos em
parcelas subdivididas.
Parcelas subdivididas são um caso especial de estrutura de tratamentos fatorial em que
um fator é alocado na parcela principal e outro fator é alocado na subparcela. Este tipo
de estrutura de tratamentos pode ser utilizada quando um fator é de dificil instalação em
pequenas parcelas, como por exemplo, a semeadura mecanizada ou um sistema de irrigação,
140
e o segundo fator pode ser alocado em parcelas mais pequenas, como um doses de nitrogênio,
por exemplo.
Diferentemente do modelo do fatorial tradicional, o modelo estatístico para análise de
experimentos em parcelas subdivididas conta com mais uma fonte de variação. Vamos
considerar como exemplo, um experimento que avaliou a influencia de dois fatores, digamos α
e τ , em uma determinada variável resposta, agora, conduzido em parcelas subivididas, onde o
fator α foi alocado na parcela principal e o fator τ alocado na subparcela. O modelo estatístico
considerado neste tipo de experimento é: yijk = µ + αi + βk + ηik + τj + (ατ )ij + εijk , onde
yijk é a variável resposta observada; µ é a média geral; αi é o efeito do i-ésimo nível de α
; βk é o efeito do bloco k; ηik é o erro de parcela, mais conhecido como erro a; assumido
iid
εijk ∩ N (0, ση2 ); τj é o efeito do j-ésimo nível de τ ; (ατ )ij é o efeito da interação do i-ésimo
nível de α com o j-ésimo nível de τ ; e εijk é o erro da subparcela, mais conhecido como erro
iid
b, assumindo εijk ∩ N (0, σ 2 ).
attach(FAT2_SI)
[Link](factor1 = HIBRIDO,
factor2 = FONTEN,
block = BLOCO,
resp = RG,
quali = c(TRUE, TRUE),
mcomp = "tukey",
[Link] = c("HIBRIDO", "FONTEN"),
sigT = 0.05,
sigF = 0.05)
## ------------------------------------------------------------------------
## Legend:
## FACTOR 1 (plot): HIBRIDO
## FACTOR 2 (split-plot): FONTEN
## ------------------------------------------------------------------------
##
## ------------------------------------------------------------------------
## $`Analysis of Variance Table`
## DF SS MS Fc Pr(>Fc)
## HIBRIDO 3 114.046 38.015 158.360 <2e-16 ***
## Block 3 0.692 0.231 0.961 0.4523
## Error a 9 2.161 0.240
## FONTEN 2 99.415 49.707 101.962 <2e-16 ***
## HIBRIDO*FONTEN 6 2.362 0.394 0.808 0.5741
## Error b 24 11.700 0.488
## Total 47 230.376
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## ------------------------------------------------------------------------
## CV 1 = 4.506098 %
## CV 2 = 6.421463 %
141
##
## No significant interaction: analyzing the simple effects
## ------------------------------------------------------------------------
## HIBRIDO
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a NUPEC_2 13.33417
## b NUPEC_3 10.97337
## c NUPEC_4 9.873333
## c NUPEC_1 9.311875
## ------------------------------------------------------------------------
##
## FONTEN
## Tukey's test
## ------------------------------------------------------------------------
## Groups Treatments Means
## a AmonioA 12.89291
## b Ureia 10.08074
## b NitratoA 9.645917
## ------------------------------------------------------------------------
detach(FAT2_SI)
3 Análise de regressão
A análise de regressão tem como objetivo verificar como uma variável independente influencia
a resposta de uma variável dependente. A análise de regressão é amplamente utilizada em
ciências agrárias e pode ser dividida em simples ou múltipla . Na regressão simples, apenas
uma variável dependente é declarada no modelo:
Yi = β0 + β1 x + εi
Yi = β0 + β1 x1 + β2 x2 + ... + βk xk + εi
142
Yi = f (x) + εi
3.1.1 Estimação
Uma das formas de estimar os parâmetros em regressão é minimizando os erros. Os erros são
a diferença entre o valor estimado pela função resposta (f (x)) e o valor observado (Yi ). Então,
devemos encontrar valores para β que minimizem estes erros, representados pela distância
entre a reta estimada e os valores observados.
model=function(x,b0,b1){
b0+b1*x} ## modelo genérico
X=c(20,55,30)
Y=c(5,12,10)
mod6=lm(Y~X)
Y.1=mod6$[Link] ## valores estimados
b0=mod6$coefficients[1]
b1=mod6$coefficients[2]
## Gráfico
plot(Y~X, xlab="Variável independente", ylab="Variável dependente",
ylim=c(2,15),xlim=c(15,60),pch=16,cex=1.2)
curve(model(x,b0=b0,b1=b1),add=TRUE,lwd=2)
segments(x0=20,y0=5,x1=20,y1=Y.1[1],lwd=1.5) ## erro 1
segments(x0=30,y0=10,x1=30,y1=Y.1[3],lwd=1.5) ## erro 2
segments(x0=55,y0=12,x1=55,y1=Y.1[2],lwd=1.5) ## erro 3
143
14
12
Variável dependente
10
8
6
4
2
20 30 40 50 60
Variável independente
Na figura acima, reta é traçada de modo que as distâncias entre ela e os pontos seja mínimo.
Essa distância é obtida, pelo método dos mínimos quadrados , minimizando a soma de
quadrados dos resíduos (uma vez que a soma dos resíduos é igual a zero).
n 2
S = ε0 ε = =0
X
Yi − Ŷi
i=1
Para encontrar os valores dos parâmetros que minimiza essa soma de quadrados basta resolver
o sistema de equações normais , obtida após derivar S em relação aos parâmetros. A resolução
144
deste sistema fornece estimativas não viesadas dos parâmetros β̂.
X0 Xβ = X0 Y
β̂ = (X0 X)−1 X0 Y
Percebe-se que as estimativas dos parâmetros não tem nenhuma relação com os pressupostos de
normalidade, homocedasticidade e independência dos resíduios. Porém, cumprir pressupostos
é importante para testar hipóteses e construir intervalos de confiança. Outro aspecto
importante na estimação é a necessidade da matriz X0 X ser não singular, pois assim é possível
inverter essa matriz e resolver o sistema de equações normais obtendo parâmetros únicos. O
sistema de equações normais também pode ser resolvido utilizando a inversa generalizada.
Neste último caso, os valores dos parâmetros que resolvem o sistema de equações não são
únicos. Para maiores detalhes sobre como estimar os parâmetros de regressões lineares, ver
Draper and Smith (1998), Kutner et al. (2005) e Rencher and Schaalje (2008).
Citamos acima que uma matriz X0 X não singular é necessário para obtermos os parâmetros
da nossa regressão. A não singularidade da matriz está relacionada com quanto as variáveis
independentes estão correlacionadas. Quando as variáveis independentes estão aproximada-
mente (ou perfeitamente, o que é praticamente impossível) relacionadas dizemos que há
elevada multicolinearidade . O principal problema da multicolinearidade está relacionado
com as estimativas dos parâmetros. Quando ela é elevada, um conjunto de funções resposta
minimiza os erros e prediz, com precisão, os valores observados.
Quando há multicolinearidade, é possível resolver o sistema de equações normais utilizando
a inversa generaliazada de Moore-Penrose, através da função ginv() do pacote MASS.
Utilizando a inversa generalizada minimiza-se a soma dos quadrados, porém não garante-se
que os parâmetros sejam únicos. Então, qualquer inferências sobre como as variáveis se
relacionam passa a ser duvidosa (Kutner et al. 2005).
Para demonstrar como a multicolinearidade afeta a estimativa dos parâmetros, utilizamos
um exemplo hipotético de Kutner et al. (2005). Execute a programação em casa e veja os
resultados.
X1=c(2,8,6,10)
X2=c(6,9,8,10)
cor(X1,X2) ## correlação entre as variávies independentes
for(i in 1:20){
Y=c(23,83,63,103)
X1=c(2,8,6,10)
X2=c(6,9,8,10)
grid = [Link](list(
b0 = seq(-i,i, by=0.1),
145
b1 = seq(-i, i, by = 0.1),
b2 = seq(-i, i, by = 0.1)
)) ## Armazenando um conjunto de valores que quero dar aos parâmetros
Resp = nls2(Y~b0+b1*X1+b2*X2,
start = grid,
algorithm = "brute-force")
b0=summary(Resp)$coefficients[1,1]
b1=summary(Resp)$coefficients[2,1]
b2=summary(Resp)$coefficients[3,1]
sigma=summary(Resp)$sigma
;
resultados$b0[i]=b0
resultados$b1[i]=b1
resultados$b2[i]=b2
resultados$sigma[i]=sigma
}
resultados
Quando há multicolinearidade , conjuntos de diferentes parâmetros resolvem o sitema de
equações normais e minimizam a soma de quadrados. Por isso, relacionar a resposta da
variável dependente em função das variáveis independentes passa a ser impossível. Por isso,
por exemplo, que a multicolinearidade é importante na análise de trilha. A relação entre as
variáveis na análise de trilha é determinada com base no valor dos coeficientes de trilha, que
nada mais são do que parâmetros de uma regressão múltipla.
Não entraremos em detalhe sobre a multicolinearidade nesta parte do curso, e deixaremos
o diagnóstico para a seção de análise multivariada. Ressaltamos também que a capacidade
preditiva dos modelos, ou seja, a capacidade do modelo em estimar determinado valor
observado com precisão, não é afetada pela multicolinearidade.
A função lm() é utilizada para ajustar regresões lineares simples e múltipla. Os argumentos
mais importantes desta função são a formula, onde indicamos a função resposta; e data,
onde indicamos o banco de dados. Vamos utiliza um exemplo simples retirado de Schenider,
Schenider, and Souza (2009):
require(readxl)
Reg_Fl=read_excel("D:/Desktop/final/Reg_Fl.xlsx")
Reg_Fl
## # A tibble: 13 x 4
## Y X1 X2 X3
## <dbl> <dbl> <dbl> <dbl>
## 1 15 5 3 12
146
## 2 27 8 2 5
## 3 10 12 14 8
## 4 2 2 4 14
## 5 39 16 5 7
## 6 32 10 2 9
## 7 35 14 5 3
## 8 14 9 11 2
## 9 8 6 10 3
## 10 18 10 8 15
## 11 3 7 9 13
## 12 7 6 8 16
## 13 24 12 10 23
mod7=lm(Y~X1+X2+X3,data=Reg_Fl)
mod7.1=lm(Y~1,data=Reg_Fl)
anova(mod7.1,mod7) ## Verificar a significância do modelo
##
## Call:
## lm(formula = Y ~ X1 + X2 + X3, data = Reg_Fl)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.4062 -2.2378 -0.3066 1.6321 4.8468
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.86871 3.32628 2.366 0.0422 *
## X1 2.72881 0.25198 10.830 1.84e-06 ***
147
## X2 -1.92182 0.25540 -7.525 3.60e-05 ***
## X3 -0.09752 0.15686 -0.622 0.5496
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.291 on 9 degrees of freedom
## Multiple R-squared: 0.9469, Adjusted R-squared: 0.9291
## F-statistic: 53.45 on 3 and 9 DF, p-value: 4.653e-06
anova(mod7) ## Quanto cada variável "contribui" para a significância
Onde, SQErro (Ω) e SQErro (ω) são as somas de quadrados dos resíduos nos modelos completo
e reduzido, respectivamente; GLErro (ω) e GLErro (Ω) são os graus de liberdade do resíduo do
modelo completo e reduzido, respectivamente; e QMErro (ω) é o quadrado médio do resíduo
do modelo completo. Podemos realizar o teste F utilizando a função anova():
mod7=lm(Y~X1+X2+X3,data=Reg_Fl)
mod8=lm(Y~X1+X2,data=Reg_Fl)
anova(mod8,mod7)
148
anova(mod8)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = Reg_Fl)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.6055 -2.1927 -0.6734 2.0716 4.0917
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.7266 2.6866 2.504 0.0312 *
## X1 2.7596 0.2394 11.530 4.25e-07 ***
## X2 -1.9376 0.2462 -7.870 1.36e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.188 on 10 degrees of freedom
## Multiple R-squared: 0.9446, Adjusted R-squared: 0.9335
## F-statistic: 85.21 on 2 and 10 DF, p-value: 5.232e-07
149
teste F parcial verifica a significância. As variávies são adicionadas enquanto o F parcial for
significativo.
cor(Reg_Fl$X1,Reg_Fl$Y) ## maior correlação
## [1] 0.7754301
cor(Reg_Fl$X2,Reg_Fl$Y) ## segunda maior correlação
## [1] -0.4558018
cor(Reg_Fl$X3,Reg_Fl$Y) ## terceira maior correlação
## [1] -0.2460537
mod_for1=lm(Y~1,data=Reg_Fl)
mod_for2=lm(Y~X1,data=Reg_Fl) ## Adiciona X1
mod_for3=lm(Y~X1+X2,data=Reg_Fl) ## Adiciona X2
mod_for4=lm(Y~X1+X2+X3,data=Reg_Fl) ## Adiciona X3
anova(mod_for1,mod_for2,mod_for3,mod_for4) ## Seleciona o modelo
150
## 1 10 101.655
## 2 9 97.469 1 4.186 0.3865 0.5496
## F parcial para X2
mod_back.x2.1=lm(Y~X1+X3,data=Reg_Fl)
mod_back.x2=lm(Y~X1+X2+X3,data=Reg_Fl)
anova(mod_back.x2.1,mod_back.x2)
151
## Analysis of Variance Table
##
## Model 1: Y ~ X1
## Model 2: Y ~ X1 + X2
## [Link] RSS Df Sum of Sq F Pr(>F)
## 1 11 731.23
## 2 10 101.66 1 629.58 61.933 1.359e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Stepwise
O método stepwise utiliza características dos métodos forward e backward. Neste método
parte-se de um modelo composto pela variável com maior correlação amostral. A cada variável
adicionada por forward, é relizado um backward para retirar uma das variáveis previamente
adicionadas.
## Passo 1
mod_step1.0=lm(Y~1,data=Reg_Fl)
mod_step1=lm(Y~X1,data=Reg_Fl)
anova(mod_step1.0,mod_step1) ## adiciona X1
152
## Analysis of Variance Table
##
## Model 1: Y ~ X2
## Model 2: Y ~ X1 + X2
## [Link] RSS Df Sum of Sq F Pr(>F)
## 1 11 1452.98
## 2 10 101.66 1 1351.3 132.93 4.251e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Passo 3
mod_step3=lm(Y~X1+X2,data=Reg_Fl)
mod_step3.1=lm(Y~X1+X2+X3,data=Reg_Fl)
anova(mod_step3,mod_step3.1) ## não adiciona X3, seleciona o modelo
head(Reg_cherry)
## # A tibble: 6 x 6
## Y X1 X2 X3 X4 X5
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 3.14 2.60 2.84 1.15 1 1.98
## 2 3.36 2.72 2.95 1.21 1 2.15
## 3 3.31 2.76 2.90 1.18 1.18 2.12
## 4 3.26 2.64 2.78 1.12 1.04 2.14
## 5 3.03 2.53 2.65 1.10 0.845 1.93
## 6 3.23 2.59 2.76 1.11 0.954 2.12
153
mod9=lm(Y~X1+X2+X3+X4+X5, data=Reg_cherry) # O ponto indica que todas as variávies estã
summary(mod9)
##
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4 + X5, data = Reg_cherry)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.095586 0.000014 0.000245 0.000457 0.039900
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.004561 0.007787 0.586 0.558
## X1 -0.007276 0.006604 -1.102 0.271
## X2 0.007407 0.006016 1.231 0.219
## X3 0.996903 0.013019 76.575 <2e-16 ***
## X4 0.001987 0.003895 0.510 0.610
## X5 0.997701 0.003282 304.022 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.005704 on 341 degrees of freedom
## Multiple R-squared: 0.9992, Adjusted R-squared: 0.9992
## F-statistic: 8.99e+04 on 5 and 341 DF, p-value: < 2.2e-16
São candidatas a permanecer no modelo apenas as variáveis X3 e X5.
require(MASS)
stepAIC(mod9,direction =c("backward"))
## Start: AIC=-3579.65
## Y ~ X1 + X2 + X3 + X4 + X5
##
## Df Sum of Sq RSS AIC
## - X4 1 0.00001 0.01110 -3581.4
## - X1 1 0.00004 0.01113 -3580.4
## - X2 1 0.00005 0.01114 -3580.1
## <none> 0.01110 -3579.6
## - X3 1 0.19079 0.20188 -2574.9
## - X5 1 3.00738 3.01848 -1636.4
##
## Step: AIC=-3581.38
## Y ~ X1 + X2 + X3 + X5
##
## Df Sum of Sq RSS AIC
## - X1 1 0.0000 0.0111 -3582.2
154
## - X2 1 0.0000 0.0111 -3582.0
## <none> 0.0111 -3581.4
## - X3 1 0.1912 0.2023 -2576.2
## - X5 1 13.1318 13.1429 -1127.9
##
## Step: AIC=-3582.2
## Y ~ X2 + X3 + X5
##
## Df Sum of Sq RSS AIC
## - X2 1 0.0000 0.0112 -3583.8
## <none> 0.0111 -3582.2
## - X3 1 0.2112 0.2223 -2545.5
## - X5 1 13.4001 13.4112 -1122.9
##
## Step: AIC=-3583.78
## Y ~ X3 + X5
##
## Df Sum of Sq RSS AIC
## <none> 0.0112 -3583.8
## - X3 1 1.0352 1.0463 -2010.0
## - X5 1 13.7857 13.7968 -1115.0
##
## Call:
## lm(formula = Y ~ X3 + X5, data = Reg_cherry)
##
## Coefficients:
## (Intercept) X3 X5
## 0.0008518 0.9997819 0.9995747
Quando várias observações são realizadas para cada variável independente (experimentos com
repetição, por exemplo), é necessário verificar a falta de ajuste. Nestes casos, o erro é dividido
em duas partes: a) o erro puro, que consiste na diferença entre a média e as observações em
cada variável; b) falta de ajuste, que é a diferença entre a média da variável independente e o
valor ajustado pela regressão.
Yij − Ŷi = Yij − Ȳ i. + Ȳ i. − Ŷi
Onde Yˆij − Yij é o erro do modelo, (Yij − Y¯j ) é o erro puro e (Yˆij − Y¯j ) é a falta de ajuste.
require(readxl)
Reg=read_excel("D:/Desktop/final/[Link]")
head(Reg)
## # A tibble: 6 x 4
155
## TRAT BLOCO DOSE Y
## <dbl> <dbl> <dbl> <dbl>
## 1 1 1 0 28
## 2 1 2 0 47
## 3 1 3 0 18
## 4 2 1 5 46
## 5 2 2 5 51
## 6 2 3 5 55
#### Ajustando uma regressão linear
mod10=lm(Y~DOSE, data=Reg)
## estima a reta = falta de ajuste
mod10.1=lm(Y~factor(DOSE), data=Reg)
## retorna a média das variáveis independentes = erro puro
anova(mod10,mod10.1)
156
múltipla ou regressão não linear).
##
## Shapiro-Wilk normality test
##
## data: residuos
## W = 0.95358, p-value = 0.3972
[Link](residuos~DOSE,data=Reg) ## Homocedasticidade
##
## Bartlett test of homogeneity of variances
##
## data: residuos by DOSE
## Bartlett's K-squared = 5.9846, df = 6, p-value = 0.4249
par(mfrow=c(2,2))
plot(mod11) ## análise gráfica dos resíduos
157
Residuals vs Fitted Normal Q−Q
3
20
2 2
Standardized residuals
15
2
15
10
Residuals
1
5
0
0
−5
−1
11
−15
11
30 40 50 60 70 80 90 −2 −1 0 1 2
2 1
1.5
2
Standardized residuals
Standardized residuals
15
0.5
2
11 15
1.0
1
0
0.5
−1
Cook's distance 3
0.0
A análise dos resíduos também pode indicar a necessidade de adicionar variávies explicativas
ao modelo. Por exemplo, vamos ajustar um modelo linear a dados que tem (conhecidamente)
comportamento quadrático.
mod10=lm((Y~DOSE), data=Reg)
residuos=residuals(mod10)
par(mfrow=c(2,2))
plot(mod10) ## análise gráfica dos resíduos
158
Residuals vs Fitted Normal Q−Q
30
2
15 15
20
Standardized residuals
1
10
Residuals
0
−10
−1
21
21
3
−30
−2
3
50 60 70 80 90 100 −2 −1 0 1 2
15
21
Standardized residuals
1.2
Standardized residuals
1
0.8
0
−1
0.4
19
21
−2
Cook's distance 3
0.0
0.5
Percebe-se, pelo gráfico residuals vs fitted, que os resíduos não são aleatoriamente distribuídos
em torno de zero. A distribuição sistemática dos resíduos indica que uma variável que explica
consideravelmente a variabilidade dos dados não foi incluída no modelo (no caso o termo
quadrático do polinômio).
159
Cook's D Bar Plot
0.8
2
Threshold: 0.19
0.6
Observation
Cook's D
0.4
normal
outlier
0.2
0.0
0 5 10 15 20
Observation
Figure 40: Distância de Cook representando a influencia dos pontos na predição das variávies
predição das variávies; e o DFBETA mede a influência destas observações sobre as estimativas
dos parâmetros.
Vamos utilizar as funções gráficas do pacote olsrr para fazer o diagnóstico dos pontos
infuentes.
require(olsrr)
mod11=lm(Y~DOSE+I(DOSE^2), data=Reg)
olsrr::ols_plot_cooksd_bar(mod11) ## Distância de Cook
olsrr::ols_plot_dfbetas(mod11) ## DFBetas
160
page 1 of 1
Influence Diagnostics for (Intercept) Influence Diagnostics for I(DOSE^2)
2 2
Threshold: 0.44 Threshold: 0.44
1.0
1
DFBETAS
DFBETAS
0.5
0 0.0
3 −0.5 3
0 5 10 15 20 0 5 10 15 20
Observation Observation
0.0
DFBETAS
−0.5
−1.0
2
−1.5
0 5 10 15 20
Observation
olsrr::ols_plot_dffits(mod11) ## DFFits
161
Influence Diagnostics for Y
2 Threshold: 0.76
1
DFFITS
0 5 10 15 20
Observation
Reg
## # A tibble: 21 x 4
## TRAT BLOCO DOSE Y
## <dbl> <dbl> <dbl> <dbl>
## 1 1 1 0 28
## 2 1 2 0 47
## 3 1 3 0 18
## 4 2 1 5 46
## 5 2 2 5 51
## 6 2 3 5 55
## 7 3 1 10 76
## 8 3 2 10 73
## 9 3 3 10 79
## 10 4 1 15 84
## # ... with 11 more rows
As observações 2 e 3 são as que mais influênciam os valores preditos e as estimativas dos
parâmetros. Realmente, o valor da observaçõe 2 é demasiadamente grande e o valor da
observação 3 é demasiadamente pequeno. Os limites pela distância de Cook, DFBETA e
162
q
DFFITS para realizar o diagnóstico são 4
n
= 4
21
= 0, 19, √4
n
= √4
21
= 0, 44 e 2 × p
n
=
q
2× 3
21
= 0, 76, respectivamente.
Uma regressão é dita não linear quando os parâmetros não encontram-se de forma aditiva
no modelo. Devido a isso, o sistema de equações normais (X0 X)−1 β = X0 Y não pode ser
resolvido analiticamente, e os parâmetros precisam ser estimados utilizando métodos iterativos.
3.2.1 Estimação
A estimação dos parâmetros é realizado pelo método dos mínimos quadrados . O método
iterativo utilizado nos softwares R e SAS (dois dos softwares estatísticos mais utilizados
no mundo) é o de Gauss-Newton. Este método utiliza aproximações lineares de Taylor de
primeira ordem da função resposta, dada por
∂f (x, θ0 )
f (x, θ) = f x, θ0 + θ − θ0
∂θ
Essa aproximação linear de primeira ordem pode ser simplificada por f (θ) = f (θ0 )+F (θ − θ0 ).
Substituindo-a na função que minimiza a soma de quadrados, temos:
n 2
S (θ) = y − f θ̂
P
i=1
n 2
S (θ) = (y − f (θ0 ) − F (θ − θ0 ))
P
i=1
n 2
S (θ) = (ε − F (θ − θ0 ))
P
i=1
A função nls() pode ser utilizada para ajustar modelos não lineares. Os principais argumentos
da função são: i) formula, onde o modelo é declarado; ii) data, onde os dados são declarados
e iii) start , que é uma lista com os valores iniciais dos parâmetros.
Valores iniciais dos parâmetros
163
O primeiro passo da análise é encontrar os valores iniciais dos parâmetros. O método gráfico
é útil para cumprir esse objetivo. Valores dos parâmetros são declarados até o ponto em que
a curva gerada se aproxime dos valores observados. A programação que será apresentada foi
obtida no blog Ridículas, mantido pelo LEG da UFPR. Utilizaremos como exemplo o modelo
logístico (uma de suas parametrizações), dado por
β1
Yi = + εi
1+ e 2 −β3 ti )
(β
require(readxl)
nls_tomato=read_excel("D:/Desktop/final/nls_tomato.xlsx")
nls_tomato=subset(nls_tomato,Genotipo=="Cordillera") ## Selecionado só um genótipo
## Valores iniciais
plot(num~DAT,data=nls_tomato) # Plotando os valores observados
logi<-function(x,b1,b2,b3){
b1/(1+exp(b2-b3*x))
} ## modelo logístico
## Manipulando os valores
require(manipulate) ## Permite criar gráficos "móveis"
manipulate({
plot(num~DAT,data=nls_tomato)
curve(logi(x,b1=b1,b2=b2,b3=b3),add=TRUE)
start<<-list(b1=b1,b2=b2,b3=b3)},
b1=slider(1,30,initial=30), ## valores que irão variar para b0
b2=slider(5,40,initial=19), ## valores que irão variar para b1
b3=slider(0.2,1.5,initial=0.2) ## valores que irão variar para b2
)
start()
Ajustando o modelo
Os valores iniciais serão armazenados na lista start, e esta será declarada no argumento
start da função nls() . A função summary() retorna o teste de Wald para os parâmetros.
start=list(b1=30,b2=19,b3=0.2)
nls1=nls(num~b1/(1+exp(b2-b3*DAT)),
data=nls_tomato, ## indica os dados
start=start) ## indica os valores iniciais
164
Figure 41: Manipulando os valores dos parâmetros
summary(nls1)
##
## Formula: num ~ b1/(1 + exp(b2 - b3 * DAT))
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## b1 39.68150 1.50505 26.37 1.96e-07 ***
## b2 13.53979 0.94913 14.27 7.42e-06 ***
## b3 0.13390 0.01018 13.15 1.19e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9108 on 6 degrees of freedom
##
## Number of iterations to convergence: 7
## Achieved convergence tolerance: 3.652e-06
Os resíduos dos modelos não lineares também deve ser normalmente distribuídos, homo-
cedásticos e independentes. Os testes estatísticos e a análise dos resíduos seguem os mesmos
princípios dos modelos lineares.
165
### Normalidade
res_nls1=residuals(nls1)
[Link](res_nls1)
##
## Shapiro-Wilk normality test
##
## data: res_nls1
## W = 0.92624, p-value = 0.4464
### Passando a função nls para lm
nls1_grad=attr(nls1$m$fitted(),"gradient") # obtem matriz gradiente
nls1_lm=lm(num~-1+nls1_grad, data=nls_tomato)
### Homogeneidade
require(lmtest) # pacote para carregar teste de Breusch-Pagan (homogeneidade)
bptest(nls1_lm) # teste de Breusch-Pagan (homogeneidade)
##
## studentized Breusch-Pagan test
##
## data: nls1_lm
## BP = 1.5734, df = 2, p-value = 0.4554
### Independência
require (car) # pacote para carregar teste de DW (independência)
durbinWatsonTest(nls1_lm) # teste de DW (independência)
166
Residuals Standardized Residuals
2
0.5
Standardized residuals
1
0.0
Residuals
0
−0.5
−1
−1.0
−2
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35
0.5
Sample Quantiles
Residuals i+1
0.0
0.0
−0.5
−1.0
−1.0
No exemplo acima, apenas uma observação foi realizada para cada variável independente (dias
após o transplante, no caso). Por isso optou-se por utilizar o teste de Breusch-Pagan para
realizar o diagnóstico de homocedasticidade dos resíduos. Quando mais de uma observação é
realizada em cada variável independente, pode-se utilizar os testes de Bartlett ou Levene.
### Carrgando os dados
nls_eggplant=read_excel("D:/Desktop/final/nls_eggp.xlsx")
nls_eggplant=subset(nls_eggplant, Estufa=="1") ## Selecionado só um genótipo
167
start=list(b1=10,b2=6.7,b3=0.073)
nls2=nls(num~b1/(1+exp(b2-b3*DAT)),
data=nls_eggplant, ## indica os dados
start=start) ## indica os valores iniciais
summary(nls2)
##
## Formula: num ~ b1/(1 + exp(b2 - b3 * DAT))
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## b1 10.223999 0.377492 27.084 < 2e-16 ***
## b2 6.765817 0.686703 9.853 2.35e-11 ***
## b3 0.072527 0.008245 8.796 3.63e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6438 on 33 degrees of freedom
##
## Number of iterations to convergence: 6
## Achieved convergence tolerance: 3.861e-06
### Normalidade
res_nls2=residuals(nls2)
[Link](res_nls2)
##
## Shapiro-Wilk normality test
##
## data: res_nls2
## W = 0.96901, p-value = 0.3991
### Homogeneidade
[Link](res_nls2~DAT,data=nls_eggplant)
##
## Bartlett test of homogeneity of variances
##
## data: res_nls2 by DAT
## Bartlett's K-squared = 11.741, df = 5, p-value = 0.03851
### Independência
nls2_grad=attr(nls2$m$fitted(),"gradient") # obtem matriz gradiente
nls2_lm=lm(num~-1+nls2_grad, data=nls_eggplant)
### Independência
require (car) # pacote para carregar teste de DW (independência)
durbinWatsonTest(nls2_lm) # teste de DW (independência)
168
## lag Autocorrelation D-W Statistic p-value
## 1 0.1801403 1.621292 0.114
## Alternative hypothesis: rho != 0
Conforme vimos acima, a estimação dos parâmetros é realizada pelo método dos mínimos
quadrados utilizando aproximações lineares de Taylor da função resposta. É esta aproximação
linear que garante que os parâmetros estimados sejam proximos de não viesados (só serão não
viesados assintoticamente). Modelos com aproximação linear pobre tendem a ter parâmetros
muito viesados, o que impede que eles sejam utilizados para explicar determinado fenomeno
biológico (eles tem ineterpretação biológica). As medidas de curvatura de Bates e Watts
são amplamente utilizadas para avaliar o grau de não linearidade da função resposta. Para
maiores detalhes, ver Bates and Watts (1988), cap. 7 e Seber and Wild (2003), cap. 4. Essas
medidas são facilmente implementadas através da função [Link]() do pacote MASS.
## Chute inicial e modelo
start=list(b1=30,b2=19,b3=0.2)
nls1=nls(num~b1/(1+exp(b2-b3*DAT)),
data=nls_tomato, ## indica os dados
start=start)
[Link](nls1_hess.1)
169
Figure 42: Comportamento da produção acumulada em olerícolas
Rego (2016b) Lucio et al. (2016)), o que permite deteminar essas caracteristicas através dos
parâmetros de um modelo logístico:
β1
Yi = + εi
1+ e 2 −β3 ti )
(β
No modelo acima, β1 representa a assíntota, e está associada a produção total dos genótipos;
β3 é a taxa de produção de frutos, e está associada a precocidade produtiva dos genótipos
(Sari 2018). Vamos testar as seguintes hipóteses:
H0 : β11 = β12
HA : β11 6= β12
H0 : β31 = β32
HA : β31 6= β32
170
Testando a hipótese H0 : β11 = β12
Associamos os fatores a novas variávies através de uma nova coluna no banco de dados. No
nosso caso, a coluna “Completo” associa o fator aos parâmetros do modelo logístico. Então,
como o modelo logístico possui 3 parâmetros, ao associarmos variávies dummys ao fator
genótipo (são dois genótipos), o modelo completo passa a ter 6 parâmetros.
Para tertar esta hipótese, associamos variáveis dummy s apenas aos parâmetros β2 e β3 .
Neste caso, o modelo passa a ter 5 parâmetros (1 β1 , 2 β2 e 2 β3 ). Podemos comparar esse
modelo reduzido com o modelo completo de 6 parâmetros. Se o teste F der significativo,
concluímos que há influência do fator genótipo.
## Lendo os dados
require(xlsx)
nls_tomato=read_excel("D:/Desktop/final/nls_tomato.xlsx")
nls_tomato$Genotipo=[Link](nls_tomato$Genotipo)
nls_tomato$Completo=[Link](nls_tomato$Completo)
nls_tomato$Reduzido=[Link](nls_tomato$Reduzido)
nls_tomato
## # A tibble: 18 x 6
## Genotipo DAT peso num Completo Reduzido
## <fct> <dbl> <dbl> <dbl> <fct> <fct>
## 1 Gaucho 72 5.71 0.075 A A
## 2 Gaucho 78 125. 0.995 A A
## 3 Gaucho 84 318. 3.07 A A
## 4 Gaucho 90 1206. 8.16 A A
## 5 Gaucho 96 2018. 12.7 A A
## 6 Gaucho 102 2429. 15.3 A A
## 7 Gaucho 108 2720. 17.1 A A
## 8 Gaucho 114 2895. 18.4 A A
## 9 Gaucho 120 3030. 19.7 A A
## 10 Cordillera 72 16.4 0.2 B A
## 11 Cordillera 78 52.2 0.55 B A
## 12 Cordillera 84 311. 3.18 B A
## 13 Cordillera 90 804. 7.58 B A
## 14 Cordillera 96 1632. 14.1 B A
## 15 Cordillera 102 2521. 21.3 B A
## 16 Cordillera 108 3164. 27 B A
## 17 Cordillera 114 3892. 34.2 B A
## 18 Cordillera 120 4135. 36.9 B A
## Modelo completo
tomato_completo=nls(num~b1[Completo]/(1+exp(b2[Completo]-b3[Completo]*DAT)),
data=nls_tomato,
start=list(
b1=c(18.94,39.68),
b2=c(16.04,13.54),
171
b3=c(0.17,0.13)))
## Modelo completo
tomato_reduzido.b1=nls(num~b1[Reduzido]/(1+exp(b2[Completo]-b3[Completo]*DAT)),
data=nls_tomato,
start=list(
b1=c(18.94),
b2=c(16.04,13.54),
b3=c(0.17,0.13)))
anova(tomato_reduzido.b1,tomato_completo)
## Modelo completo
tomato_reduzido.b3=nls(num~b1[Completo]/(1+exp(b2[Completo]-b3[Reduzido]*DAT)),
data=nls_tomato,
start=list(
b1=c(18.94,39.68),
b2=c(16.04,13.54),
b3=c(0.16)))
anova(tomato_reduzido.b3,tomato_completo)
172
## Model 2: num ~ b1[Completo]/(1 + exp(b2[Completo] - b3[Completo] * DAT))
## [Link] [Link] Sq Df Sum Sq F value Pr(>F)
## 1 13 10.1479
## 2 12 7.8335 1 2.3144 3.5454 0.08417 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Os valores da taxa de produção de frutos não diferem estatisticamente entre si.
Percebe-se claramente que um modelo comum aos dois genótipos não é possível (assintota
diferem entre si). Por isso, optou-se por gerar um modelo em separado para cada genótipo.
Podemos representar isso graficamente utilizando a função plot() .
logi<-function(x,b1,b2,b3){
b1/(1+exp(b2-b3*x))
}
plot(num~DAT,data=subset(nls_tomato,Genotipo=="Gaucho"),ylim=c(0,50),
xlab="Dias após o transplante (DAT)",
ylab="Número de frutos por planta",pch=1)
points(num~DAT,data=subset(nls_tomato,Genotipo=="Cordillera"),pch=2)
curve(logi(x,b1=summary(tomato_completo)$coefficients[1,1],
b2=summary(tomato_completo)$coefficients[3,1],
b3=summary(tomato_completo)$coefficients[5,1]),add=TRUE)
curve(logi(x,b1=summary(tomato_completo)$coefficients[2,1],
b2=summary(tomato_completo)$coefficients[4,1],
b3=summary(tomato_completo)$coefficients[6,1]),add=TRUE,lty=2)
β0 + β1 x + εi , seXi <X0
(
Yi =
P seXi >X0
173
50
40
Número de frutos por planta
30
20
10
Gaucho
Cordillera
0
174
### Carregando os dados
plato_tomato=read_excel("D:/Desktop/final/plato_tomato.xlsx")
plato_cordillera=nls(num~(b0+b1*DAT*(DAT<=P))+
(b1*P*(DAT>P)),
data=subset(plato_tomato, Genotipo=="Cordillera"),
start=list(b0=5, b1=11/8, P=15))
summary(plato_cordillera)
##
## Formula: num ~ (b0 + b1 * DAT * (DAT <= P)) + (b1 * P * (DAT > P))
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## b0 4.83854 0.24586 19.68 0.000287 ***
## b1 1.33203 0.04761 27.98 0.000100 ***
## P 9.28641 0.25091 37.01 4.34e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2693 on 3 degrees of freedom
##
## Number of iterations to convergence: 4
## Achieved convergence tolerance: 6.131e-08
plato_SantaCl=nls(num~(b0+b1*DAT*(DAT<=P))+
(b1*P*(DAT>P)),
data=subset(plato_tomato, Genotipo=="[Link]"),
start=list(b0=5, b1=11/8, P=15))
summary(plato_SantaCl)
##
## Formula: num ~ (b0 + b1 * DAT * (DAT <= P)) + (b1 * P * (DAT > P))
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## b0 2.50000 0.42213 5.922 0.009618 **
## b1 0.71484 0.05641 12.673 0.001060 **
## P 14.36066 0.89938 15.967 0.000534 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5045 on 3 degrees of freedom
##
## Number of iterations to convergence: 2
175
## Achieved convergence tolerance: 1.835e-09
O genótipo Cordillera produz a uma taxa de 1,33 frutos/dia até os ~9 dias após o início das
colheitas, quando começa a estabilizar a produção (17,19 frutos). Já o genótipo Santa Clara
produz a uma taxa de 0,71 frutos/dia até os ~14 dias após o início das colheitas, quando
começa a estabilizar a produção (12,69 frutos). Podemos verificar a taxa de produção e o
ponto de estabilização através de variáveis dummy .
### Carregando os dados
plato_tomato=read_excel("D:/Desktop/final/plato_tomato.xlsx")
plato_tomato$Genotipo=[Link](plato_tomato$Genotipo)
plato_tomato$Completo=[Link](plato_tomato$Completo)
plato_tomato$Reduzido=[Link](plato_tomato$Reduzido)
anova(plato_reduzido.b1,plato_completo)
176
P=c(12)))
anova(plato_reduzido.P,plato_completo)
177
20
15
Número de frutos por planta
10
5
Cordillera
Santa Clara
0
0 5 10 15 20
178
originalmente concebido por Francis Galton, que definiu o termo correlação como como o
seguinte: duas variáveis são ditas correlacionadas quando a variação de uma é acompanhada
na média, mais ou menos a variação da outra, e no mesmo sentido (Galton 1888).
Nesta sessão, e na sessão de análise multivariada iremos utilizar o conjunto de dados Data from
a maize experiment for multivariate analysis (Olivoto T. and Sari 2018b). Este conjunto de
dados contém dados de 15 variávies avaliadas em 13 híbridos de milho, que foram conduzidos
em quatro ambientes. Em cada ambiente, um delineamento de blocos completos casualizados
com três blocos e cinco observações por bloco foi utilziado. O download dos dados pode ser
realizado pelo seguinte código.
# Importing data
datafactors = [Link]("[Link]
dataset = datafactors[,5:ncol(datafactors)]
datacor = dataset[,1:8]
n
{(Xi −X̄)(Yi −Ȳ)}
P
r = s i=1 s
n 2 n 2
(Xi −X̄) (Yi −Ȳ)
P P
i=1 i=1
n n
onde X̄ = n1 Xi e Ȳ = n1 Yi .
P P
i=1 i=1
Esta sessão é focada em apresentar funções básicas e avançadas para visualização gráfica de
associações e estimativas do coeficiente de correlação. Para este fim, utilizaremos o conjunto
de dados datacor.
179
0.5 1.5 5 15 20 30 40 10 30 50
2.5
APLA
1.0
1.5
AIES
0.5
0.7
PRE
0.3
15
CESP
5
60
50
DIES
40
40
DSAB
30
20
22
16
CSAB
10
50
MSAB
30
10
# Extraindo as variáveis
library(agricolae)
##
## Attaching package: 'agricolae'
## The following objects are masked from 'package:ExpDes':
##
## lastC, [Link], [Link]
options(digits = 3)
# Computando a correlação
corr = correlation(datacor)
180
# Imprimindo os coeficientes
print(corr$correlation)
181
0.5 1.5 5 15 20 30 40 10 30 50
APLA
2.5
0.84 0.32 0.23 0.47 0.24 0.21 0.38
1.0
AIES
2.0
PRE
0.3 0.7
0.10 0.28 0.24 0.05 0.24
CESP
15
DIES
55
0.65 0.41 0.67
40
DSAB
35
0.34 0.66
20
CSAB
18
0.60
10
MSAB
40
10
182
APLA AIES PRE CESP DIES DSAB CSAB MSAB
APLA
0.84 0.32 0.23 0.47 0.24 0.21 0.38
AIES
0.77 0.21 0.46 0.3 0.16 0.38
PRE
0.1 0.28 0.24 0.05 0.24
CESP
0.4 0.3 0.9 0.55
DIES
0.65 0.41 0.67
*** ***
DSAB
0.34 0.66
***
CSAB
0.6
MSAB
183
4.3.5 Combinando visualização gráfica e numérica (III)
A função [Link]()do pacote corrplot também é uma boa opção para visualização
gráfica. As correlações são indicadas por uma escala de cores e também pelo formato da
elipse (quanto mais alta a correlação, mais fina a elipse)
library(corrplot)
# Criando a matrix de correlação utilizando o conjunto de dados 'datacor'.
# 8 variáveis | 26 combinações
correl = cor(datacor)
# Criando o gráfico
[Link](correl,
upper = "ellipse",
lower = "number",
[Link] = 2)
1
APLA
0.8
0.2
0.23 0.21 0.1 CESP
0
−0.8
0.38 0.38 0.24 0.55 0.67 0.66 0.6 MSAB
−1
library(corrplot)
# Criando a matrix de correlação utilizando o conjunto de dados dataset.
# 15 variáveis | 105 combinações
184
correl = cor(dataset)
# calculando os p-valores
pval = [Link](dataset)$p
A função corrplot() do pacote corrplot permite uma poderosa personalização. Esta função
tem a vantagem de apresentar um elevado número de combinações em um gráfico claro e
intuitivo.
# Criando o gráfico
corrplot(correl,
method = "pie",
[Link] = pval,
[Link] = 0.05,
insig = "blank",
type = "lower",
diag = F,
[Link] = "black",
[Link] = 45)
# Criando o gráfico
corrplot(correl,
method = "ellipse",
[Link] = pval,
[Link] = 0.05,
insig = "blank",
type = "upper",
diag = F,
[Link] = "black",
[Link] = 45)
185
LA
AP
ES
AIES
AI
E
PRE
PR
P
ES
CESP
C
S
DIES
IE
D
B
SA
DSAB
D
B
SA
CSAB
C
B
SA
MSAB
M
A
R
MGRA
G
M
L
NFIL
FI
N
FI
NGFI
G
N
E
SD
DSDE
R
D
G
C
R
PERCGR
PE
G
MMG
M
M
NGRA
186
M GR
N A
A
B
C
P
G
FI
S
R
ES
R
SA
SD
E
ES
SA
SA
R
IE
M
G
FI
G
PR
PE
AI
M
C
N
1
APLA
AIES 0.8
PRE
0.6
CESP
0.4
DIES
DSAB 0.2
CSAB
0
MSAB
MGRA −0.2
NFIL
−0.4
NGFI
−0.6
DSDE
PERCGR −0.8
MMG
−1
Maiores detalhes de outros argumentos utilizados na função corrplot() podem ser encon-
trados aqui.
187
library(cursoR)
CI = [Link](datacor)
## Corr CI LL UL
## 1 0.84 0.041 0.80 0.88
## 2 0.32 0.062 0.26 0.38
## 3 0.23 0.067 0.17 0.30
## 4 0.47 0.055 0.41 0.52
## 5 0.24 0.066 0.18 0.31
## 6 0.21 0.068 0.14 0.27
## 7 0.38 0.059 0.32 0.44
## 8 0.77 0.043 0.73 0.82
## 9 0.21 0.068 0.14 0.28
## 10 0.46 0.056 0.40 0.51
A saída acima retorna os seguintes valores: Corr = coeficiente de corrleção calculado; CI =
semi-amplitude do intervalo de confiança (5% de erro); LL = limite inferior; UL = limite
superior.
• Calculando o intervalo de confiança com base em valores declarados
[Link](r = 0.34, n = 50)
## -------------------------------------------------
## Nonparametric 95% half-width confidence interval
## -------------------------------------------------
## Level of significance: 5%
## Correlation coefficient: 0.34
## Sample size: 50
## Confidence interval: 0.2424
## True parameter range from: 0.0976 to 0.5824
## -------------------------------------------------
A função [Link]() pode ser utilziada para planejar o tamanho da amostra necessário
para calcular coeficiente de correlação de Pearson. com uma determinada semi-amplitude do
intervalo de confiança 95%. A estimativa é baseada no seguinte modelo:
Com base em uma magnitude pré assumida de associação (r), o tamanho da amostra necessário
para uma semi-amplitude do intervalo de confiança 95% desejada pode ser calculado por:
n = [CI/(0.45304r × 2.25152)]−0.50089
188
desejado; e r é o coficiente de correlação assumido. Olivoto et al. (2018) sugeriram considerar
r nesta equação igual a 0. Uma vez que o tamanho da amostra será calculado para uma
correlação nula, combinações com r > |0| apresentarão intervalo de confiança menor do que o
informado no argumento CI.
[Link](CI = 0.1, r = 0)
## -------------------------------------------------
## Sample size planning for correlation coefficient
## -------------------------------------------------
## Level of significance: 5%
## Correlation coefficient: 0
## 95% half-width CI: 0.1
## Required sample size: 501
## -------------------------------------------------
Em certos casos, o coeficientee de correlação linear simples pode nos levar a equívocos na
interpretação da associação entre duas variáveis, pois este não considera a influência das
demais variáveis contidas no conjunto de dados. O coeficiente de correlação parcial é uma
técnica baseada em operações matriciais que nos permite identificar a associação entre duas
variáveis retirando-se os efeitos das demais variáveis presentes (Anderson 2003) Uma maneira
generalizada para a estimativa do coeficiente de correlação parcial entre duas variáveis (i e
j) é por meio da matriz de correlação simples que envolve estas duas variáveis e m outras
variáveis das quais queremos retirar o efeito. A estimativa do coeficiente de correlação parcial
entre i e j excluído o efeito de m outras variáveis é dado por:
−aij
rij.m = √
aii ajj
onde rij.m é o coeficiente de correlação parcial entre as variável i e j, sem o efeito das outras m
outras variáveis; aij é o elemento da ordem ij da inversa da matriz de correlação simples; aii
e ajj são os elementos de ordens ii e jj, respectivamente, da inversa da matriz de correlação
simples.
A matriz de coeficientes de correlação parcial pode ser facilmente obtida utilizando a função
[Link]() disponível no pacote cursoR. A entrada dos dados pode ser realizada de
duas maneiras. (i) utilizando os dados com as observações de cada variável; ou (ii) utilizando
uma matriz de correlação linear simples pré estimada. Em nosso exemplo, vamos utilziar os
mesmos dados utilizados nas funções anteriores (datacor).
partial = [Link](datacor)
189
options(digits = 2)
# correlação linear simples
partial$[Link]
190
## PRE x MSAB 0.24 0.0069 0.191 8.5e-01
## CESP x DIES 0.40 0.0415 1.155 2.5e-01
## CESP x DSAB 0.30 -0.0477 -1.328 1.8e-01
## CESP x CSAB 0.90 0.8563 46.073 0.0e+00
## CESP x MSAB 0.55 -0.0232 -0.644 5.2e-01
## DIES x DSAB 0.65 0.4058 12.337 0.0e+00
## DIES x CSAB 0.41 0.0084 0.233 8.2e-01
## DIES x MSAB 0.67 0.2424 6.943 8.1e-12
## DSAB x CSAB 0.34 -0.0154 -0.428 6.7e-01
## DSAB x MSAB 0.66 0.4138 12.630 0.0e+00
## CSAB x MSAB 0.60 0.2693 7.769 2.5e-14
Nesta sessão, primeiramente uma breve introdução à análise de trilha é apresentada. Algumas
dificuldades, como , por exemplo, a presença de multicolinearidade e possíveis soluções para
contorná-la serão discutidas. Posteriormente exemplos numéricos serão realizados utilizando
funções do pacote cursoR.
4.5.1 Introdução
191
4.5.2 Estimação
4.5.3 Multicolinearidade
Embora esta análise revele associações de causa e efeito, sua estimativa é baseada em
princípios de regressão múltipla. Assim, as estimativas dos parâmetros podem ser enviesadas
devido a natureza complexa dos dados, em que a resposta da variável dependente está
ligada a um grande número de variáveis explicativas, que são muitas vezes correlacionadas
ou multicolineares entre si (Graham 2003). Assim, sempre que duas supostas variáveis
explicativas se apresentam altamente associadas, é difícil estimar as relações de cada variável
explicativa individualmente, uma vez que vários parâmetros resolvem o sistema de equações
normais. A esta particularidade é atribuída o nome de multicolinearidade (Blalock 1963).
Os principais meios utilizados para identificar o grau de multicolinearidade em uma matriz
de variáveis explicativas são os seguintes:
• Número de condição (CN): O número de condição é calculado pela razão entre o maior
e menor autovalor (λ) da matriz de correlação X 0 X, de acordo com a expressão
λMax
NC =
λMin
O grau de multicolinearidade é considerado fraco se NC ≤ 100, moderado se 100 ≤ NC ≤
1000 e severo quando NC > 1000.
• Determinante da matriz X 0 X (D): O determinante da cada matriz de correlação é
estimado pelo produto de seus respectivos autovalores, para λj > 0, de acordo com a
expressão
192
p
DX0 X =
Y
λj
j=1
Esta sessão está focada principalmente em três objetivos. (i) diagnóstico da multicolinearidade
; (ii) seleção de variáveis preditoras; e (iii) estimação dos coeficientes de trilha. Embora esta
193
seja a sequência correta a ser seguida para a estimativa dos coeficientes de trilha, utilizaremos
somente a função [Link](), que possibilita todas estas abordagens. Para isto, os
conjunto de dados dataset e datafactors serão utilizados.
library(cursoR)
pathtodas = [Link](dataset, resp = "MGRA")
## --------------------------------------------------------------------------
## Multicollinearity diagnosis and goodness-of-fit
## --------------------------------------------------------------------------
## Condition number = 2643.5429
## Determinant = 0
## R-square = 0.9792
## Residual = 0.0208
## Response = MGRA
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Variance inflation factors
## --------------------------------------------------------------------------
## VIF
## APLA 44.7
## AIES 96.5
## PRE 31.6
## CESP 5.8
## DIES 142.9
## DSAB 244.0
## CSAB 6.3
## MSAB 17.6
## NFIL 2.9
## NGFI 3.6
## DSDE 141.0
## PERCGR 7.3
## MMG 7.8
## NGRA 13.6
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Eigenvalues and eigenvectors
194
## --------------------------------------------------------------------------
## Eigenvalues APLA AIES PRE CESP DIES DSAB CSAB
## 1 5.0091 -0.274 -0.2845 -0.188 -0.3218 -0.36080 -0.2920 -0.3243
## 2 2.5455 0.021 -0.0530 -0.107 0.1391 0.02102 -0.3453 0.1084
## 3 1.9767 0.399 0.4956 0.409 -0.3234 0.10948 -0.0773 -0.3663
## 4 1.4659 -0.108 -0.1851 -0.191 -0.2187 0.27573 0.3289 -0.1908
## 5 0.8734 0.201 -0.1792 -0.552 -0.0478 0.32156 -0.0387 -0.0073
## 6 0.7407 0.060 0.0065 -0.053 -0.1620 0.00068 -0.3059 -0.1088
## 7 0.5696 0.662 0.1788 -0.475 0.0820 -0.36297 -0.0424 0.0718
## 8 0.3922 0.049 -0.0647 -0.168 -0.4660 0.05142 0.1684 -0.4004
## 9 0.1775 -0.111 -0.0464 0.080 -0.0715 -0.45180 -0.2715 -0.0124
## 10 0.1188 -0.037 -0.0029 0.039 -0.1250 -0.26614 -0.1401 0.0031
## 11 0.0933 -0.016 -0.0301 -0.028 0.6710 -0.03087 -0.0065 -0.7313
## 12 0.0294 0.027 -0.0654 0.037 -0.0370 0.02821 -0.0445 -0.0040
## 13 0.0059 0.504 -0.7480 0.422 0.0037 0.02346 -0.0250 0.0029
## 14 0.0019 -0.026 0.0345 -0.018 0.0039 0.51606 -0.6784 -0.0093
## MSAB NFIL NGFI DSDE PERCGR MMG NGRA
## 1 -0.377 -0.1335 -0.2611 -0.0368 0.0621 -0.265 -0.284
## 2 -0.180 0.2152 0.3230 -0.4706 0.4522 -0.263 0.396
## 3 -0.150 0.1706 -0.2115 -0.2094 0.1490 0.037 -0.087
## 4 0.044 0.6574 -0.1894 0.1618 -0.0841 -0.299 0.238
## 5 0.061 0.0049 -0.2786 -0.3589 0.1162 0.508 -0.185
## 6 0.375 -0.0354 0.1208 -0.4079 -0.7027 -0.196 0.082
## 7 -0.072 0.0603 0.0203 0.3109 -0.0728 -0.216 0.022
## 8 0.144 -0.2907 0.5822 0.1588 0.1924 0.142 0.173
## 9 0.159 0.5870 0.2189 0.1086 -0.0039 0.501 -0.123
## 10 0.432 -0.1938 -0.5162 0.0885 0.2248 0.091 0.578
## 11 0.064 -0.0061 -0.0188 0.0087 -0.0194 0.053 0.065
## 12 -0.640 -0.0546 -0.0223 0.0688 -0.4000 0.376 0.519
## 13 0.048 -0.0068 -0.0031 0.0219 0.0323 -0.038 -0.045
## 14 0.047 -0.0041 0.0057 0.5149 0.0282 -0.036 -0.042
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Variables with the largest weight in the eigenvalue of smallest magnitude
## --------------------------------------------------------------------------
## [1] "DSAB > DIES > DSDE > MSAB > NGRA > MMG > AIES > PERCGR > APLA > PRE > CSAB > NGF
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Direct (diagonal) and indirect (off-diagonal) effects
## --------------------------------------------------------------------------
## APLA AIES PRE CESP DIES DSAB CSAB
## APLA 0.10001 0.08409 0.03224 0.02350 0.04694 0.02419 0.02059
## AIES -0.09812 -0.11671 -0.09033 -0.02428 -0.05356 -0.03456 -0.01875
## PRE 0.02129 0.05113 0.06606 0.00658 0.01833 0.01588 0.00329
195
## CESP 0.00213 0.00189 0.00090 0.00907 0.00362 0.00275 0.00817
## DIES 0.12759 0.12476 0.07545 0.10835 0.27187 0.17730 0.11242
## DSAB -0.08438 -0.10329 -0.08387 -0.10575 -0.22747 -0.34881 -0.11885
## CSAB 0.00167 0.00130 0.00040 0.00731 0.00336 0.00277 0.00812
## MSAB 0.19469 0.19647 0.12267 0.27972 0.34148 0.34079 0.30727
## NFIL -0.00142 -0.00097 -0.00018 -0.00016 -0.00307 -0.00160 -0.00012
## NGFI 0.00071 0.00068 0.00043 0.00211 0.00099 0.00019 0.00209
## DSDE -0.03221 -0.01316 0.01109 0.00549 -0.02801 0.16990 0.01462
## PERCGR 0.01105 -0.00458 -0.01907 0.00942 -0.01504 -0.12691 -0.01196
## MMG 0.14716 0.14798 0.08976 0.12991 0.17632 0.17109 0.13826
## NGRA 0.11948 0.09534 0.03871 0.22505 0.22919 0.07914 0.22103
## MSAB NFIL NGFI DSDE PERCGR MMG NGRA
## APLA 0.03795 0.02308 0.02110 -0.01285 0.00335 0.04173 0.0288
## AIES -0.04469 -0.01843 -0.02365 0.00612 0.00162 -0.04897 -0.0268
## PRE 0.01579 0.00197 0.00837 0.00292 -0.00382 0.01681 0.0062
## CESP 0.00495 0.00024 0.00568 0.00020 0.00026 0.00334 0.0049
## DIES 0.18093 0.13523 0.08020 -0.03036 -0.01240 0.13592 0.1499
## DSAB -0.23166 -0.09040 -0.01992 -0.23630 0.13425 -0.16922 -0.0664
## CSAB 0.00486 0.00015 0.00505 0.00047 -0.00029 0.00318 0.0043
## MSAB 0.51313 0.06414 0.21901 0.11688 -0.27206 0.30414 0.2237
## NFIL -0.00077 -0.00616 -0.00038 0.00084 -0.00102 0.00129 -0.0034
## NGFI 0.00144 0.00021 0.00336 -0.00070 0.00064 0.00034 0.0024
## DSDE 0.05713 -0.03437 -0.05186 0.25079 -0.11494 0.04000 -0.0694
## PERCGR -0.17482 0.05437 0.06263 -0.15112 0.32972 -0.05482 0.0898
## MMG 0.20903 -0.07359 0.03566 0.05625 -0.05864 0.35266 -0.0292
## NGRA 0.18119 0.23215 0.29887 -0.11500 0.11322 -0.03447 0.4156
## --------------------------------------------------------------------------
De acordo com o NC, VIF e Determinante da matriz, a multicolinearidade na matriz das
variáveis explicativa é severa. Por exemplo, foram observados oito VIFs > 10. A saída indica
quais são as variáveis que apresentam maior peso último autovalor. Em ordem de importância,
estas variáveis são: NGFI > PERCGR > AIES > APLA > CESP > DIES > MSAB >
NFIL > PRE > DSAB > MMG > NGRA > DSDE > CSAB. Conforme discutido, temos
basicamente duas opções para contornar os problemas da elevada multicolineridade em nossos
dados. Excluir as variáveis responsáveis pela multicolinearidade, ou manter todas as variáveis
e incluir um fator de correção na diagonal da matrix X’X. Vamos começar pela última opção.
A variância dos coeficientes de regressão é reduzida quando quando um valor k para 0 < k ≤ 1
é incluído na diagonal da matriz de correlação X 0 X. Esta técnica é conhecida como regressão
em crista, ou ridge regression, em Inglês (Hoerl and Kennard 1976). Com esta técnica, a
estimativa dos coeficientes de regressão é dado por: β = (X 0 X + Ik)−1 X 0 Y . A escolha da
magnitude de k, no entanto, deve ser cautelosa. Sugere-se que o valor a ser incluído seja
aquele menor possível que estabilize os coeficientes de regressão (βp ). Felizmente, grande parte
deste trabalho já foi realizado quando utilizamos a função [Link]() na sessão anterior.
196
0.4
0.2
Beta values
0.0
−0.2
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
k values
Um conjunto de estimativas de βp foi estimado com 101 valores de k, (k = 0, 0.01, ..., 1) dois
gráficos foram confeccionados. Um gráfico interativo e um gráfico e um gráfico que pode ser
salvo como imagem ou pdf. Neste documento, apresentaremos o gráfico interativo gerado.
Para vizualizarmos este gráfico é simples. Vamos fazer isto.
pathtodas$iterplot # gráfico interativo para visualização no R
O gráfico acima nos proporciona uma interpretação sobre qual é o valor de k mais indicado a
ser utilizado. Em nosso exemplo, no entanto, esta escolha ainda será difícil. Podemos notar
que quatro variáveis apresentam valores de β maiores que o restante das variáveis. (para
identificar estas variáveis, passe o cursor do mouse sobre as linhas. Também é possivel isolar
uma variável com um duplo clique na respectiva legenda). Para fins didátidos, escolheremos,
por enquanto, o valor de k igual a 0.06, valor no qual os coeficientes de regressão da maioria
das variávies se estabiliza.
Para incluir este valor de correção, utilizaremos novamente a função [Link](), no
entanto, agora, incluiremos o argumento correction = 0.06.
197
pathtodas_k = [Link](dataset,
resp = "MGRA",
correction = 0.06)
## A multicolinearidade pode ser considerada fraca. NC = 81.898. Oberve os outros indica
O aviso gerado no ajuste do modelo nos informou que a multicolinearidade agora pode ser
considerada fraca, devido ao NC ser menor que 100. No entanto, é recomendado observar
os outros indicadores. Para fazer isto, basta utilziar a função [Link]()
novamente.
[Link](pathtodas_k, digits = 2)
## --------------------------------------------------------------------------
## Multicollinearity diagnosis and goodness-of-fit
## --------------------------------------------------------------------------
## Condition number = 81.8985
## Determinant = 2.073e-05
## R-square = 0.9466
## Residual = 0.0534
## Response = MGRA
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Variance inflation factors
## --------------------------------------------------------------------------
## VIF
## APLA 4.8
## AIES 8.8
## PRE 3.6
## CESP 3.7
## DIES 6.0
## DSAB 8.2
## CSAB 4.0
## MSAB 6.1
## NFIL 2.2
## NGFI 2.7
## DSDE 5.1
## PERCGR 2.9
## MMG 3.3
## NGRA 5.3
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Eigenvalues and eigenvectors
## --------------------------------------------------------------------------
## Eigenvalues APLA AIES PRE CESP DIES DSAB CSAB
## 1 5.069 -0.274 -0.2845 -0.188 -0.3218 -0.36080 -0.2920 -0.3243
198
## 2 2.606 0.021 -0.0530 -0.107 0.1391 0.02102 -0.3453 0.1084
## 3 2.037 0.399 0.4956 0.409 -0.3234 0.10948 -0.0773 -0.3663
## 4 1.526 -0.108 -0.1851 -0.191 -0.2187 0.27573 0.3289 -0.1908
## 5 0.933 0.201 -0.1792 -0.552 -0.0478 0.32156 -0.0387 -0.0073
## 6 0.801 0.060 0.0065 -0.053 -0.1620 0.00068 -0.3059 -0.1088
## 7 0.630 -0.662 -0.1788 0.475 -0.0820 0.36297 0.0424 -0.0718
## 8 0.452 0.049 -0.0647 -0.168 -0.4660 0.05142 0.1684 -0.4004
## 9 0.238 -0.111 -0.0464 0.080 -0.0715 -0.45180 -0.2715 -0.0124
## 10 0.179 -0.037 -0.0029 0.039 -0.1250 -0.26614 -0.1401 0.0031
## 11 0.153 -0.016 -0.0301 -0.028 0.6710 -0.03087 -0.0065 -0.7313
## 12 0.089 0.027 -0.0654 0.037 -0.0370 0.02821 -0.0445 -0.0040
## 13 0.066 0.504 -0.7480 0.422 0.0037 0.02346 -0.0250 0.0029
## 14 0.062 -0.026 0.0345 -0.018 0.0039 0.51606 -0.6784 -0.0093
## MSAB NFIL NGFI DSDE PERCGR MMG NGRA
## 1 -0.377 -0.1335 -0.2611 -0.0368 0.0621 -0.265 -0.284
## 2 -0.180 0.2152 0.3230 -0.4706 0.4522 -0.263 0.396
## 3 -0.150 0.1706 -0.2115 -0.2094 0.1490 0.037 -0.087
## 4 0.044 0.6574 -0.1894 0.1618 -0.0841 -0.299 0.238
## 5 0.061 0.0049 -0.2786 -0.3589 0.1162 0.508 -0.185
## 6 0.375 -0.0354 0.1208 -0.4079 -0.7027 -0.196 0.082
## 7 0.072 -0.0603 -0.0203 -0.3109 0.0728 0.216 -0.022
## 8 0.144 -0.2907 0.5822 0.1588 0.1924 0.142 0.173
## 9 0.159 0.5870 0.2189 0.1086 -0.0039 0.501 -0.123
## 10 0.432 -0.1938 -0.5162 0.0885 0.2248 0.091 0.578
## 11 0.064 -0.0061 -0.0188 0.0087 -0.0194 0.053 0.065
## 12 -0.640 -0.0546 -0.0223 0.0688 -0.4000 0.376 0.519
## 13 0.048 -0.0068 -0.0031 0.0219 0.0323 -0.038 -0.045
## 14 0.047 -0.0041 0.0057 0.5149 0.0282 -0.036 -0.042
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Variables with the largest weight in the eigenvalue of smallest magnitude
## --------------------------------------------------------------------------
## [1] "DSAB > DIES > DSDE > MSAB > NGRA > MMG > AIES > PERCGR > APLA > PRE > CSAB > NGF
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Direct (diagonal) and indirect (off-diagonal) effects
## --------------------------------------------------------------------------
## APLA AIES PRE CESP DIES DSAB CSAB
## APLA 0.04539 0.03600 0.01380 1.0e-02 0.02010 0.01036 8.8e-03
## AIES 0.00210 0.00264 0.00193 5.2e-04 0.00114 0.00074 4.0e-04
## PRE -0.00022 -0.00053 -0.00072 -6.8e-05 -0.00019 -0.00016 -3.4e-05
## CESP 0.00659 0.00584 0.00280 3.0e-02 0.01118 0.00851 2.5e-02
## DIES 0.03805 0.03721 0.02250 3.2e-02 0.08594 0.05287 3.4e-02
## DSAB 0.00405 0.00495 0.00402 5.1e-03 0.01091 0.01773 5.7e-03
199
## CSAB 0.00882 0.00689 0.00213 3.9e-02 0.01773 0.01461 4.5e-02
## MSAB 0.13634 0.13759 0.08591 2.0e-01 0.23914 0.23865 2.2e-01
## NFIL 0.00264 0.00181 0.00034 3.1e-04 0.00569 0.00297 2.2e-04
## NGFI 0.01461 0.01403 0.00877 4.3e-02 0.02043 0.00396 4.3e-02
## DSDE 0.00277 0.00113 -0.00095 -4.7e-04 0.00241 -0.01463 -1.3e-03
## PERCGR 0.00802 -0.00333 -0.01384 6.8e-03 -0.01092 -0.09215 -8.7e-03
## MMG 0.13873 0.13951 0.08462 1.2e-01 0.16622 0.16129 1.3e-01
## NGRA 0.10174 0.08119 0.03297 1.9e-01 0.19516 0.06739 1.9e-01
## MSAB NFIL NGFI DSDE PERCGR MMG NGRA
## APLA 0.01625 0.00988 9.0e-03 -0.00550 1.4e-03 0.01787 1.2e-02
## AIES 0.00095 0.00039 5.1e-04 -0.00013 -3.5e-05 0.00105 5.7e-04
## PRE -0.00016 -0.00002 -8.6e-05 -0.00003 3.9e-05 -0.00017 -6.3e-05
## CESP 0.01530 0.00075 1.8e-02 0.00061 8.0e-04 0.01034 1.5e-02
## DIES 0.05396 0.04033 2.4e-02 -0.00906 -3.7e-03 0.04054 4.5e-02
## DSAB 0.01111 0.00433 9.6e-04 0.01133 -6.4e-03 0.00811 3.2e-03
## CSAB 0.02567 0.00081 2.7e-02 0.00250 -1.6e-03 0.01681 2.3e-02
## MSAB 0.38091 0.04491 1.5e-01 0.08185 -1.9e-01 0.21299 1.6e-01
## NFIL 0.00143 0.01213 7.1e-04 -0.00157 1.9e-03 -0.00239 6.4e-03
## NGFI 0.02956 0.00432 7.3e-02 -0.01432 1.3e-02 0.00700 5.0e-02
## DSDE -0.00492 0.00296 4.5e-03 -0.02288 9.9e-03 -0.00344 6.0e-03
## PERCGR -0.12694 0.03948 4.5e-02 -0.10973 2.5e-01 -0.03981 6.5e-02
## MMG 0.19706 -0.06937 3.4e-02 0.05303 -5.5e-02 0.35241 -2.8e-02
## NGRA 0.15430 0.19769 2.5e-01 -0.09792 9.6e-02 -0.02935 3.8e-01
## --------------------------------------------------------------------------
Com a inclusão do fator de correção (k = 0.06) na diagonal de X 0 X, a multicolinearidade
ficou à níveis aceitáveis, ou seja, NC < 100 e nenhum VIF > 10. O determinante da
matriz, no entanto, ainda é muito baixo. Inevitavelmente, temos agora duas opções para
obtermos um determinante com valores mais aceitáveis. A primeira é aumentar o valor de
k, digamos, para 0.1. Isto iria reduzir ainda mais o nível de multicolinearidade em nossa
matriz, no entanto, o viés na estimativa dos coeficientes aumentaria. A segunda (e mais
razoável) opção, é a exclusão de alguma variável do conjunto de variáveis explicativas. Por
exemplo, podemos considerar as variáveis com maior peso nos últimos autovalores, ou aquelas
com maior VIF. AIES e APLA apresentam alta correlação (veja a seção Estimativas dos
coeficientes de correlação), assim poderíamos manter apenas uma destas variáveis na análise.
PERCGR é uma co-variável (MGRA/(MGRA+MSAB)). Assim, é razoável excluí-la também.
A mesma interpretação pode ser considerada para DSDE. Esta é uma co-variável (razão
do diâmetro do sabugo e diâmetro da espiga). Vamos considerar então a exclusão de três
variáveis. PERCGRA, AIES e DSDE.
O ajuste do novo modelo excluindo estas variáveis é facilmente realizado. Para isto, iremos
utilizar dois argumentos da função [Link]() não vistos até agora: prede exclude. As
variáveis informadas em pred podem ser as variáveis preditoras (default) ou as variáveis a
serem excluídas, se exclude = TRUE. Vamos ao exemplo.
200
path_exclude = [Link](dataset,
resp = "MGRA",
pred = c("PERCGR", "AIES", "DSDE"),
exclude = TRUE)
## A multicolinearidade pode ser considerada fraca. NC = 56.513. Oberve os outros indica
[Link](path_exclude, digits = 2)
## --------------------------------------------------------------------------
## Multicollinearity diagnosis and goodness-of-fit
## --------------------------------------------------------------------------
## Condition number = 56.5128
## Determinant = 0.00032016
## R-square = 0.9643
## Residual = 0.0357
## Response = MGRA
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Variance inflation factors
## --------------------------------------------------------------------------
## VIF
## APLA 1.6
## PRE 1.2
## CESP 5.8
## DIES 4.6
## DSAB 2.7
## CSAB 6.3
## MSAB 3.5
## NFIL 2.9
## NGFI 3.6
## MMG 3.8
## NGRA 7.2
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Eigenvalues and eigenvectors
## --------------------------------------------------------------------------
## Eigenvalues APLA PRE CESP DIES DSAB CSAB MSAB NFIL
## 1 4.654 -0.246 -0.147 -0.3583 -0.374 -0.2933 -0.3635 -0.390 -0.146
## 2 1.792 -0.209 -0.284 0.2245 -0.164 -0.3479 0.2110 -0.165 0.160
## 3 1.577 0.180 0.094 -0.3190 0.293 0.1288 -0.3315 -0.076 0.681
## 4 0.992 0.458 0.683 -0.0377 -0.133 -0.3999 -0.1214 -0.162 -0.156
## 5 0.698 0.680 -0.608 -0.0078 0.026 -0.3111 -0.0063 -0.081 0.035
## 6 0.424 0.091 0.196 0.5023 -0.096 -0.0037 0.3918 -0.418 0.289
## 7 0.313 -0.409 0.053 -0.0178 0.489 -0.4831 -0.0416 -0.264 0.131
201
## 8 0.211 -0.081 0.093 -0.0184 -0.163 -0.5089 0.1016 0.710 0.162
## 9 0.164 0.077 -0.020 0.0618 0.559 -0.0757 0.0145 -0.030 -0.561
## 10 0.093 0.043 0.043 -0.6470 0.099 -0.0233 0.7267 -0.082 0.019
## 11 0.082 -0.035 0.021 -0.2063 -0.363 0.1450 0.0696 -0.164 -0.148
## NGFI MMG NGRA
## 1 -0.296 -0.259 -0.322
## 2 0.414 -0.468 0.434
## 3 -0.166 -0.286 0.258
## 4 0.269 -0.032 0.080
## 5 -0.058 0.241 -0.031
## 6 -0.498 -0.055 -0.168
## 7 0.029 0.516 0.045
## 8 -0.393 -0.048 0.045
## 9 -0.363 -0.408 0.238
## 10 0.063 -0.087 -0.144
## 11 -0.314 0.356 0.724
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Variables with the largest weight in the eigenvalue of smallest magnitude
## --------------------------------------------------------------------------
## [1] "NGRA > DIES > MMG > NGFI > CESP > MSAB > NFIL > DSAB > CSAB > APLA > PRE"
## --------------------------------------------------------------------------
##
## --------------------------------------------------------------------------
## Direct (diagonal) and indirect (off-diagonal) effects
## --------------------------------------------------------------------------
## APLA PRE CESP DIES DSAB CSAB MSAB
## APLA 0.01934 0.00623 0.00454 0.00908 0.00468 4.0e-03 0.00734
## PRE -0.00051 -0.00158 -0.00016 -0.00044 -0.00038 -7.9e-05 -0.00038
## CESP 0.00094 0.00040 0.00401 0.00160 0.00121 3.6e-03 0.00218
## DIES 0.01455 0.00860 0.01235 0.03100 0.02022 1.3e-02 0.02063
## DSAB -0.00411 -0.00409 -0.00515 -0.01109 -0.01700 -5.8e-03 -0.01129
## CSAB 0.00151 0.00037 0.00660 0.00303 0.00250 7.3e-03 0.00439
## MSAB 0.02219 0.01398 0.03189 0.03893 0.03885 3.5e-02 0.05849
## NFIL -0.00328 -0.00042 -0.00038 -0.00707 -0.00369 -2.7e-04 -0.00178
## NGFI 0.00497 0.00298 0.01476 0.00695 0.00135 1.5e-02 0.01005
## MMG 0.24717 0.15077 0.21820 0.29614 0.28736 2.3e-01 0.35109
## NGRA 0.20687 0.06703 0.38967 0.39682 0.13703 3.8e-01 0.31373
## NFIL NGFI MMG NGRA
## APLA 4.5e-03 0.00408 0.0081 0.00556
## PRE -4.7e-05 -0.00020 -0.0004 -0.00015
## CESP 1.1e-04 0.00251 0.0015 0.00217
## DIES 1.5e-02 0.00914 0.0155 0.01709
## DSAB -4.4e-03 -0.00097 -0.0082 -0.00324
## CSAB 1.4e-04 0.00456 0.0029 0.00390
202
## MSAB 7.3e-03 0.02497 0.0347 0.02550
## NFIL -1.4e-02 -0.00089 0.0030 -0.00794
## NGFI 1.5e-03 0.02355 0.0024 0.01693
## MMG -1.2e-01 0.05989 0.5923 -0.04912
## NGRA 4.0e-01 0.51747 -0.0597 0.71963
## --------------------------------------------------------------------------
Vamos à uma interpretação das três abordagens realizadas até agora, utilizando o resumo
apresentado na tabela abaixo.
Conforme também observado por Hoerl and Kennard (1970) e Olivoto T., Souza, et al. (2017),
a exclusão de variáveis responsáveis pela multicolinearidade foi mais eficiente que a inclusão
do k, proporcionando menores níveis de multicolinearidade e maior precisão do modelo (maior
R2 e menor residual).
Vimos que tanto a identificação das variáveis responsáveis pela multicolinearidae quanto o
ajuste do modelo declarando preditores específicos é um procedimento relativamente simples
utilização a função [Link]() . Mas, e se algum procedimento estatistico-computacional
facilitasse ainda mais essa tarefa? Vamos, a partir de agora, considerar isso.
Olivoto T., Nardino, et al. (2017) sugeriram a utilização de regressões stepwise para seleção
de um conjunto de preditores com minima multicolinearidade em análise de trilha. Esta
opção está disponível na função [Link](). Baseado em um algoritmo heurístico iterativo
executado pelo argumento brutestepwise = TRUE, um conjunto de preditores com mínima
multicolienaridade é selecionado com base nos valores de VIF . Posteriormente, uma série de
regressões stepwise são ajustadas. A primeira regressão stepwise é ajustada considerando
p − 1 variáveis preditoras selecionadas, sendo p o número de variáveis selecionadas no processo
iterativo. O segundo modelo ajusta uma regressão considerando p − 2 variávies selecionadas,
e assim por diante até o último modelo, que considera apenas duas variáveis selecionadas.
Vamos ao exemplo.
path_step = [Link](dataset,
resp = "MGRA",
brutstepwise = TRUE)
## The brutestepwise algorithm have selected a set of 11 predictors with largest VIF =
203
## Adjusting the model 1 with 10 predictor variables ( 11.11 % concluded)
## Adjusting the model 2 with 9 predictor variables ( 22.22 % concluded)
## Adjusting the model 3 with 8 predictor variables ( 33.33 % concluded)
## Adjusting the model 4 with 7 predictor variables ( 44.44 % concluded)
## Adjusting the model 5 with 6 predictor variables ( 55.56 % concluded)
## Adjusting the model 6 with 5 predictor variables ( 66.67 % concluded)
## Adjusting the model 7 with 4 predictor variables ( 77.78 % concluded)
## Adjusting the model 8 with 3 predictor variables ( 88.89 % concluded)
## Adjusting the model 9 with 2 predictor variables ( 100 % concluded)
## Done!
##
##
## --------------------------------------------------------------------------
## Summary of the adjusted models
## --------------------------------------------------------------------------
## Model AIC Numpred CN Determinant R2 Residual maxVIF
## 2 Model 9 7077 2 1.8 0.9130 0.78 0.223 1.1
## 3 Model 8 5688 3 6.7 0.4538 0.96 0.037 2.2
## 4 Model 7 5684 4 20.7 0.1439 0.96 0.037 4.7
## 5 Model 6 5678 5 22.1 0.1247 0.96 0.037 5.1
## 6 Model 5 5675 6 30.1 0.0540 0.96 0.037 5.7
## 7 Model 4 5672 7 24.5 0.0460 0.96 0.036 4.0
## 8 Model 3 5669 8 36.7 0.0132 0.96 0.036 7.1
## 9 Model 2 5667 9 37.7 0.0091 0.96 0.036 7.1
## 10 Model 1 5669 10 44.6 0.0016 0.96 0.036 7.2
## --------------------------------------------------------------------------
Três objetos são criados por esta função: Summary, Models e Selectedpred. O objeto
Summary contém um resumo do procedimento, listando o número do modelo, o valor do
AIC, o diagnóstico da multicolinearidade e os valores de R2 e residual. O objeto Models,
contém todos os modelos ajustados, e o objeto Selectedpred, contém o nome das variávies
preditoras selecionadas no processo iterativo. Podemos notar que o algorítmo selecionou um
conjunto com 11 preditores que apresenta multicolinearidade em niveis aceitáveis. Assim,
qualquer um destes modelos poderia ser utilizado sem maiores problemas em relação à isto.
O procedimento stepwise realizado com diferentes números de variáveis selecionados também
permite a seleção de um modelo mais parcimonioso. Por exemplo, o modelo 8 (com três
variáveis preditoras) apresentou o mesmo poder explicativo do modelo 1 (com dez variáveis
preditoras), no entanto com menor nível de multicolinearidade. A seleção do modelo a ser
utilizado ficará a critério do pesquisador. Por exemplo, pode ser interessante discutir os
efeitos de variáveis não incluídas no modelo 8. Para fins didátidos, consideraremos como o
modelo selecionado o modelo 6.
path_step$Models[["Model 6"]]$Predictors
204
MGRA as dependent variable
0.021
PERCGR
− 0.0017
0.2
− 0.00095
0.0057
0.73 0.036
0.0083
0.02 − 0.11 0.4
NGRA DIES
− 0.052 0.031
0.32
0.004 0.013
− 0.0035
− 0.06 0.52
0.018 0.011
0.63 0.043
0.0044 0.064
MMG NGFI
205
# Criando o gráfico 2
[Link](path_step$Models[["Model 6"]],
digits = 2,
curve = 0.2,
[Link] = "red",
[Link] = "triangle",
[Link] = 0.4,
[Link] = 0.6,
[Link] = 0.4,
[Link] = 0.3,
[Link] = "rect",
[Link] = "gray70")
0.021
0.2 PERCGR
− 0.00095
0.4
− 0.0017
− 0.11
0.73 0.036
0.013
0.004
0.02 0.52
− 0.052
− 0.06 − 0.0035
0.031
0.064 0.011
0.63 0.043
0.018
MMG NGFI
0.0044
Até agora utilizamos a função [Link]() para realizar a análise de trila baseado em dados
fenotípicos. É importante observar que o conjunto de dados dataset contém 780 observações,
que são oriundos do experimento multi-ambiente conduzido com híbridos de milho (4 locais x
206
13 híbridos x 3 blocos x 5 plantas avaliadas por bloco).
Um fato importante e que merece atenção, é que a estrutura do nosso experimento precisa
ser considerada na estimativa dos coeficientes de trilha. Assim, um modelo considerando o
design experimental adequado precisa ser ajustado e a análise de trilha deve ser realizada
com os valores preditos (ou com o residual do modelo).
Para implementar esta abordagem, iremos considerar um modelo misto, considerando genóti-
pos como de efeito aleatório e ambiente como de efeito fixo. A função WAASB() do pacote
WAASB será utilizada. Esta função é discutida em detalhes na sessão Ajustando o modelo.
Primeiramente, precisaremos criar um novo conjunto de dados com a média das cinco plantas
por parcela.
# declarando os fatores do modelo
library(cursoR)
datafactors = pass(data = datafactors,
var = c(1:4),
type = [Link])
library(plyr)
# criando um arquivo com as médias das cinco plantas em cada repetição
MEDIAS = ddply(datafactors,
~AMB*HIB*REP,
summarise,
APLA = mean(APLA),
AIES = mean(AIES),
PRE = mean(PRE),
CESP = mean(CESP),
DIES = mean(DIES),
DSAB = mean(DSAB),
CSAB = mean(CSAB),
MSAB = mean(MSAB),
MGRA = mean(MGRA),
NFIL = mean(NFIL),
NGFI = mean(NGFI),
DSDE = mean(DSDE),
PERCGR = mean(PERCGR),
MMG = mean(MMG),
NGRA = mean(NGRA))
library(WAASB)
207
DSAB = WAASB(MEDIAS, resp = "DSAB")$BLUPgge$Predicted
CSAB = WAASB(MEDIAS, resp = "CSAB")$BLUPgge$Predicted
MSAB = WAASB(MEDIAS, resp = "MSAB")$BLUPgge$Predicted
MGRA = WAASB(MEDIAS, resp = "MGRA")$BLUPgge$Predicted
NGRA = WAASB(MEDIAS, resp = "NGRA")$BLUPgge$Predicted
NFIL = WAASB(MEDIAS, resp = "NFIL")$BLUPgge$Predicted
NGFI = WAASB(MEDIAS, resp = "NGFI")$BLUPgge$Predicted
DSDE = WAASB(MEDIAS, resp = "DSDE")$BLUPgge$Predicted
PERCGR = WAASB(MEDIAS, resp = "PERCGR")$BLUPgge$Predicted
MMG = WAASB(MEDIAS, resp = "MMG")$BLUPgge$Predicted
## The brutestepwise algorithm have selected a set of 8 predictors with largest VIF =
## Adjusting the model 1 with 7 predictor variables ( 16.67 % concluded)
## Adjusting the model 2 with 6 predictor variables ( 33.33 % concluded)
## Adjusting the model 3 with 5 predictor variables ( 50 % concluded)
## Adjusting the model 4 with 4 predictor variables ( 66.67 % concluded)
## Adjusting the model 5 with 3 predictor variables ( 83.33 % concluded)
## Adjusting the model 6 with 2 predictor variables ( 100 % concluded)
## Done!
##
##
## --------------------------------------------------------------------------
## Summary of the adjusted models
## --------------------------------------------------------------------------
## Model AIC Numpred CN Determinant R2 Residual maxVIF
## 2 Model 6 386 2 2.8 0.770 0.86 0.138 1.3
## 3 Model 5 303 3 2.1 0.866 0.97 0.027 1.1
## 4 Model 4 301 4 4.9 0.537 0.98 0.025 1.6
## 5 Model 3 302 5 7.5 0.240 0.98 0.024 2.2
## 6 Model 2 303 6 21.2 0.084 0.98 0.024 3.6
## 7 Model 1 304 7 31.3 0.033 0.98 0.024 4.4
## --------------------------------------------------------------------------
Neste ponto, realizamos uma análise de trilha utilizando dados genotípicos. Assim, tanto os
efeitos de tratamentos e erro experimental foram considerados, diferentemente de quando
utilizamos os dados fenotípicos.
208
4.6 Análise multivariada
209
• Organizando o arquivo para análise
library(dplyr)
library(plyr)
nvars = 15
gru = c("HIB")
namvar = names(datafactors[,(ncol(datafactors)-nvars+1):ncol(datafactors)])
datapca = [Link](datafactors[(match(c(gru,namvar), names(datafactors)))])
Neste ponto, temos um conjunto de dados chamado datapca. Vamos visualizar a estrutura
deste conjunto (primeiras 10 linhas e 10 variáveis)
options(digits = 4)
head(datapca[,1:10], n = 10)
## APLA AIES PRE CESP DIES DSAB CSAB MSAB MGRA NFIL
## H1 2.621 1.504 0.5705 15.10 51.18 30.06 15.71 26.72 183.7 16.60
## H10 2.315 1.262 0.5450 15.12 48.43 28.41 15.90 22.80 163.9 15.60
## H11 2.390 1.266 0.5266 15.22 48.77 28.27 16.01 22.60 167.2 15.63
## H12 2.438 1.282 0.5192 14.28 48.59 28.24 14.81 22.61 157.5 16.33
## H13 2.539 1.353 0.5318 15.03 50.56 29.39 15.83 26.04 179.8 17.43
## H2 2.604 1.378 0.5252 15.34 50.92 29.25 16.03 25.66 187.0 16.67
## H3 2.595 1.411 0.5379 14.53 49.45 28.51 15.70 22.91 169.5 15.80
## H4 2.580 1.425 0.5458 15.73 49.24 28.58 16.52 25.75 184.3 15.50
## H5 2.568 1.371 0.5303 15.58 49.90 29.37 16.59 27.70 183.6 16.13
## H6 2.558 1.415 0.5528 15.76 51.53 30.25 16.57 27.27 188.0 16.30
options(digits = 7)
210
50
Percentagem explicada da variância
40
30
20
10
1 2 3 4 5 6 7 8 9 10
Número de componentes principais
211
2 H9
H5
H4
1 H7
H10
H6
H11 H8
Dim2 (18.1%)
−1 H1
H2
−2 H13 H3
H12
−4 −2 0 2 4
Dim1 (50.8%)
Figure 50: Escores dos genótipos nos dois primeiros PCA obtidos pela função pca()
repel = TRUE,
theme = "journal")
212
1.0
CSAB
DSDE
CESP NGFI
0.5
Dim2 (18.1%)
PRE 8
MSAB
DSAB 6
0.0 MGRA NGRA
4
MMG
2
AIES PERCGR
DIES
APLA
−0.5
NFIL
−1.0
Figure 51: Escores das variáveis nos dois primeiros PCA obtidos pela função pca()
213
CSAB H9
2
H5 H4 NGFI
CESP DSDE
H7
1 H10
NGRA 8
0 6
DSAB
MGRA
MMG 4
AIES 2
DIES PERCGR
−1
APLA
H1
H2 NFIL
H13 H3
−2
H12
−4 −2 0 2 4
Dim1 (50.8%)
Figure 52: Escores dos genótipos e das variáveis nos dois primeiros PCA obtidos pela função pca()
results = F,
[Link] = c("text", "point"),
[Link] = c("text", "point", "arrow"),
[Link] = "contrib",
[Link] = c("blue", "red"),
repel = TRUE,
theme = "journal")
Nos biplots acima, os escores plotados foram em relação à média dos genótipos. No entanto,
a estrutura original dos dados é um experimento fatorial. Em casos em que é do interesse do
pesquisador realizar uma análise para cada ambiente, por exemplo, a estrutura do banco de
dados precisa ser modificada e alguns novos argumentos precisam ser inseridos na função.
Vamos ao exemplo.
• Organizando o banco de dados para uma análise considerando os ambientes como fatores
214
library(dplyr)
library(plyr)
nvars = 15
gru = c("HIB", "AMB")
namvar = names(datafactors[,(ncol(datafactors)-nvars+1):ncol(datafactors)])
datapca2 = [Link](datafactors[(match(c(gru,namvar), names(datafactors)))])
datapca2 = datapca2 %>%
dplyr::group_by(HIB, AMB) %>%
dplyr::summarise_all(funs(m = mean(., [Link] = T)))
datapca2 = [Link](datapca2)
datapca2$x <- paste(datapca2$HIB, datapca2$AMB)
rownames(datapca2) = datapca2$x
datapca2 = datapca2[-(match(c("HIB", "x"), names(datapca2)))]
names(datapca2) = names(datafactors)[c(1, 5:19)]
groups = [Link](datapca2$AMB)
datapca2 = datapca2[,-1]
Neste ponto, criamos um novo conjunto de dados, onde as médias foram calculadas para
cada tratamento, ou seja, combinação de genótipos e ambientes. Vamos visualizar os dados
(primeiras 10 linhas e 10 variáveis)
options(digits = 4)
head(datapca2[,1:10], n = 10)
## APLA AIES PRE CESP DIES DSAB CSAB MSAB MGRA NFIL
## H1 A1 2.723 1.6833 0.6256 15.43 51.08 28.05 15.71 23.49 202.7 16.27
## H1 A2 2.930 1.7953 0.6122 14.97 51.87 31.52 15.49 30.20 188.2 17.07
## H1 A3 2.197 1.0953 0.4972 14.83 50.59 30.90 15.81 26.84 156.8 15.87
## H1 A4 2.635 1.4440 0.5469 15.15 51.16 29.78 15.81 26.37 187.3 17.20
## H10 A1 2.783 1.6207 0.5837 16.10 53.17 31.37 16.79 24.59 192.4 16.67
## H10 A2 2.049 0.9873 0.4936 15.53 46.73 26.80 16.30 26.34 159.9 14.00
## H10 A3 2.038 1.0113 0.5029 13.99 43.87 24.78 15.18 12.28 120.6 15.33
## H10 A4 2.389 1.4267 0.5996 14.89 49.96 30.70 15.32 28.02 182.7 16.40
## H11 A1 2.749 1.5787 0.5742 16.63 48.92 28.98 17.18 23.61 188.3 15.20
## H11 A2 2.147 1.0187 0.4749 15.12 47.32 27.23 15.65 24.29 163.6 13.73
options(digits = 7)
De posse dos novos dados, podemos agora confeccionar um novo biplot . * Biplot, escores de
genótipos e variáveis
cursoR::pca(datapca2,
type = "biplot",
results = F,
[Link] = groups, # declara que a cor dos genótipos deve ser por ambiente
palette = c("blue", "red", "gray", "green"), # vetor de cores (n = nº de ambiente
addEllipses = TRUE, #adiciona elipses nos centroides de cada ambiente
215
DSDE
DSAB H6 A3
H1 A3
H13 A2 H7 A3
2.5
H9 A1 H8 A3
MSAB H8 A1 H6 A4
H10 A4
H2 A2 MMG
H1 A2 H5 A4 H12 A4 H2 A3 H3 A3
H7 A1 H12 A2
H3 A2 H3 A4
DIES H11 A4 H5 A3
Dim2 (21.7%)
H4 A2 H9 A3 a A1
H10 A1
PRE H10 A2 H4 A3
0.0 H6 A1 H12 A1 a A2
AIESH7 A4
CSAB H2 A4 H11 A2
H13 A1 H4 A4 H13 A4 H9 A2 a A3
H5 A1
CESP
MGRA H11 A1 H9 A4 a A4
APLA H7 A2
A4 H1 A4
H8 NFIL H11 A3
H1 A1 H8 A2
H12 A3
NGFI H5 A2
−2.5 H3 A1 H10 A3
NGRA
H4 A1 H13 A3
PERCGR
H2 A1
H6 A2
−5.0 −2.5 0.0 2.5 5.0
Dim1 (48.7%)
Figure 53: Escores dos genótipos e das variáveis nos dois primeiros PCA obtidos pela função pca() considerando
os efeitos de ambiente
216
As seguintes etapas precisam seguidas para realizar o agrupamento hierárquico aglomerativo
usando o a função distdend() do pacote cursoR.
1. Preparação dos dados
2. Computar uma medida de (di)similaridade entre cada par de genótipos no conjunto de
dados.
3. Usar uma função de ligação para agrupar os genótipos no dendrograma, com base
nas informações de distância geradas na etapa 1. Genótipos que estão próximos são
agrupados usando a função de ligação.
4. Determinar o ponto de corte para formação dos grupos.
Os dados que serão utilizados são os mesmos daqueles utilizados para realizar a análise de
componentes principais. O primeiro procedimento é estimar uma matriz de similaridade
entre os genótipos testados. Existem muitos métodos para calcular as informações de
(di)similaridade. As opções incluidas na função são: “euclidean” (padrão), “pearson”,
“kendall”, “spearman”, “maximum”, “manhattan”, “canberra”, “binary”, “minkowski” ou
“gower”. Para maiores informações veja ?distdend.
• Computando a matriz de distâncias
library(cursoR)
dist = distdend(datapca,
results = TRUE,
distmethod = "euclidean",
dendrogram = FALSE)
options(digits = 2)
dist$distances
## H1 H10 H11 H12 H13 H2 H3 H4 H5 H6 H7 H8 H9
## H1 0 49.2 37 55.9 39.8 22 28.6 34.5 42.5 11 25.0 50.6 63.5
## H10 49 0.0 14 8.3 42.9 49 29.2 46.0 48.1 51 26.9 8.8 16.6
## H11 37 13.7 0 20.0 40.1 40 16.2 41.0 45.3 40 13.6 14.4 27.1
## H12 56 8.3 20 0.0 49.1 56 34.0 52.9 54.4 59 32.7 8.6 9.7
## H13 40 42.9 40 49.1 0.0 21 48.0 9.1 6.8 33 40.8 49.9 58.2
## H2 22 48.8 40 56.0 20.8 0 40.9 14.2 22.0 13 34.5 53.6 64.9
## H3 29 29.2 16 34.0 48.0 41 0.0 46.8 53.0 36 7.9 26.5 39.3
## H4 34 46.0 41 52.9 9.1 14 46.8 0.0 8.7 26 39.7 52.5 61.9
## H5 42 48.1 45 54.4 6.8 22 53.0 8.7 0.0 34 45.7 55.2 63.3
## H6 11 51.3 40 58.5 32.5 13 36.1 26.2 34.1 0 30.9 54.4 66.7
## H7 25 26.9 14 32.7 40.8 35 7.9 39.7 45.7 31 0.0 26.3 39.2
## H8 51 8.8 14 8.6 49.9 54 26.5 52.5 55.2 54 26.3 0.0 13.2
## H9 63 16.6 27 9.7 58.2 65 39.3 61.9 63.3 67 39.2 13.2 0.0
options(digits = 7)
217
medir a altura em metros e outra variável pode medir o peso em kg. O argumento scale =
TRUE satisfaz esta opção.
No exemplo anterior, apenas a matriz foi calculada. Vamos agora utilizar outros argumentos
da função para a confecção do dendrograma . Como na estimativa das distâncias, diversos
algorítimos aglomerativos estão disponíveis para a confecção do dendrograma. Um resumo é
dado abaixo:
• “complete”: a distância entre dois clusters é definida como o valor máximo de todas as
distâncias entre entre os elementos no cluster 1 e os elementos no cluster 2. Ele tende a
produzir clusters mais compactos.
• “single”: a distância entre dois clusters é definida como o valor mínimo de todas as
distâncias entre pares os elementos no cluster 1 e os elementos no cluster 2. Ele tende a
produzir clusters longos.
• “average” ou UPGMA: a distância entre dois clusters é definida como a distância média
entre os elementos no cluster 1 e os elementos no cluster 2.
• “centroid” ou UPGMC: A distância entre dois grupos é definida como a distância entre o
centroide do cluster 1 (um vetor médio de comprimento igual a p variáveis) e o centroide
do cluster 2.
• “ward.D”: minimiza a soma de quadrados dentro do cluster. Em cada etapa, o par de
clusters com distância mínima entre clusters é mesclado.
• Confeccionando o dendrograma com o método average.
distdend(datapca,
results = FALSE,
distmethod = "euclidean",
dendrogram = TRUE,
clustmethod = "average")
No dendrograma exibido acima, cada folha corresponde a um genótipo. À medida que subimos
na árvore, genótipos que são semelhantes uns aos outros são combinados em ramos, que vão
sendo fundidos a uma altura cada vez maior maior. A altura da fusão, fornecida no eixo
vertical, indica a (di)similaridade/distância entre dois genótipos. Quanto maior a altura da
fusão, menos semelhantes são os genótipos.
Observe que as inferências sobre a proximidade de dois genótipos podem ser
realizadas apenas com base na altura em que as ramificações que contêm esses
dois genótipos são fundidas. Não podemos usar a proximidade de dois genótipos
ao longo do eixo horizontal como critério de similaridade.
Após a confecção do dendrograma , convém avaliar se as distâncias (ou seja, as alturas) na
árvore refletem as distâncias originais com precisão. Uma maneira de medir o quão bem o
dendrograma gerado reflete seus dados é calcular a correlação entre as distâncias cofenéticas
e os dados de distância originais. No procedimento anterior o dendrograma não foi mostrado,
no entanto, o coeficiente de correlação cofenético foi calculado. Para isto basta incluir o
seguinte comando:
218
50
40
30
Height
20
10
0
H9
H8
H10
H12
H11
H3
H7
H4
H13
H5
H2
H1
H6
219
dist$cophenetic
## [1] 0.865619
Quanto mais próximo o valor do coeficiente de correlação for de 1, mais precisamente o
dendrograma refletirá as distâncias originais. Valores acima de 0,75 são considerados bons.
O método de ligação “average”, ou UPGMA parece produzir altos valores dessa estatística.
Esta pode ser uma das razões por que ele é tão popular.
A função distdend() também conta com um algorítimo de seleção de variáveis que considera
os pesos dos autovetores associados aos autovalores de menor magnitude para excluir uma
determinada variável. Para maiores informações, veja ?distdend. Quando declaramos o
argumento selvar = TRUE na função, um algorítimo de seleção de variáveis é executado. O
objetivo é selecionar um grupo de variáveis que mais contribuam para explicar a variabilidade
dos dados originais. Digamos que, algumas poucas variáveis pudessem ser utilizadas para
agrupar os nosso tratamentos sem que haja perda de informação, recursos humanos e
financeiros poderiam ser poupados, pois ao envés de avaliarmos 15 variáveis (em nosso
exemplo), poderiamos avaliar somente aquelas que realmente contribuiem para a distinção
dos tratamentos. Vamos ao exemplo.
library(cursoR)
dist = distdend(datapca,
results = TRUE,
selvar = TRUE,
distmethod = "euclidean",
dendrogram = TRUE)
## Calculating model 1 with 15 variables. ' AIES ' excluded in this step ( 7.1 %).
## Calculating model 2 with 14 variables. ' PRE ' excluded in this step ( 14.3 %).
## Calculating model 3 with 13 variables. ' DSDE ' excluded in this step ( 21.4 %).
## Calculating model 4 with 12 variables. ' APLA ' excluded in this step ( 28.6 %).
## Calculating model 5 with 11 variables. ' DSAB ' excluded in this step ( 35.7 %).
## Calculating model 6 with 10 variables. ' NFIL ' excluded in this step ( 42.9 %).
## Calculating model 7 with 9 variables. ' PERCGR ' excluded in this step ( 50 %).
## Calculating model 8 with 8 variables. ' CESP ' excluded in this step ( 57.1 %).
## Calculating model 9 with 7 variables. ' CSAB ' excluded in this step ( 64.3 %).
## Calculating model 10 with 6 variables. ' DIES ' excluded in this step ( 71.4 %).
## Calculating model 11 with 5 variables. ' MGRA ' excluded in this step ( 78.6 %).
## Calculating model 12 with 4 variables. ' MSAB ' excluded in this step ( 85.7 %).
## Calculating model 13 with 3 variables. ' NGFI ' excluded in this step ( 92.9 %).
## Calculating model 14 with 2 variables. ' MMG ' excluded in this step ( 100 %).
## Done!
##
##
## --------------------------------------------------------------------------
## Summary of the adjusted models
## --------------------------------------------------------------------------
## Model excluded cophenetic remaining cormantel pvmantel
220
## 1 Model 1 - 0.8656190 15 1.0000000 0.000999001
## 2 Model 2 AIES 0.8656191 14 1.0000000 0.000999001
## 3 Model 3 PRE 0.8656191 13 1.0000000 0.000999001
## 4 Model 4 DSDE 0.8656191 12 1.0000000 0.000999001
## 5 Model 5 APLA 0.8656189 11 1.0000000 0.000999001
## 6 Model 6 DSAB 0.8655939 10 0.9999996 0.000999001
## 7 Model 7 NFIL 0.8656719 9 0.9999982 0.000999001
## 8 Model 8 PERCGR 0.8657259 8 0.9999977 0.000999001
## 9 Model 9 CESP 0.8657904 7 0.9999972 0.000999001
## 10 Model 10 CSAB 0.8658997 6 0.9999964 0.000999001
## 11 Model 11 DIES 0.8658274 5 0.9999931 0.000999001
## 12 Model 12 MGRA 0.8643556 4 0.9929266 0.000999001
## 13 Model 13 MSAB 0.8640355 3 0.9927593 0.000999001
## 14 Model 14 NGFI 0.8648384 2 0.9925396 0.000999001
## --------------------------------------------------------------------------
##
## Suggested variables to be used in the analysis
## --------------------------------------------------------------------------
## The distance were calculated based on the variables in Model 10 .
## The variables included in this model were...
## DIES MSAB MGRA NGFI MMG NGRA
## --------------------------------------------------------------------------
A saída acima nos mostra o progresso do algorítmo, indicando qual foi a variável excluída
em cada passo. Isto pode ser omitido, indicando verbose = FALSE na função. O resumo do
modelo (Summary of the adjusted models) nos fornece duas informações muito úteis. Primeira:
ao reduzir o número de variáveis utilziadas na estimativa das distâncias, o coeficiente de
correlação cofenético não reduziu significativamente, apresentando variação apenas na terceira
casa decimal. Vamos ver o gráfico gerado.
dist[["cofgrap"]]
221
0.8655
Correlação cofenética
0.8650
0.8645
0.8640
4 8 12
Número de variáveis na distância
Figure 55: Coeficiente de correlação cofenética em matrizes de distância estimadas com diferentes números de
variáveis
222
datadist = datapca[,c("DIES", "MSAB", "MGRA", "NGFI", "MMG", "NGRA")]
head(datadist, n = 10)
## DIES MSAB MGRA NGFI MMG NGRA
## H1 51.17650 26.72237 183.7469 32.20000 364.6268 506.5500
## H10 48.43300 22.80458 163.8930 32.40000 319.9602 503.6333
## H11 48.77400 22.60115 167.2397 33.00000 332.9150 500.6500
## H12 48.58717 22.60875 157.4735 30.38333 315.7981 501.7500
## H13 50.56450 26.03742 179.8382 30.98333 340.2383 537.6500
## H2 50.91883 25.66495 186.9990 31.88333 356.1710 526.5333
## H3 49.44883 22.91384 169.4556 31.38333 345.7283 491.2333
## H4 49.24417 25.74671 184.2604 35.00000 346.1070 535.3333
## H5 49.89933 27.69686 183.6348 33.93333 340.9189 541.7000
## H6 51.52800 27.26551 187.9994 32.83333 363.1051 516.2167
Um dos problemas com o agrupamento hierárquico é que ele não nos informa quantos clusters
existem ou onde cortar o dendrograma para formar os clusters. Você pode cortar a árvore
hierárquica a uma determinada altura, digamos, na média das distâncias, no entanto esta
decisão é puramente impirica. Por exemplo, se o ponto de corte for muito alto, tendemos a
agrupar genótipos que podem, de fato, não ser semelhantes. Um ponto de corte muito baixo,
por outro lado, pode resultar em fracassos na seleção, pois consideramos que os genótipos
são distintos, podendo não o serem. Procedimentos estatisticos à exemplo de Milligan and
Cooper (1985), Scott and Symons (1971), Krzanowski and Lai (1988), Halkidi, Batistakis,
and Vazirgiannis (2001), e Hubert and Arabie (1985) são recomendados para esta escolha.
Estes algorítimos ainda não estão implementados na função, no entanto o pacote NbClust
(Charrad et al. 2014) pode ser utilizado para este fim. Por padrão, a função fornece o ponto
de corte calculado pelo método de Mojena (Mojena 1977).
Além disto, a função distdend() também conta com um procedimento baseado em reamostra-
gens bootstrap que calcula a probabilidade de erro de cada galho do dendrograma . Declarando
pvclust = TRUE e nboot = 500 um procedimento bootstrap com 500 reamostragens é re-
alizado para a estimativa de p-valores. Para maiore detalhes sobre o métoddo veja Suzuki
and Shimodaira (2006). Declarando alpha = 0.95 indicamos que somente grupos com este
nível de confiança serão considerados significativos. Neste exemplo, vamos declarar results
= FALSE e dendrogram = FALSE. Assim, somente o gráfico com os grupos será apresentado.
cut = distdend(datadist,
results = TRUE,
dendrogram = TRUE,
pvclust = TRUE,
nboot = 500,
alpha = 0.95,
distmethod = "euclidean",
clustmethod = "average")
223
## Bootstrap (r = 0.83)... Done.
## Bootstrap (r = 1.0)... Done.
## Bootstrap (r = 1.0)... Done.
## Bootstrap (r = 1.17)... Done.
## Bootstrap (r = 1.17)... Done.
## Bootstrap (r = 1.33)... Done.
au bp
edge #
40
30
96 64
96 69 11
10
Height
20
82 66
96 59 9
92 71 8
7 97 77
10
89 83
70 33 99 79 100 85 6
4 3 2 592 63
1
0
H9
H8
H10
H12
H11
H3
H7
H4
H13
H5
H2
H1
H6
Distance: euclidean
Cluster method: average
cut$cut
## [1] 32.28318
O resultado do procedimento bootstrap indicou a formação de dois grupos, com probabilidade
de erro de 5%. Assim, nas próximas funções, serão demostrados os diferentes dendrogramas
que podem ser gerados
distdend(datadist,
results = FALSE,
distmethod = "euclidean",
clustmethod = "average",
nclust = 2,
cex = 1,
lwd = 1.3,
224
H6
H1
H2
H5
H13
H4
H7
H3
H11
H12
H10
H8
H9
50 40 30 20 10 0
euclidiana
Figure 56: Procedimento bootstrap indicando o número de clusters a serem formados no dendrograma
ylab = "euclidiana",
type = "rectangle",
horiz = T)
distdend(datadist,
results = FALSE,
distmethod = "euclidean",
clustmethod = "average",
nclust = 2,
rect = TRUE,
ylab = "euclidiana",
color_labels_by_k = F,
k_colors = c("black", "black", "black"),
horiz = F)
distdend(datadist,
results = FALSE,
225
50
40
30
euclidiana
20
10
0
H9
H8
H10
H12
H11
H3
H7
H4
H13
H5
H2
H1
H6
226
H6 H1
H2
H4
H13
H7
H5 H3
H11
H9
H8
H12 H10
distmethod = "euclidean",
clustmethod = "average",
nclust = 2,
cex = 1.2,
type = "phylogenic")
distdend(datadist,
results = FALSE,
distmethod = "euclidean",
clustmethod = "average",
nclust = 2,
type = "circular")
227
H6
H9
H1
H8
H2
0
H1
H5
H12
3
H1
H1
1
H4
H3
H7
228
4.6.3 k-means
A idéia básica por trás do agrupamento k-means consiste em definir clusters para que
a variação total dentro do cluster seja minimizada. Existem vários algoritmos k-means
disponíveis. O algoritmo padrão e o mais utilizado é o algoritmo de Hartigan-Wong (Hartigan
and Wong 1977), que define a variação total dentro do cluster como a soma das distâncias
Euclidianas quadráticas entre os itens e o centróide correspondente. Os passos básicos para a
análise são os que seguem:
1. Especifique o número de clusters (K) a serem criados;
2. Selecione aleatoriamente k objetos do conjunto de dados como os centros de clusters
iniciais ou médias;
3. Atribui cada observação ao seu centróide mais próximo, com base na distância euclidiana
entre o objeto e o centróide;
4. Para cada um dos k clusters, atualize o centróide do cluster calculando os novos valores
médios de todos os pontos de dados no cluster. O centróide do k-ésimo cluster é um
vetor de comprimento p (p = número de variáveis) contendo as médias de todas as
variáveis para as observações no k-ésimo cluster;
5. Iterativamente, minimize a soma de quadrados total dentro do cluster; isto é, iterar as
etapas 3 e 4 até que as atribuições do cluster parem de mudar ou até que o número
máximo de iterações sejam atingidas. Por padrão, o software R usa 10 como o valor
padrão para o número máximo de iterações.
• Exemplo
library(ggplot2)
kmeans = k_means(datadist,
nclust = 3)
Esta sessão tem como foco principal a análise estatistica de dados oriundos de ensaios de
melhoramento genético. Assim, os maiores esforços serão direcionados para duas importantes
áreas da estatistica relacionadas com estes tipos de experimentos: (i) análise multivariada
; e (ii) interação genótipo vs ambiente (GEI) . Como algumas funções específicas deste
tipo de análise não são encontradas em pacotes, ou muitas vezes, a realização de uma
determinada análise depende de funções de diferentes pacotes, utilizaremos nesta sessão,
principalmente, o pacotes WAASB (T. Olivoto 2018b) e cursoR, apresentado anteriormente
na seção Experimentos-bifatoriais. O pacote WAASB foi desenvolvido em linguagem R e
distribuídos sob a licença GPL 3.0. Nossa principal motivação para o desenvolvimento deste
pacote foi fornecer funções amigáveis e confiáveis para serem utilizadas na análise de dados
de experimentos voltados ao melhoramento genético de plantas. O pacote contém funções
para análise GEI utilizando modelos mistos (Piepho 1994) e análise AMMI (Gauch 2013).
As principais funções do pacote são apresentadas abaixo.
229
Função Descrição
Função Descrição
WAASB() Análise da interação GEI via modelos mistos com biplots para a
interação
WAASBYratio() Permite atribuir pesos para produtividade e estabilidade em
modelos mistos
[Link]() Análise da interação GEI via análise AMMI tradicional
[Link]() Permite atribuir pesos para produtividade e estabilidade em
análise AMMI
[Link]() Procedimento de validação cruzada em modelos mistos
[Link]() Procedimento de validação cruzada para membros de modelos da
família AMMI
[Link]() Predição da variável resposta baseada na análise AMMI
[Link]() Predição da variável resposta baseada na análise AMMI com
dados médios
[Link]() Gráfico de médias preditas via modelos mistos
[Link]()
Gráfico para representar o erro de predição dos modelos
[Link]() Gráfico para seleção de genótipos considerando pesos
[Link]() Mapas de calor com diferentes interpretações para seleção de
genótipos
[Link]() Resume um objeto WAASB
[Link]() Gráfico com os autovalores da matriz de interação BLUP
Uma cultura pode ser vista como um sistema complexo com resultados (por exemplo, rendi-
mento de grãos) que são afetados por informações genéticas, fisiológicas, pedoclimáticas e de
manejo. Melhoristas e geneticistas se esforçam continuamente para aumentar a produtividade
das culturas visando suprir a demanda mundial cada vez maior por alimentos. É na fase
final de um programa de melhoramento de plantas que muito esforço e recursos precisam
ser investidos na avaliação dos genótipos (G) a serem selecionados. Geralmente algumas
centenas de genótipos precisam ser avaliados em um grande número de ambientes (E). Estes
ensaios são conhecidos como ensaios multi-ambientes (EMA) e os dados destes experimentos
resultam em uma matriz M de dimensões G × E. É nesta fase do processo que surge um
dos maiores desafios da análise de EMA: compreender a interação genótipo × ambiente
(GEI) buscando novas formas de explorá-la e utilizá-la a favor da seleção de genótipos com
estabilidade produtiva satisfatória.
Os dados utilizados neste módulo são oriundos de um ensaio de aveia com 10 genótipos
conduzidos em cinco ambientes. Em cada ambiente um delineamento de blocos completos
casualizados com três blocos e uma observação por bloco foi utilizado. Sete variáveis foram
avaliadas. Ao longo desta sessão, utilizaremos o rendimento de grãos (RG) como exemplo.
230
Optimal number of clusters
7500
Total Within Sum of Square
5000
2500
0
1 2 3 4 5 6 7 8 9 10
Number of clusters k
Figure 60: Gráfico para agrupamento k-means gerado pela função kmeans()
231
2
H1 H3
1 H7
H6 H2 H12
H13
H8
Dim2 (18.8%)
a 1
0
a 2
H11 H10 a 3
H9
−1
H5
−2 H4
−3 −2 −1 0 1 2 3
Dim1 (69.3%)
Figure 61: Gráfico para agrupamento k-means gerado pela função kmeans()
232
Para download dos dados, basta rodar o seguinte código no console R. Online, os dados estão
dispoíveis em Olivoto T. and Sari (2018a).
# Importanto os dados
interaction = [Link]("[Link]
Nesta sessão, utilizaremos a função ge_stats() do pacote cursoR. Esta função computa
uma análise individual para cada ambiente, uma ANOVA conjunta, bem como algumas
estatisticas da GEI. Para maiores detalhes, utilize ?ge_stats no console R. Os argumentos
que precisaremos informar na função são: data (no nosso caso o arquivo interaction), resp (a
variável resposta, RG) gen (o nome da coluna correspondente aos genótipos GEN ) env (o
nome da coluna relacionada aos ambientes AMB) e rep (o nome da coluna correspondente às
repetições BLOCO). Vamos ao exemplo.
library(cursoR)
stats = ge_stats(interaction, resp = "RG", gen = "GEN", env = "AMB", rep = "BLOCO")
Com esta função, salvamos no objeto stats todas as saídas geradas pela função. Agora vamos,
passo-a-passo, visualizar estas saídas.
233
## 4 E4 2507 67066 407701 231050 0.29 0.751 1.8 1.5e-01
## 5 E5 3107 165496 550423 66759 2.48 0.112 8.2 8.5e-05
## 6 E6 3910 218807 526119 66357 3.30 0.060 7.9 1.1e-04
## 7 E7 2663 159851 134643 58566 2.73 0.092 2.3 6.3e-02
## CV(%) h2 AS R2
## 1 15.1 0.57 0.76 0.70
## 2 13.3 0.14 0.37 0.54
## 3 10.1 0.74 0.86 0.79
## 4 19.2 0.43 0.66 0.64
## 5 8.3 0.88 0.94 0.89
## 6 6.6 0.87 0.93 0.89
## 7 9.1 0.57 0.75 0.70
##
## $MSEratio
## [1] 3.9
options(digits = 3)
stats$ge_means$ge_means
## E1 E2 E3 E4 E5 E6 E7
## G1 2366 3041 3494 2297 3231 4171 2809
## G10 1974 3146 4271 2786 2716 3366 2485
## G2 2902 3231 3716 2558 2268 3827 2541
## G3 2889 3608 4134 2771 2910 4127 2985
## G4 2589 3190 3302 2344 3821 3783 2701
## G5 2188 3140 3379 2351 3175 3469 2433
## G6 2301 3291 3403 2337 2976 3569 2336
## G7 2774 2613 3019 1759 3229 4048 2666
## G8 2899 3445 4138 3043 3535 4812 2908
## G9 2326 3095 3896 2827 3210 3934 2768
Esta saída contém as médias dos genótipos nos ambientes avaliados. Estas são as médias dos
B-blocos de cada ambiente.
options(digits = 3)
stats$ge_means$ge_effects
## E1 E2 E3 E4 E5 E6 E7
## G1 -132.6 -116.9 -158.61 -188.11 145.7 282.36 168.2
## G10 -429.4 83.1 712.98 395.82 -273.9 -427.58 -61.1
## G2 455.4 125.4 114.63 125.57 -764.7 -8.73 -47.5
## G3 102.3 162.7 193.09 -2.07 -462.3 -49.48 55.9
## G4 44.2 -13.6 -396.79 -187.11 690.5 -151.57 14.3
## G5 -128.5 164.1 -92.25 48.14 272.1 -237.59 -26.0
## G6 -26.9 304.2 -78.78 22.59 62.0 -148.55 -134.6
234
## G7 461.2 -359.1 -448.15 -540.27 329.9 345.58 210.9
## G8 -80.7 -194.6 3.08 76.15 -31.6 442.18 -214.5
## G9 -265.0 -155.4 150.79 249.29 32.4 -46.60 34.6
Esta é a matriz dos efeitos da interação ẑij , estimada por: ẑij = yij − ȳi. − ȳ.j + ȳ.. . Como
será discutido posteriormente, esta é a matriz que é utilizada na decomposição por valores
singulares na análise AMMI.
options(digits = 3)
stats$ge_means$gge_effects
## E1 E2 E3 E4 E5 E6 E7
## G1 -154.9 -139.3 -180.9 -210.4 123.3 260.0 145.87
## G10 -546.6 -34.1 595.7 278.6 -391.1 -544.8 -178.34
## G2 381.1 51.1 40.3 51.2 -839.1 -83.1 -121.88
## G3 367.9 428.3 458.7 263.6 -196.7 216.2 321.50
## G4 67.9 10.1 -373.1 -163.4 714.2 -127.9 37.97
## G5 -332.4 -39.8 -296.2 -155.8 68.2 -441.5 -229.89
## G6 -219.9 111.2 -271.8 -170.4 -131.0 -341.6 -327.66
## G7 253.0 -567.3 -656.3 -748.4 121.7 137.4 2.69
## G8 378.7 264.8 462.5 535.6 427.8 901.6 244.91
## G9 -194.8 -85.1 221.1 319.6 102.6 23.7 104.82
Esta é a matriz dos efeitos de genótipos somado ao efeito da interação ẑg+ij , estimada por:
ẑg+ij = yij − µ + (yij − ȳi. − ȳ.j + ȳ.. ). Esta matriz é utilizada na decomposição por valores
singulares na análise GGE (Yan et al. 2007), não apresentada neste material.
o modelo com efeito de interação utilizado na análise conjunta dos dados é yijk = µ +
αi + τj + (ατ )ij + γ(τ )jk + εijk , onde yijk é a variável resposta observada do genótipo i (i =
1, 2, ..., G) no bloco k (k = 1, 2, ...B) de o ambiente (j = 1, 2, ..., E); µ é a média geral do
experimento; αi é o principal efeito do genótipo i; τj é o principal efeito do ambiente j; (ατ )ik
é o efeito de interação do genótipo i com o ambiente i; γ(τ )jk é o efeito do do bloco k no
iid
ambiente j; εijk é o erro aleatório médio εij ∩ N (0, σ 2 ). Considerando todos os efeitos como
fixos, exceto εijk , a média do genótipo i no ambiente j (yij ) é a média aritmética B-bloco do
genótipo i no ambiente j. yij = k yijk /B, (k= 1, 2,...B) .
P
stats$anovaconj
235
## Residuals 126 15893067 126135
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Além das análises individual e conjunta, a função também retorna algumas informações
importantes que podem ser utilizadas em outros procedimentos, como matrizes de médias e
efeitos da GEI. Medidas de estabilidade paramétricas baseadas em ANOVA como o método
tradicional (Yates and Cochran 1938), a Ecovalência de Wricke (1962) e variância de Shukla
(1972) são computadas e salvas no dataframe stab_meas.
stats$stab_meas
236
## Pooled error 140 15893067 113522
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
stats$ER$Regression
stats$plot
Métodos que combinam diferentes princípios estatísticos ganharam espaço na análise de EMA
por volta da década 1960, com destaque especial ao estudo de Gollob (1968), que propôs
um método que combina os benefícios da análise de fatores e análise de variância em um
único método para estudar a estabilidade . Naquela época este método era conhecido como
FANOVA. Atualmente este mesmo método foi popularizado por Gauch and Zobel (1988)
com o acrônimo AMMI.
237
G1
4000 G10
Produtividade de grãos
G2
G3
G4
G5
3000 G6
G7
G8
G9
2000
−500 0 500
Índice ambiental
238
A análise AMMI utiliza análise aditiva de variância aos fatores principais (genótipo e ambiente)
e decomposição por valores singulares ao residual do modelo aditivo, isto é, o efeito da
GEI somado ao erro experimental. Esta matriz dos efeitos não aditivos, então, pode ser
aproximadamente exibida por meio de biplots Gabriel (1971). Este método tem ganhado
destaque nas últimas décadas, principalmente devido a rápida evolução computacional, o que
tornou possível as complexas decomposições de matrizes de alta ordem.
De posse de uma matriz de dupla entrada oriunda de EMA, a estimativa da variável resposta
do i-ésimo genótipo no j-ésimo ambiente é obtida utilizando AMMI de acordo com o seguinte
modelo:
k
yij = µ + αi + τj + λk aik tjk + ρij + εij
X
k=1
onde λk é o valor singular para o k-ésimo eixo do componente principal; aik é o i-ésimo
elemento do k-ésimo autovetor de genótipos; tjk é o j-ésimo elemento do k-ésimo autovetor
de ambientes. Um resíduo ρij permanece, se todos os k-PCAs não são considerados, onde k
= min(G − 1; E − 1).
O modelo AMMI pode ser ajustado utilizando a função WAAS do pacote WAASB. Vamos
assumir no momento apenas o ajuste do modelo. Posteriormente serão discutidos os outros
argumentos desta função.
library(WAASB)
# Ajustando o modelo AMMI para os dados
AMMI = [Link](interaction,
resp = "RG")
# Imprimindo a ANOVA
options(digits = 2)
print(AMMI$anova)
239
Observe que as somas de quadrados são as mesmas obtidos anteriormente, na ANOVA
conjunta. Nesta abordagem, no entanto, a soma de quadrados da interação é decomposta em
componentes principais, quais explicam, cada um, uma fração da soma de quadrados total da
interação
Conforme já discutido, a análise AMMI aplica a técnica de decomposição por valores singulares
na matriz dos efeitos não aditivos do modelo (M ). Logo, esta matriz pode ser aproximada
pela pelo seguinte modelo: M = U λV T , onde onde U é uma matriz g × e contendo os vetores
singulares de AAT e formam a base ortonormal para os efeitos de genótipos; V T é uma matriz
e × e que contém os vetores singulares de AT A e formam a base ortonormal para os efeitos
de ambientes; e λ é uma matriz diagonal e × e contendo k-valores singulares de AT A , onde
k = min(G − 1; E − 1). A Assim, diferentes modelos (dependendo do número de termos
multiplicativos utilizados) podem ser utilziados para predizer o rendimento do genótipo i
no ambiente j. A tabela abaixo mostra os possíveis modelos. No modelo AMMI0 apenas
os efeitos aditivos são considerados. No modelo AMMI1, o primeiro termo multiplicativo é
considerado, e assim por diante, até o modelo AMMIF, onde min(G − 1; E − 1) termos são
considerados.
240
Figure 63: Barra de progresso.
O pacote WAASB fornece uma solução completa para cross-validation do modelo AMMI.
Utilizando a função [Link]() , por exemplo, é possível realizar um teste de
cross-validation para a família de modelos AMMI (AMMI0-AMMIF) usando dados com
repetições. Automaticamente a primeira validação é realizada considerando a AMMIF (todos
os eixos possíveis são usados). Considerando esse modelo, o conjunto de dados original
é dividido em dois conjuntos de dados: dados de modelagem e dados de validação. O
conjunto de dados “modelagem” possui todas as combinações (genótipo x ambiente) com o
número de replicações informado no argumento nrepval. O conjunto de dados “validação”
tem uma repetição. O diagrama ao lado representa o procedimento realizado. A divisão
do conjunto de dados em dados de modelagem e validação depende do design informado.
Considerando um delineamento de blocos completos casualizados (DBC) blocos completos são
aleatoriamente selecionados dentro de ambientes, como sugerido por Piepho (1994). O bloco
restante serve dados de validação. Se design = "CRD" for informado, assim declarando que
um delineamento intericamente casualizado (DIC) foi usado, observações são aleatoriamente
selecionadas para cada tratamento (combinação genótipo-vs-ambiente). Este é o mesmo
procedimento sugerido por Gauch and Zobel (1988). Os valores estimados para o membro da
família AMMI em estudo são então comparados com os dados de “validação” e um erro de
predição ẑij é estimado para cada tratamento. A raiz quadrada do quadrado médio do erro
(RMSE) é calculado. Este procedimento é repetido n vezes, utilizando o argumento nboot
= n. Ao final do procedimento, o algorítimo armazena as n estimativas do RMSE para o
modelo em questão, e um novo modelo é então testado seguindo os mesmos passos.
Uma barra de progresso é mostrada por padrão. Assim, é possível verificar o status do
processo. Se necessário, a barra de progresso pode ser desabilitada informando o argumento
progbar = FALSE na função.
• Vamos agora ao exemplo.
# Validação cruzada para os membros de modelos da família AMMI
library(WAASB)
valida = [Link](interaction,
resp = "RG",
nboot = 500,
nrepval = 2)
241
RMSEmed = RMSEmed[order(RMSEmed[,2], decreasing = F),]
Podemos lidar com os resultado armazenados em valida basicamente de duas formas distintas.
A Primeira é imprimir os resultados no ambiente R usando print(RMSEmed). Isso não é uma
boa idéia, já que provavelmente iremos utilizar estes dados em outros outros programas, como
o excel, por exemplo. Porém, vamos fazer isso agora.
# Imprimindo os valores médios do RMSE
options(digits = 5)
print(RMSEmed)
## MODEL mean
## 2 AMMI1 429.83
## 3 AMMI2 430.54
## 4 AMMI3 437.69
## 1 AMMI0 438.38
## 5 AMMI4 444.48
## 6 AMMI5 446.68
## 7 AMMIF 447.46
Em nosso exemplo, o modelo AMMI2 foi o que apresentou o menor RMSE, sendo o mais
indicado para predizer o rendiento de grãos. Isto está de acordo com o teste de hipótese
encontrado em anova.
A segunda opção é exportar os resultados para um arquivo editável, como um arquivo .csv
ou .xlsx. Para isto, utilizaremos as funções abaixo.
# Exportando os resultados para um arquivo .csv
[Link](RMSEmed, file = "[Link]")
É também possível criar um gráfico com a distribuição das n estimativas do RMSE para cada
modelo. Para isto iremos utilziar a função [Link]().
# Plotando os valores de RMSE
[Link](valida,
violin = TRUE,
[Link] = "gray75")
Cinco estatísticas são mostradas neste boxplot. A mediana, o primeiro e terceiro quartis
(comprimento da caixa) e os valores que não ultrapassam 1.5 × a amplitude interquartílica
(linhas que se extendem além da caixa). Dados além do fim dos bigodes são considerados
outliers. Se a condição violin = TRUE, um gráfico de violino é adicionado ao boxplot. Um
gráfico de violino é uma exibição compacta de uma distribuição contínua.
242
AMMIF
AMMI5
AMMI4
Tested models
AMMI3
AMMI2
AMMI1
AMMI0
Figure 64: Gráfico boxplot demonstrando o RMSE obtido na validação cruzada dos models AMMI
243
4.10.3 Biplots
options(digits = 2)
head(AMMI$model, n = 10)
## type Code Y PC1 PC2 PC3 PC4 PC5 PC6 WAAS PctResp PctWAAS OrRes
## 1: GEN G1 3058 8.4 -0.059 -8.7 1.84 -11.63 -3.62 5.7 86 97
## 2: GEN G10 2963 -23.3 11.386 -3.6 8.75 2.20 5.98 19.5 84 91
## 3: GEN G2 3006 -12.1 -21.491 8.0 -1.75 5.32 -4.01 15.0 85 93
## 4: GEN G3 3346 -9.6 -9.512 4.1 3.22 -7.20 1.69 9.6 95 96
## 5: GEN G4 3104 16.3 12.360 8.9 -0.21 5.09 -0.12 15.1 88 93
## 6: GEN G5 2877 1.4 10.745 7.7 -2.49 -0.85 -2.26 4.4 81 98
## 7: GEN G6 2888 -1.3 4.225 10.1 -9.25 -4.15 2.91 2.2 82 99
## 8: GEN G7 2872 23.3 -10.907 -1.5 9.76 3.07 4.09 19.4 81 91 1
## 9: GEN G8 3540 1.7 -3.920 -16.0 -12.53 3.72 4.23 2.4 100 99
## 10: GEN G9 3151 -4.9 7.173 -8.8 2.68 4.43 -8.88 5.7 89 97
## PesRes PesWAAS WAASY OrWAASY
## 1: 50 50 92 4
## 2: 50 50 87 9
## 3: 50 50 89 8
## 4: 50 50 95 2
## 5: 50 50 90 5
## 6: 50 50 90 7
## 7: 50 50 90 6
## 8: 50 50 86 10
## 9: 50 50 99 1
## 10: 50 50 93 3
Neste exemplo, os escores dos nove componentes principais são mostrados. O objeto model
gerado pela função [Link]() mostra os seguintes resultados: type, genótipo (GEN) ou
ambiente (ENV); Code, o código atribuído a cada nível dos fatores; Y, a variável resposta
(neste caso, o rendimento de grãos) PC são os escores dos componentes principais; e WAAS
é a média poderada dos escores absolutos, considerando o número de termos significativos do
modelo, estimado pela seguinte equação: W AASi = sk=1 |P CAik × EPk |/ sk=1 EPk , onde
P P
W AASi é a média ponderada dos escores absolutos do ith genótipo; P CAik é o escore do ith
genótipo no kth componente principal; e EPk é a variância explicada pelo kth componente
principal para k = 1, 2, .., s.
Para plotar os escores utilziaremos a função [Link].
biplot AMMI1
[Link](AMMI,
type = 2,
[Link] = "Produtividade de grãos (Mg/ha)")
biplot AMMI2
244
G7
E5 Gen
20 Env
G4
10 G1 E6
PC1 (56.3%)
E1
E7 G5 G8
0 G6
G9
G3
−10 E2
G2
E4
−20
G10 E3
245
Gen E5
20 Env
G5
G4
10 G10
PC2 (26.2%)
E4
G9 G6
E3 E2 G1
0 E7
G8
−10 G3
G7
E6
−20 G2
E1
−20 −10 0 10 20
PC1 (56.3%)
Figure 66: Biplot do PC1 com o PC2 gerado pela função [Link]()
[Link](AMMI,
type = 1,
[Link] = "tl")
biplot WAAS x GY
[Link](AMMI,
type = 3,
[Link] = "Produtividade de grãos (Mg/ha)",
[Link] = "Média ponderada dos escores absolutos")
246
Média ponderada dos escores absolutos
I E5 II
Gen
Env
20 G10
G7
E3
15 E4 G2 G4
E1
E6
10 G3
E2
G1
5 G5 G9
E7 G8
III G6 IV
247
genótipos dentro do quadrante III têm baixa produtividade, mas podem ser considerados
estáveis devido aos baixos valores de WAAS. Quanto menor esse valor, mais estável o genótipo
pode ser considerado. Os ambientes incluídos neste quadrante podem ser considerados pouco
produtivos e com baixa capacidade de discriminação. Os genótipos dentro do quadrante
IV são os genótipos que podem ser considerados como um genótipo “ideal” devido à alta
magnitude da variável resposta e alta estabilidade (valores mais baixos da WAAS).
A função [Link]() pode ser usada para predizer a variável resposta em uma tabela
dupla entrada (por exemplo, a produção de g genótipos em * n * ambientes ) com base no
modelo AMMI. Esta predição é baseada no número de termos multiplicativos declarados na
função. Se naxis = 0 for declarado, somente os efeitos principais (AMMI0) serão usados.
Neste caso, a média predita será o valor predito na ANOVA convencional. Se naxis = 1 o
modelo AMMI1 (com um termo multiplicativo) é usado para predizer a variável resposta.
Se naxis = min (gen-1; env-1), o AMMIF é ajustada e o valor predito será a média de
R repetições do genótipo i no ambiente j. O número de eixos a serem usados deve ser
cuidadosamente escolhido.
• Predizendo o rendimento utilizando 2 termos multiplicativos
options(digits = 4)
predictAMMI = [Link](interaction,
resp = "RG",
naxis = 2)
head(predictAMMI, n = 10)
248
4.11 Modelos mistos na avaliação de MET
Desde a década de 1990, os modelos mistos vêm ganhando cada vez mais espaço na avaliação de
MET, pois permitem a estimativa de parâmetros genéticos e ambientais, bem como a predição
dos valores genotípicos de forma não-viciada (Smith, Cullis, and Thompson 2005). Da mesma
forma, modelos mistos reduzem os ruídos de análises realizadas com dados desbalanceados e
também de variáveis que não assumem aditividade, características frequentemente observadas
em MET (Hu 2015). Na avaliação dos dados oriundos de MET é de interesse do pesquisador
predizer o “verdadeiro” rendimento wij dado os rendimentos observados yij . Quando um
fator é considerado fixo, as inferências são limitadas apenas aos níveis testados deste fator
e os efeitos são estimados por Best Linear Unbiased Estimator, ou BLUE , ou seja, pela
média aritmética. Para efeitos aleatórios, onde deseja-se expandir as inferências para uma
população de tratamentos (ou ambientes), a predição é realizada por Best Linear Unbiased
Predictor, ou BLUP (Henderson 1975).
A função WAASB() do pacote WAASB será utilziada para a análise dos dados de nosso exemplo
utilizando modelos mistos. Para isto, o seguinte modelo será considerado:
y = Xb + Zg + W i + ε
onde y é o vetor de observações; b é o vetor dos efeitos fixo de bloco (bloco dentro de
ambiente), somados a média geral; g é o vetor dos efeitos genotípicos (aleatórios), com
g ∼ N M V (0; I σ̂ 2g ); i é o vetor dos efeitos da GEI (aleatório) com i ∼ N M V (0; I σ̂ 2i ); ε é
o vetor de erros aleatórios, com ε ∼ N M V (0; I σ̂ 2ε ). X, Z e W representam as matrizes
design conhecidas que associam os parâmetros desconhecidos b, g e i, respectivamente, para
o vetor y de dados. σ̂ 2g , é a variância genotípica; σ̂ 2i é a variância da interação; e σ̂ 2ε é a
variância residual. A estimativa dos componentes de variância pode ser realizada sem maiores
problemas utilizando ANOVA convencional quando os dados são balanceados. Quando
este pressuposto não é cumprido, a estimativa baseada em Restricted Maximum Likelihood
(REML) utilizando o algoritmo Expectation-Maximization (Dempster, Laird, and Rubin
1977) é a mais indicada.
# Função para predição via modelos mistos
misto = WAASB(interaction,
resp = "RG",
prob = 0.95)
249
## logLik -1559 -1.555e+03 -1562 -1.555e+03
## deviance 3118 3.109e+03 3124 3.109e+03
## Chisq NA 9.066e+00 NA 1.482e+01
## Chi Df NA 1.000e+00 NA 1.000e+00
## Pr(>Chisq) NA 2.605e-03 NA 1.185e-04
O teste LRT indicou diferenças significativas para os efeitos aleatórios de genótipo e ambiente.
Assim, a utilização de modelos mistos é indicada para predição do rendimento em nosso
exemplo.
print(misto$ESTIMATES)
## Parameters Values
## 1 GEI variance 52014.443913 (24.49% of fenotypic variance.)
## 2 Genotypic variance 34237.260292 (16.12% of fenotypic variance.)
## 3 Residual variance 126135.452823 (59.39% of fenotypic variance.)
## 4 Phenotypic variance 212387.15702799
## 5 Heritability 0.161202121498193
## 6 GEIr2 0.2449039039872
## 7 Heribatility of means 0.661262156422673
## 8 Accuracy 0.813180273016183
## 9 rge 0.291970104197959
## 10 CVg 6.00648337213627
## 11 CVr 11.5289395532015
## 12 CV ratio 0.520991834888083
No objeto ESTIMATES, além dos componentes de variância para os efeitos aleatórios declarados,
alguns importantes parâmetros genéticos são mostrados. Heribatility é a herdabilidade no
sentido amplo (hg ) estimada por hg = σg / σg2 + σi2 + σe2 onde (σg2 ) é a variância genotípica;
2 2 2
250
4.11.3 Detalhes sobre a análise
options (digits = 4)
print(misto$Details)
## Parameters Values
## 1 WgtResponse 50
## 2 WgtWAAS 50
## 3 Ngen 10
## 4 Nenv 7
## 5 OVmean 3080.5568
## 6 Min 1758.6667 (Genotype G7 in E4 )
## 7 Max 4812.0988 (Genotype G8 in E6 )
## 8 MinENV Environment E4 (2507.1)
## 9 MaxENV Environment E6 (3910.5)
## 10 MinGEN Genotype G7 (2872.3913)
## 11 MaxGEN Genotype G8 (3539.9741)
As seguintes informações são detalhadas nesta saída. WgtResponse é o peso da variável
resposta na estimativa da WAASBY; WgtWAAS é o peso para a estabilidade ; Ngen é
o número de genótipos; Nenv é o número de ambientes; OVmean é a média geral; Min
é o mínimo valor observado (retornando o genótipo e ambiente); Max é o máximo valor
observado; MinENV é o ambiente com a menor média; MaxENV é o ambiente com a
maior média; MinGEN é o genótipo com a menor média; MaxGEN é o genótipo com a
maior média.
251
G8
G3
G9
G4
Genotypes
G1
G2
G10
G6
Average
G5 Above
Below
G7
h2g = (σ̂ i +E σ̂ g )/(σ̂ i + σ̂ ε +E σ̂ g ).. Predicted é a média predita por ĝi + µ onde µ é a média
2 2 2 2 2
geral. LL e UL são os limites inferiore e superior, respectivamente estimado por (ĝi + µ) ± CI.
CI é o intervalo de confiança
q para predição BLUP, assumindo uma dada probabilidade de
erro, onde CI = t × ((1 − Ac) × σg2 ) onde t é o valor t-Student para um teste bilateral a
uma dada probabilidade de erro; Ac é a acurácia de seleçao; e σg2 é a variância genotípica.
• plotando os BLUPs preditos para genótipos
[Link](misto,
[Link] = c(0.85, 0.15))
252
## 2 E1 G10 -255.71 -84.20 -339.91 2181 2022 2339
## 3 E1 G2 240.25 -53.38 186.86 2708 2549 2866
## 4 E1 G3 97.95 190.77 288.72 2809 2651 2968
## 5 E1 G4 28.14 17.01 45.14 2566 2407 2724
## 6 E1 G5 -102.85 -146.44 -249.29 2271 2113 2430
## 7 E1 G6 -44.94 -138.62 -183.56 2337 2178 2496
## 8 E1 G7 222.60 -149.49 73.11 2594 2435 2752
## 9 E1 G8 26.96 329.93 356.89 2878 2719 3036
## 10 E1 G9 -135.61 50.47 -85.14 2436 2277 2594
A saída acima os BLUPs estimados para as combinações genótipo x ambiente. BLUPg é o
efeito genotípico, descrito acima; BLUPge é o efeito genotípico do genótipo i no ambiente j
(ĝij ) estimado por ĝij = h2g (ȳi. − ȳ.. ) + h2ge (yij − ȳi. − ȳ.j + ȳ.. ), onde h2ge é o efeito shrinkage
para a interação GE, estimado por h2ge = σ̂ 2i /(σ̂ 2i + σ̂ 2ε ); BLUPg+ge é BLU Pg + BLU Pge ;
Predicted é a média predita (ŷij ) estimada por ŷij = ȳ.j + BLU Pg+ge .
253
# Imprimindo a saída
print(resultsval)
## MODEL mean
## 11 BLUP 424.0
## 2 AMMI1 429.8
## 3 AMMI2 430.5
## 4 AMMI3 437.7
## 1 AMMI0 438.4
## 5 AMMI4 444.5
## 6 AMMI5 446.7
## 7 AMMIF 447.5
• Plotando os valores de RMSE
# Concatenando as 500 estimativas de RMSE de cada modelo
resultsplot = list(RMSE = rbind(valida$RMSE,
valida2$RMSE))
# Plotando os valores
[Link](resultsplot,
violin = TRUE,
[Link] = "gray75")
254
BLUP
AMMIF
AMMI5
Tested models
AMMI4
AMMI3
AMMI2
AMMI1
AMMI0
Os métodos AMMI e BLUP são dois dos métodos estatísticos mais utilizados para analisar
dados de EMA. Tanto o BLUP quanto o AMMI podem ser vistos como dois métodos
estatísticos distintos para alcançar o mesmo objetivo: distinguir o padrão da GEI do erro
aleatório. A análise AMMI retém a maior parte do padrão GEI nos primeiros termos
multiplicativos resultantes da SVD da matriz de efeitos residuais não aditivos, enquanto
a maior parte do erro aleatório é retido nos últimos termos. Esse método, no entanto,
tem limitações conhecidas inerentes aos modelos de efeitos fixos, incluindo a dificuldade no
tratamento da heterogeneidade de variância experimentos desbalanceados. Por outro lado,
o BLUP inicialmente estima os efeitos do modelo ANOVA e, em seguida, atribui pesos a
esses efeitos. Devido ao seu efeito shrinkage, é um dos modelos de predição mais precisos
e também pode ser usado com dados ausentes e variância heterogênea. Uma limitação do
BLUP na análise de EMA, entretanto, é a dificuldade em modelar e interpretar os padrões
da GEI. Piepho (1994) sugeriu “[. . . ] Em trabalhos futuros, pode ser promissor combinar os
princípios de AMMI e BLUP [. . . ]”.
255
4.13.1 Decomposição por valores singulares da matriz BLUP
# Imprimindo os escores
print(escmisto$model[, c(1:10)])
256
## 1 1 875489 54.220 54.22
## 2 2 410116 25.399 79.62
## 3 3 200368 12.409 92.03
## 4 4 75143 4.654 96.68
## 5 5 28849 1.787 98.47
## 6 6 24740 1.532 100.00
• Plotando os autovalores da matriz M
[Link](escmisto,
[Link] = 14,
[Link] = 14,
[Link] = "Número de termos multiplicativos",
[Link] = "Autovalor")
750000
Autovalor
500000
250000
0
1 2 3 4 5 6
Número de termos multiplicativos
A saída acima mostra os autovalores e a proporção da variância explicada por cada eixo do
componente principal da matriz de efeitos de interação BLUP.
257
4.13.2 Interpretação conjunta da estabilidade e produtividade.
[Link](escmisto,
type = 3,
[Link] = "Produtividade de grãos (Mg/ha)",
[Link] = "Média ponderada dos escores absolutos")
Média ponderada dos escores absolutos
I II
400 E5 Gen
Env
G10
G7
E3
300 G4
E4 G2 E6
E1
200
G3
G1 E2
G9
100 E7
G5
G6 G8
III IV
258
Figure 69: Biplot WAAS x RG (a) e WAASB x RG (b)
A função WAASBratio() considera tanto a estabilidade (média ponderada dos escores absolutos
obtidos da SVD da matriz de efeitos de interação BLUP) quanto a produtividade para a
classificação dos genótipos, considerando o seguinte modelo:
h i h i
WGY × GYi
GYmax
× 100 + WS × 100 − W AASBi
W AASBmin
W AASBYI =
WGY + WS
onde W AASBYi é a média ponderada dos escores absolutos e da produtividade do genótipo
i; WGY é o peso para o rendimento de grãos; GYi é o rendimento médio de grãos do
genótipo i ; GYmax é o maior rendimento médio de grãos entre os genótipos; WS é o peso
para a estabilidade; W AASBi é a média ponderada dos escores absolutos do genótipo i; e
W AASBmin é o menor valor da WAASB.
Esta função fornece a opção de atribuir pesos para estabilidade e produtividade na classificação
dos genótipos. Isso é importante dependendo do objetivo de uma estratégia de seleção. Por
exemplo, se o objetivo de um programa de melhoramento é selecionar um genótipo com alto
rendimento (independentemente do desempenho de estabilidade), o genótipo com a primeira
classificação em uma relação WAASB/GY = 0/100 deve ser selecionado. A reciproca é
verdadeira. Com o objetivo de selecionar um genótipo altamente estável (independentemente
da produtividade), deve-se selecionar aquele genótipo com a primeira classificação em uma
relação WAASB/GY = 100/0. Por padrão, o incremento na relação WAASB/GY é igual a 5
e os valores WAASBY são salvos quando a relação WAASB/GY é igual a 50/50. Portanto.
vinte e uma combinações diferentes são calculadas, e para cada combinação, os genótipos são
classificados em relação aos valores de WAASBY.
No exemplo a seguir, vamos supor que queremos obter as classificações alterando a relação
259
WAASB/GY em 10% em cada cenário e plotar os valores de WAASBY considerando uma
relação WAASB / GY igual a 30/70. Importante! O ARGUMENTO saveWAASY DEVE
SER DIVISÍVEL POR increment!
WAASBYratio = WAASBYratio(interaction,
resp = "RG",
increment = 10,
saveWAASY = 30)
• Imprimindo os valores da WAASBY
print(WAASBYratio$WAASY)
260
G8
G3
G9
G4
Genótipo
G1
G2
G10 Average
G6
Above
G5
Below
G7
85 90 95 100
WAASBY (%)
Figure 70: Índice WAASBY proposto para a classificaçaõ dos genotipos de acordo com pesos atribuídos para
produtividade e estabilidade
[Link](WAASBYratio,
type = 1,
[Link] = "Classificação",
[Link] = "Número de termos multiplicativos",
[Link] = "Genótipos")
Este heatmap mostra a classificação dos genótipos dependendo do número termos multiplica-
tivos usados para estimar o índice WAASB. Um dendrograma baseado na distância euclidiana
(linha e coluna) é usado para formação dos grupos.
• Imprimindo o ranqueamento dos genótipos dependendo do peso na relação WAASB/GY.
print(WAASBYratio$hetcomb)
## 100/0 90/10 80/20 70/30 60/40 50/50 40/60 30/70 20/80 10/90 0/100
## G1 5 5 4 4 4 4 4 5 5 5 5
## G10 10 9 9 9 9 9 9 7 7 7 7
## G2 7 8 8 8 8 6 6 6 6 6 6
## G3 6 4 2 2 2 2 2 2 2 2 2
## G4 8 7 7 7 5 5 5 4 4 4 4
## G5 3 6 6 6 7 8 8 9 9 9 9
## G6 1 3 5 5 6 7 7 8 8 8 8
## G7 9 10 10 10 10 10 10 10 10 10 10
## G8 2 1 1 1 1 1 1 1 1 1 1
## G9 4 2 3 3 3 3 3 3 3 3 3
• Heatmap do ranqueamento dos genótipos dependendo do peso na relação WAASB/GY.
261
2 4 6 8 10
Classificação
G1
G3
G9
G5
Genótipos
G8
G6
G10
G7
G2
G4
1PCA
2PCA
3PCA
4PCA
5PCA
6PCA
Figure 71: Ranqueamento dos genótipos dependendo do número de componentes principais considerados no
modelo
262
2 4 6 8 10
Classificação
G4
G2
G1
G5
Genótipos
G6
G7
G10
G3
G9
G8
100/0
90/10
80/20
70/30
60/40
50/50
40/60
30/70
20/80
10/90
0/100
Relação WAASB/RG
Figure 72: Ranqueamento dos genótipos dependendo do peso considerado para a produtividade e estabilidade.
[Link](WAASBYratio,
type = 2,
[Link] = "Classificação",
[Link] = "Relação WAASB/RG",
[Link] = "Genótipos")
263
Referências
264
An Evaluation.” J. R. Stat. Soc. Ser. C Appl. Stat. 28: 100–108. doi:10.2307/2346830.
Henderson, C.R. 1975. “Best Linear Unbiased Estimation and Prediction Under a Selection
Model.” Biometrics 31: 423–47. doi:10.2307/2529430.
Hoerl, A.E., and R.W. Kennard. 1970. “Ridge Regression: Biased Estimation for Nonorthog-
onal Problems.” Technometrics 12: 55–67. doi:10.1080/00401706.1970.10488634.
———. 1976. “Ridge Regression Iterative Estimation of the Biasing Parameter.” Commun.
Stat. Theory Methods 9: 77–88. doi:10.1080/03610927608827333.
Hu, X. 2015. “A Comprehensive Comparison Between Anova and Blup to Valuate Location-
Specific Genotype Effects for Rape Cultivar Trials with Random Locations.” F. Crop. Res.
179: 144–49. doi:10.1016/[Link].2015.04.023.
Hubert, L., and P. Arabie. 1985. “Comparing Partitions.” Journal of Classification 2:
193–218. doi:10.1007/BF01908075.
Krzanowski, W. J., and Y. T. Lai. 1988. “A Criterion for Determining the Number of Groups
in a Data Set Using Sum-of-Squares Clustering.” Biometrics 27: 23–34. doi:10.2307/2531893.
Kutner, M. H., Nachtsheim C.J., Neter J., and W. Li. 2005. Applied Linear Statistical Models.
McGraw-Hill!Irwin.
Lucio, A. D., and B. G. Sari. 2017. “Planning and Implementing Experiments and Analyzing
Experimental Data in Vegetable Crops - Problems and Solutions.” Hortic. Bras. 35 (3):
316–27. doi:10.1590/s0102-053620170302.
Lucio, A. D., Nunes L. F., and F. Rego. 2016a. “Nonlinear Models to Describe Production of
Fruit in Cucurbita Pepo and Capiscum Annuum.” Sci Hortic 193: 286–93. doi:10.1590/s0102-
053620160409.
———. 2016b. “Nonlinear Regression and Plot Size to Estimate Green Beans Production.”
Hortic. Bras. 34 (4): 507–13. doi:10.1590/s0102-053620160409.
Lucio, A. D., Sari B. G., Rodrigues M., Bevilaqua L. M., Voss H. M. G., Copetti D., and
M. Fae. 2016. “Nonlinear Regression and Plot Size to Estimate Green Beans Production.”
Cienc. Rural 46 (2): 233–41. doi:10.1590/0103-8478cr20150067.
Milligan, G. W., and M. C. Cooper. 1985. “An Examination of Procedures for Determining
the Number of Clusters in a Data Set.” Bioinformatics 50: 159–79. doi:10.1007/BF02294245.
Mojena, R. 1977. “Hierarchical Grouping Methods and Stopping Rules: An Evaluation.” The
Computer Journal 20: 359–63. doi:10.1093/comjnl/20.4.359.
Niles, H. E. 1922. “Correlation, Causation and Wright’s Theory of ‘Path Coefficients’.”
Genetics 7: 258–73.
Olivoto, T. 2018a. CursoR: Curso R Do Grupo Experimentacao Da Ufsm-Sm. https:
//[Link]/TiagoOlivoto/cursoR.
———. 2018b. WAASB: Weighted Average of Absolute Scores from Svd of Blup-Interaction
Effects. [Link]
Olivoto, T., and B. G. Sari. 2018a. “Data for Two-Way Analysis of Variance.” Mendeley
265
Data V1. doi:10.17632/stwhhd6tj3.1.
———. 2018b. “Data from a Maize Experiment for Multivariate Analysis.” Mendeley Data
V1. doi:10.17632/42xhfv7bmj.1.
Olivoto, T., Lucio A. D. C., Souza V. Q., Nardino M., Diel M. I., Sari B. G., Krysczun D.
K., Meira D., and C. Meier. 2018. “Confidence Interval Width for Pearson’s Correlation
Coefficient: A Gaussian-Independent Estimator Based on Sample Size and Strength of
Association.” Agronomy Journal 110: 1–8. doi:10.2134/agronj2017.09.0566.
Olivoto, T., Nardino M., Carvalho I. R., Follmann D. N., Ferrari M., Szareski V. J., and Souza
Pelegrin A. J. 2017. “REML/Blup and Sequential Path Analysis in Estimating Genotypic
Values and Interrelationships Among Simple Maize Grain Yield-Related Traits.” Gen. Mol.
Res. 12: 93–103. doi:10.5897/AJAR2016.11799.
Olivoto, T., Souza V. Q., Nardino M., Carvalho I. R., Ferrari M., Pelegrin A. J., Szareski V.
J., and D. Schmidt. 2017. “Multicollinearity in Path Analysis: A Simple Method to Reduce
Its Effects.” Agron. J. 109: 131–42. doi:10.2134/agronj2016.04.0196.
Pearson, K. 1920. “Notes on the History of Correlation.” Biometrika 13: 25–45.
Piepho, H.P. 1994. “Best Linear Unbiased Prediction (Blup) for Regional Yield Trials: A
Comparison to Additive Main Effects and Multiplicative Interaction (Ammi) Analysis.” Theor.
Appl. Genet. 89 (5): 647–54. doi:10.1007/BF00222462.
Pinheiro, J. C., and D. M. Bates. 2000. Mixed-Effects Models in S an S-Plus. Springer.
Rencher, A.C., and G. B. Schaalje. 2008. Linear Models in Statistics. John Wiley & Sons.
Sari, B. G. 2018. “Parametros Biologicos Da Producao de Tomateiro via Modelo Logistico.”
PhD thesis, Santa Maria, RS, Brasil: Universidade Federal de Santa Maria.
Schenider, P. R., Schenider P. S. P., and C. A. M. Souza. 2009. Analise de Regressao Aplicada
a Engenharia Florestal. FACOS, UFSM.
Scott, A. J., and M. J. Symons. 1971. “Clustering Methods Based on Likelihood Ratio
Criteria.” Biometrics 27: 387–97. doi:10.2307/2529003.
Seber, G. A. F, and C. J. Wild. 2003. Nonlinear Regression. John Wiley & Sons.
Senoglu, B., and M. L. Tiku. 2001. “Analysis of Variance in Experimental Design
with Nonnormal Error Distributions.” Commun. Statist.-Theory Meth. 30 (7): 1335–52.
doi:[Link]/10.1081/STA-100104748.
Shukla, G. K. 1972. “Some Statistical Aspects of Partitioning Genotype-Environmental
Components of Variability.” Heredity 29: 237–45. doi:10.1038/hdy.1972.87.
Smith, A.B., Cullis B.R., and R. Thompson. 2005. “The Analysis of Crop Cultivar Breeding
and Evaluation Trials: An Overview of Current Mixed Model Approaches.” J. Agric. Sci.
143: 449–62. doi:10.2307/2334381.
Suzuki, R., and H. Shimodaira. 2006. “Pvclust: An R Package for Assessing the Uncertainty
in Hierarchical Clustering.” Bioinformatics 22: 1540–2. doi:10.1093/bioinformatics/btl117.
Wricke, G. 1962. “On a Method of Understanding the Biological Diversity in Field Research.”
266
Z. Pfl.-Zucht 47: 92–146.
Wright, S. 1921. “Correlation and Causation.” J. Agr. Res. 20: 557–85.
———. 1923. “The Theory of Path Coefficients a Reply to Niles’s Criticism.” Genetics 8:
239–55.
Yan, W., Kang M. S., Ma B., Woods S., and P. L. Cornelius. 2007. “GGE Biplot
Vs. Ammi Analysis of Genotype-by-Environment Data.” Crop Science 47: 641–53.
doi:10.2135/cropsci2006.06.0374.
Yates, F., and W. G. Cochran. 1938. “The Analysis of Groups of Experiments.” The Journal
of Agricultural Science 28: 556–80. doi:10.1017/S0021859600050978.
267
Índice remissivo
.BMP, 41 CV, 46
.EPS, 41
.JPEG, 41 [Link](), 12, 22
.PDF, 41 DBC, 59, 78, 88, 178, 240
.SGV, 41 dendrograma, 215, 217, 219, 220, 222, 223
.TIFF, 41 det(), 20
determinante da matriz, 191
agrupamento, 92, 215, 222, 228 [Link](), 44
AMMI, 228, 238–240, 247, 252, 254, 255, 257 diag(), 20
amostras pareadas, 58 DIC, 59, 62, 88, 240
análise multivariada, 208, 228 diretório, 5
ANOVA, 59, 105, 239, 241, 248 distdend(), 216, 219, 222
anova(), 146 distribuição normal, 48
aov, 59 doses ótimas, 130
aov(), 29 DPI, 41
[Link](), 18
[Link](), 18 eigen(), 20
atualização, 8 erro puro, 154
estabilidade, 229, 235, 236, 245, 250, 257
backward, 149 ExpDes, 62, 92
biplots, 210, 213, 214, 238, 245, 257 exportar imagens, 41
BLUE, 248
BLUP, 248, 250, 252, 254 falta de ajuste, 72, 154, 155
bmp(), 44 [Link](), 92, 107, 120
Box-Cox, 83 fator de inflação de variância, 192, 199, 202
boxcox(), 83 fatores qualitativos, 63
boxplot(), 35 fatores quantitativos, 69
bty, 29 for(), 21
forward, 148
causa e efeito, 191 funções, 16
cbind(), 11 function(), 16, 46
citação de pacotes, 9
class(), 17 [Link](), 232
color, 27 ggplot(), 50, 76
componentes de variância, 249 ginv(), 18, 144
[Link](), 50 gráfico de contorno, 136
console, 5 gráfico de superfície, 132
[Link](), 181 graficos(), 73
correlação, 148, 151, 176, 178, 186, 187
correlação parcial, 188 hist(), 32
corrplot(), 184 homocedasticidade, 84, 88
[Link](), 183 importar planílias, 25
crd(), 62 imputs, 5
cursoR, 89 interação, 88, 92, 116, 119, 121, 126, 228, 255
curve(), 35
268
intervalo de confiança, 50, 76 pca(), 209
pch, 27
jpeg(), 44 pdf(), 42, 44
kmeans(), 228 plot, 172
[Link], 47 plot(), 27, 29, 32, 35
[Link](), 105
library, 5 [Link], 120, 124
lines(), 32 [Link](), 103
lista, 14 [Link], 131
lm(), 59, 145 plotres, 111
locator(), 86 plotres(), 65, 102
log-verossimilhança, 86 png(), 44
loop(), 21 poder do teste, 83
loops, 21 point(), 29
LRT, 249 polinômio, 72
lwd, 27 pontos influentes, 158
postdiscritive sucess, 239
mínimos quadrados, 143, 162, 168 [Link](), 247
Máxima eficiência econômica, 107 predictive sucess, 240
Máxima eficiência técnica, 106 pressuposições, 83
média, 45 pressupostos, 45, 59, 63, 83, 84, 88, 144, 165
main(), 27
matrix(), 11, 22 qqnorm(), 32
matrizes, 10 qualitativo, 88, 114
mean(), 45 quantitativo, 88, 114
median(), 45
mediana, 45 rbd, 80
multicolinearidade, 144, 145, 190–192, 195, rbind(), 11
197, 199, 202, 203 [Link], 24
regressão, 105, 113
número de condição, 191, 199 regressão múltipla, 141
names(), 20, 39 regressão simple, 141
nls(), 162, 163 REML, 248
normalidade, 48, 83, 88 require, 5
resíduos, 25, 29, 32, 65, 78, 83, 102, 143, 147,
operações matemáticas, 18 156, 157, 164
outputs, 5 [Link](), 168
pacotes, 9 scan(), 24
par, 27 Scott-Knott, 68
parâmetros, 59, 141, 143–146, 162, 163, 168, sd(), 46
170, 191 seleção de variáveis, 192, 202, 207, 219
parâmetros genéticos, 248, 249 Shapiro-Wilk, 80
parcelas subdivididas, 139 [Link], 47
[Link](), 188 sink(), 41
pass(), 104 sistema de equações normais, 143, 144, 162,
[Link](), 195, 199, 202 191
[Link](), 204
269
solve(), 18
start, 162
[Link](), 46
stepAIC, 152
stepwise, 151, 192, 202
subset, 27
subset(), 13
summary, 146
summary(), 163
[Link](), 193, 197
supresp(), 126, 131
t(), 18
[Link](), 50
tamanho de amostra, 187
testes de hipótese, 54
tiff(), 44
transformação de dados, 83
Tukey, 68, 120
type, 27
[Link](), 240
var, 46
variáveis dummy, 170, 175
vetores, 9
[Link](), 239
WAASB(), 206, 248
WAASBratio(), 258
Welch-Satterthwaite, 56
[Link](), 39
[Link](), 41
xlab, 27
ylab, 27
270