Baixe o app para aproveitar ainda mais
Prévia do material em texto
Computação Estatística em R by <- “Anderson Rodrigo da Silva” Plano de curso Neste curso você vai conhecer o ambiente R para computação estatística e realizar desde análises básicas até alguns dos principais métodos de análise multivariada utilizados para análise de dados obtidos em estudos agrícolas. Além disso, você aprenderá a linguagem R de programação para construir suas próprias funções. Exercícios dentro e fora de sala são parte essencial do curso. Título: Computação Estatística em R Edição: 2 Datas: 28/11 a 09/12/2016 Horário: 08:00 - 12:00 (e 14:00 - 17:00, para atendimento individual) Local: Depto. Solos, ESALQ/USP, Piracicaba - SP Programa de estudo: • Instalação, apresentação do R e motivação • Nuts and bolts - Principais operadores e funções - Objetos e classes de objetos - Subsetting - Importação/exportação de dados - Análise exploratória de dados: medidas descritivas + gráficos - O que é um PACOTE? - R commander • Covariância e correlação - Diagramas de dispersão + draftsman - Covariância, correlação (Pearson, Spearman) - Matrizes de correlação e representação gráfica de matrizes • Regressão - Regressão linear simples iv - Regressão linear múltipla + superfície de resposta - Regressão não linear • ANOVA + Experimentação - Delineamentos básicos - Esquemas experimentais - Comparações de médias • Métodos multivariados (com o livro) - Autovalores e autovetores - Componentes principais, Biplot e PCR - Análise de cluster - MANOVA e Variáveis discriminantes canônicas - Elípses de confiança • Miscelânea - Integração, integração numérica, diferenciação - O pacote soilphysics e o RcmdrPlugin.soilphysics • A linguagem R: aprendendo a programar - Estruturas de controle de fluxo - Desenvolvendo funções Pré-requisitos: Conhecimentos básicos de estatística. Critérios de avaliação: Ao final do curso os participantes serão submeti- dos a uma avaliação teórico/prática. Serão considerados aprovados aqueles com mínimo de 75% de frequência e nota acima de 70% na avaliação. Sugestões de leitura: • Chambers, J.M. (1998) Programming with Data. New York: Springer. • Mello & Petenelli (2013) Conhecendo o R: uma visão mais que estatística. Viçosa: Editora UFV. • Silva, A.R. (2016) Métodos de análise multivariada em R. Pi- racicaba: Fealq. Instrutor: Anderson R Silva Instituto Federal Goiano, Campus Urutaí E-mail: anderson.silva@ifgoiano.edu.br c© 2016 Silva, A.R. Computação Estatística em R anderson.silva@ifgoiano.edu.br Sobre o R O R é um ambiente para computação e uma linguagem de programação orientada a objetos que permite a manipulação de dados, realização de cálculos e confecção de gráficos (Peternelli & Mello, 2013). Além dos pro- cedimentos estatísticos, o R permite criar funções em linguagem própria, fazer operações matemáticas simples, manipulação de vetores e matrizes O software pode ser obtido gratuitamente em www.r-project.org, dis- ponível nas plataformas Linux, MacOS X ou Windows. Os recursos do R, tais como funções, dados, exemplos, etc estão todos armazenados em pacotes. Tais recursos ficam disponíveis para utilização apenas quando o pacote é carregado. Não obstante, quando da instalação do R, alguns pacotes básicos já são automaticamente instalados e carrega- dos, tais como ‘base’, ‘stats’, ’graphics’ e outros. Para saber quais pacotes já estão instalados, digite no console do R: library(). Para carregar um pacote instalado, use o comando: library(nome do pacote). Para insta- lar um pacote, use o comando: install.packages(“nome do pacote”). Em apêndice você vai encontrar uma lista com os pacotes e conjuntos de dados utilizados neste curso. Para saber detalhes sobre um pacote ou uma função de um pacote já carregado, leia a documentação (help). Para tal, digite: help(nome do pacote) ou help(nome da função). O software R em si constiste do R console, onde input/output são realizados. Entretanto, é muito mais comum a utilização de IDEs, edi- tores/processadores de texto para a construção de rotinas (scripts), com as quais uma série de comandos podem ser armazenados e enviados ao R console. No R há um editor padrão básico, o R editor. Mas ou- tros editores gratuitos mais sofisticados podem ser utilizados. O Rstudio (https://www.rstudio.com/) é amplamente utilizado. Outra opção de IDE é o Tinn-R. Para uma introdução ao uso do R, consulte Peternelli & Mello (2013) ou utilize o manual em .pdf An Introduction to R, disponível na ajuda do software. Além disso, há várias fontes para aprendizado online, como foruns, blogs, tutoriais no youtube etc. www.r-project.org https://www.rstudio.com/ Sumário I R - NUTS AND BOLTS 1 1 Objetos 3 1.1 Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Classes dos objetos . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 Criando vetores . . . . . . . . . . . . . . . . . . . . . 4 1.3.2 Coerção . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.3 Subsetting . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Fatores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5 Matrizes e arrays . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5.1 Criando matrizes e arrays . . . . . . . . . . . . . . . 6 1.5.2 Operações com matrizes . . . . . . . . . . . . . . . . 8 1.5.3 Subsetting . . . . . . . . . . . . . . . . . . . . . . . . 8 1.6 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.7 data.frame() . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.7.1 Subsetting/Attaching . . . . . . . . . . . . . . . . . . 9 2 Importação/exportação de dados 11 2.1 Importação de dados . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Exportação de dados . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Exercício . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 II MÉTODOS UNIVARIADOS 15 3 Análise exploratória de dados 17 3.1 Distribuição de frequências . . . . . . . . . . . . . . . . . . 17 3.2 Estatísticas descritivas . . . . . . . . . . . . . . . . . . . . . 19 3.2.1 Medidas de posição . . . . . . . . . . . . . . . . . . . 19 3.2.2 Medidas de dispersão . . . . . . . . . . . . . . . . . 19 vii viii Sumário 3.2.3 Quantis amostrais . . . . . . . . . . . . . . . . . . . 19 3.2.4 Trabalhando com fatores . . . . . . . . . . . . . . . 20 3.2.5 Outras funções úteis . . . . . . . . . . . . . . . . . . 20 3.2.6 str/summary . . . . . . . . . . . . . . . . . . . . . . 20 3.2.7 Box plot . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4 Covariância e correlação 23 4.1 Covariância e correlação de Pearson . . . . . . . . . . . . . 23 4.2 Diagramas de dispersão . . . . . . . . . . . . . . . . . . . . 23 4.3 Teste da correlação . . . . . . . . . . . . . . . . . . . . . . . 24 4.4 Correlações não paramétricas . . . . . . . . . . . . . . . . . 25 4.5 Gráfico de draftsman . . . . . . . . . . . . . . . . . . . . . . 25 4.6 Matrizes de covariância e de correlação . . . . . . . . . . . . 25 4.7 Representação gráfica de matrizes de correlação . . . . . . . 26 4.8 Inferência sobre matrizes de correlação . . . . . . . . . . . . 26 4.8.1 Testes simultâneos . . . . . . . . . . . . . . . . . . . 26 4.8.2 Homogeneidade de matrizes de covariância . . . . . 28 4.9 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5 Regressão 31 5.1 Regressão linear simples . . . . . . . . . . . . . . . . . . . . 31 5.1.1 Coeficiente de determinação . . . . . . . . . . . . . . 32 5.1.2 Independência e normalidade residual . . . . . . . . 32 5.1.3 Análise de variância da regressão . . . . . . . . . . . 33 5.1.4 Teste t . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.1.5 Intervalo de confiança e de predição . . . . . . . . . 34 5.2 Regressão linear múltipla . . . . . . . . . . . . . . . . . . . 35 5.3 Stepwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.4 Construíndo superfícies de resposta . . . . .. . . . . . . . . 37 5.5 Regressão não linear . . . . . . . . . . . . . . . . . . . . . . 38 5.6 Linear Response Plateau . . . . . . . . . . . . . . . . . . . . 40 5.7 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6 Análise de variância e delineamentos experimentais 45 6.1 One-way ANOVA . . . . . . . . . . . . . . . . . . . . . . . . 45 6.2 Testando a homogeneidade de variâncias . . . . . . . . . . . 46 6.3 Two-way ANOVA . . . . . . . . . . . . . . . . . . . . . . . 47 6.4 O teste da aditividade . . . . . . . . . . . . . . . . . . . . . 48 6.5 A precisão experimental: CV vs. IV . . . . . . . . . . . . . 48 6.6 Exercício . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 c© 2016 Silva, A.R. Computação Estatística em R 7 Procedimentos de comparações múltiplas de médias 51 7.1 Teste t para contrastes . . . . . . . . . . . . . . . . . . . . . 51 7.2 Teste LSD de Fisher . . . . . . . . . . . . . . . . . . . . . . 52 7.3 A correção de Bonferroni . . . . . . . . . . . . . . . . . . . 53 7.4 Teste HSD de Tukey . . . . . . . . . . . . . . . . . . . . . . 54 7.5 Teste SNK . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.6 O critério de Scott-Knott . . . . . . . . . . . . . . . . . . . 54 7.7 Escolhendo o teste . . . . . . . . . . . . . . . . . . . . . . . 55 7.8 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 8 Experimentos multifatores 57 8.1 Estruturas dos fatores, tipos de efeito e interação . . . . . . 57 8.2 Experimentos fatoriais . . . . . . . . . . . . . . . . . . . . . 58 8.3 Fatoriais com tratamentos adicionais . . . . . . . . . . . . . 60 8.4 Experimentos em parcelas subdivididas . . . . . . . . . . . 61 8.5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 x Sumário c© 2016 Silva, A.R. Computação Estatística em R Parte I R - NUTS AND BOLTS 1 Capítulo 1 Objetos Este capítulo inicial trata basicamente da criação, manipulação e checagem de objetos no R. 1.1 Tipos de dados O R possui basicamente os seguintes tipos ou classes de dados: • numeric (números reais) • integer • complex • character (valores nominais, não numéricos) • logical (TRUE/FALSE) Exemplo: podemos definir o objeto ‘a’ como sendo o valor numérico 2.7; isso é feito no R da seguinte forma: a <- 2.7 ou, de forma equivalente, a = 2.7. Poderíamos ainda definir o objeto ‘a’ como sendo: • um inteiro; exemplo: a <- 3L • um número complexo; exemplo: a <- 0+20i • um valor não numérico; exemplo: a <- ‘Cultivar A’ • um valor lógico; exemplo: a <- TRUE ou a <- FALSE Operações com números no R podem gerar ainda valores especiais, quais sejam: • NaN (Not a Number), obtido por exemplo na divisão: 0/0. 4 Capítulo 1. Objetos • -Inf, Inf, obtido por exemplo nas divisões: -1/0 e 1/0. Valores perdidos, de quaisquer dos tipos de dados anteriores, são repre- sentados por NA (Not Available). 1.2 Classes dos objetos Os diferentes tipos de dados no R apresentam diferentes classes. É possível checar a classe de um objeto por meio da função class(). Por exemplo: seja o objeto a <- 11L, isto é, o inteiro 11; checamos a classe deste objeto da seguinte forma: R> class(a) [1] "integer" De fato, os tipos de dados são em si classes de objetos. Assim, as funções is.numeric(), is.integer(), is.character(), is.complex(), is.logical() também são úteis na checagem de dados. As mesmas retor- nam valores lógicos. Não obstante, objetos mais complexos, envolvendo uma ou mais de uma classe, são comuns em outputs de funções do R. Muitos desses outputs representam uma classe própria, que define ‘o quê’ está contido nesse objeto, como será visto mais adiante. 1.3 Vetores Um vetor é um conjunto de elementos pertencentes a mesma classe. 1.3.1 Criando vetores A função c() (de concatenar) pode ser usada para criar vetores de objetos. Exemplos: R> x <- c(1.2, 1.4, 2.7, 10) # numeric R> x <- c("a", "b", "c") # character R> x <- c(TRUE, FALSE, TRUE, TRUE) # logical R> x <- 11:20L # integer A função vector() também pode ser usada para construir vetores. R> x <- vector("numeric", length = 5L) R> x [1] 0 0 0 0 0 c© 2016 Silva, A.R. Computação Estatística em R Capítulo 1. Objetos 5 1.3.2 Coerção O que aconteceria se misturássemos objetos de classes diferentes nummesmo vetor? R> w1 <- c("a", 1.5, "b", 0.8) R> w2 <- c(4, TRUE, FALSE, 2.2, FALSE) R> w3 <- c(TRUE, "b", "a", FALSE) Extraíndo as classes de cada objeto, encontramos: R> class(w1) [1] "character" R> class(w2) [1] "numeric" R> class(w3) [1] "character" Logo, note que coerção trata-se de uma alteração da classe de alguns dos objetos para a classe comum mais plausível a todos os objetos de um vetor. Por exemplo: em w1 não seria possível transformar os caracteres ‘a’ e ‘b’ num valor númerico, mas seria mais lógico tratar 1.5 e 0.8 como caracteres (valores não numéricos). Em w2, como os valores lógicos TRUE e FALSE são comumemte entendidos como 1 e 0, respectivamente, todo este vetor será tomado como sendo da classe ‘numeric’. Isso explica porque w3 torna-se um vetor de classe ‘character’. 1.3.3 Subsetting Subconjuntos de vetores podem ser extraídos usando o operador [. R> y <- c("a", "b", "z", "k") R> y[1] [1] "a" R> y[2] [1] "b" R> y[2:4] [1] "b" "z" "k" R> y[-1] [1] "b" "z" "k" R> y[c(1, 3)] [1] "a" "z" R> y[-c(1, 3)] [1] "b" "k" R> z <- c(1.3, 1.4, 1, 2.8, 3.9, 4.4, 0.5) R> z[c(2, 3, 4)] [1] 1.4 1.0 2.8 R> z >= 2 [1] FALSE FALSE FALSE TRUE TRUE TRUE FALSE R> z[z >= 2] Computação Estatística em R c© 2016 Silva, A.R. 6 Capítulo 1. Objetos [1] 2.8 3.9 4.4 R> is.na(z) [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE 1.4 Fatores Vetores do tipo factor são usados para representar dados categóricos, or- denados ou não. No R, fatores são especialmente úteis para ajustar modelos de regressão. R> x <- factor(c("macho", "fêmea", "macho", + "fêmea", "fêmea")) R> x [1] macho fêmea macho fêmea fêmea Levels: fêmea macho A ordem dos níveis do fator ‘x’ pode ser ajustada pelo argumento levels. R> x <- factor(c("macho", "fêmea", "macho", + "fêmea", "fêmea"), levels = c("macho", "fêmea")) R> x [1] macho fêmea macho fêmea fêmea Levels: macho fêmea Isso pode ser de fundamental importância na definição do nível base no modelo linear, em especial nos de rank incompleto, em que não há a estimação do efeito do nível base. 1.5 Matrizes e arrays Matrizes são combinações de vetores com uma dimensão definida (linhas e colunas). 1.5.1 Criando matrizes e arrays R> m1 <- matrix(nrow = 3, ncol = 4) R> m1 [,1] [,2] [,3] [,4] [1,] NA NA NA NA [2,] NA NA NA NA [3,] NA NA NA NA R> dim(m1) [1] 3 4 R> m2 <- matrix(data = 1:8, nrow = 4, ncol = 2) c© 2016 Silva, A.R. Computação Estatística em R Capítulo 1. Objetos 7 R> m2 [,1] [,2] [1,] 1 5 [2,] 2 6 [3,] 3 7 [4,] 4 8 R> dim(m2) [1] 4 2 R> m3 <- matrix(c("a", "b", "c", "d"), nrow = 2, + ncol = 2, byrow = TRUE) R> m3 [,1] [,2] [1,] "a" "b" [2,] "c" "d" Matrizes também podem ser criadas combinando vetores com as funções cbind(), rbind(). R> x <- 1:4 R> y <- c(0.5, 0.6, 0.7, 0.8) R> cbind(x, y) x y [1,] 1 0.5 [2,] 2 0.6 [3,] 3 0.7 [4,] 4 0.8 R> rbind(x, y) [,1] [,2] [,3] [,4] x 1.0 2.0 3.0 4.0 y 0.5 0.6 0.7 0.8 Arrays, por sua vez, são combinações de matrizes de mesma dimensão. R> a1 <- array(data = 1:12, dim = c(2, 2, 3)) R> a1 , , 1 [,1] [,2] [1,] 1 3 [2,] 2 4 , , 2 [,1] [,2] [1,] 5 7 [2,] 6 8 , , 3 Computação Estatística em R c© 2016 Silva, A.R. 8 Capítulo 1. Objetos [,1] [,2] [1,] 9 11 [2,] 10 12 1.5.2 Operações com matrizes Basicamente, operações aritméticas com matrizes podem ser executadas de acordo com as indicações da tabela 1.1. Tabela 1.1: Principais operações com matrizes e respectivos operado- res/funções. Adição + Subtração - Multiplicação %*% Inversão solve() Transposição t() Diagonalização∗ diag() Produto de Kronecker kronecker() ∗Extração da diagonal ou criação de matrizes diagonais. 1.5.3 Subsetting Subconjuntos de matrizes podem ser extraídos usando os operadores [i, j] para matrizes, ou [i, j, k, ...] para arrays. R>m2[1, 2] # linha 1, coluna 2 da matriz ’m2’ [1] 5 R> m2[2:3, ] # linhas 2 a 3 de ‘m2’ [,1] [,2] [1,] 2 6 [2,] 3 7 R> a1[1, 2, 3] # linha 1, coluna 2, matriz 3 [1] 11 1.6 Listas Listas são tipos especiais de vetores que podem conter elementos de dife- rentes classes e comprimentos. R> x <- list("Cultivar A", 2.2221, + c(TRUE, FALSE, FALSE)) c© 2016 Silva, A.R. Computação Estatística em R Capítulo 1. Objetos 9 R> x [[1]] [1] "Cultivar A" [[2]] [1] 2.2221 [[3]] [1] TRUE FALSE FALSE A seleção de elementos específicos de uma lista é feita com os operadores duplos [[. R> x[[1]] [1] "Cultivar A" 1.7 data.frame() Quadros de dados ou data frames apresentam uma característica comum às listas: ambos podem conter objetos de diferentes classes. Entretanto, os data frames permitem combinar apenas vetores e estes devem ter o mesmo comprimento. De fato, data frames são mais similares à matrizes em forma, pois tem entradas de linhas e colunas. R> x <- data.frame(Cultivar = c("A", "B", "C"), + Precoce = c(TRUE, FALSE, TRUE)) R> x Cultivar Precoce 1 A TRUE 2 B FALSE 3 C TRUE Data frames são de forma usual criados por importação de dados, a partir das funções read.table(), read.csv() ou read.csv2(). 1.7.1 Subsetting/Attaching É possível selecionar partes de um data frame usando os operadores [ , ], da mesma forma como feito com matrizes. Além disso, se as colunas do data frame tiverem nomes, então é possível selecioná-las usando o operador $. Por exemplo: R> x$Precoce [1] TRUE FALSE TRUE Ao lidar com um data frame várias vezes uma análises mais demorada, a seleção de variáveis (colunas) pode ser cansativa e até desnecessária. A solução aqui seria tornar "disponíveis"à memória do R as variáveis deste data frame, de forma que possamos acessar os dados destas variáveis apenas pelo nome da coluna. Isso é feito com a função attach(). Computação Estatística em R c© 2016 Silva, A.R. 10 Capítulo 1. Objetos R> attach(x) R> Precoce [1] TRUE FALSE TRUE Desta forma, o objeto x torna-se um novo caminho de busca de objetos, no caso contendo os objetos Cultivar e Precoce. Para retirar x deste caminho, use a função inversa: detach(x). c© 2016 Silva, A.R. Computação Estatística em R Capítulo 2 Importação/exportação de dados 2.1 Importação de dados O R permite importar arquivos em diversos formatos, dentre eles: .R, .txt, .dat, .csv (excel). Para tanto, há algumas principais funções. Ei-las: • read.table() - para leitura de dados tabulados em colunas • read.csv() ou read.csv2() - para leitura de dados tabulados em colunas no formato csv • readLines() - para leitura das linhas de um arquivo de texto • source() - para leitura de códigos em R Veja quais os argumentos são necessários para utilizar a função read.table(), por exemplo. Ou digite args(read.table). Todas as funções mencionadas permite a leitura de dados da web, sem a necessidade de download do arquivo em si. Para tanto, basta informar no argumento file o enderço URL do arquivo. Exemplo: consulte a página em http://arsilva.weebly.com/dados.html. Observe que há um arquivo batata.txt. Podemos fazer a leitura direta desses dados por meio de: > batata <- read.table(file = "http://arsilva.weebly.com/uploads/ + 2/1/0/0/21008856/batata.txt", + header = TRUE) > batata cultivar rep prod 1 1 1 50.9 2 1 2 50.6 3 1 3 51.2 4 2 1 49.1 5 2 2 49.3 http://arsilva.weebly.com/dados.html 12 Capítulo 2. Importação/exportação de dados 6 2 3 49.9 7 3 1 49.9 8 3 2 49.8 9 3 3 49.5 10 4 1 49.2 11 4 2 49.1 12 4 3 50.0 > Note que usamos o argumento header = TRUE. Isso permite identificar a primeira linha como nomes (cabeçalho) das colunas, não dados. 2.2 Exportação de dados Algumas funções análogas para exportação de dados são: • write.table() • write.csv() ou write.csv2() • writeLines() Exemplo: considere adicionar uma nova coluna ao data frame "batata", que irá receber a raiz quadrada dos valores da variável prod. Iremos salvar o novo data frame no formato .csv, sob o nome batata2, da seguinte forma: > batata$prod2 <- sqrt(batata$prod) > batata cultivar rep prod prod2 1 1 1 50.9 7.134424 2 1 2 50.6 7.113368 3 1 3 51.2 7.155418 4 2 1 49.1 7.007139 5 2 2 49.3 7.021396 6 2 3 49.9 7.063993 7 3 1 49.9 7.063993 8 3 2 49.8 7.056912 9 3 3 49.5 7.035624 10 4 1 49.2 7.014271 11 4 2 49.1 7.007139 12 4 3 50.0 7.071068 > # exportando os dados para o diretório de trabalho > write.table(x = batata, file = "batata2.csv", sep = ",") Observe que no argumento file indicamos o novo nome e a extensão do arquivo, csv no caso. Neste caso, o argumento sep é necessário devido ao formato escolhido (csv = comma separated values). Por vezes, arquivos csv podem estar separados não por vírgula, mas por ponto-e-vírgula. Nestes casos, a função read.csv2() deve ser utilizada. c© 2016 Silva, A.R. Computação Estatística em R Capítulo 2. Importação/exportação de dados 13 2.3 Exercício 1. Faça a leitura do arquivo camadassolo.csv utilizando a função read.table(). Transforme os valores de resistência à penetração de MPa para kPa e depois salve o data frame modificado no seu diretório de trabalho no formato solo.csv. Não adicione uma nova coluna ao data frame original! 2. Identifique quais as classes de cada coluna do conjunto de dados. 3. Crie um novo data frame de nome camada1 contendo apenas os dados de umidade e densidade do solo da camada de 0-20 cm. 4. Tente resolver a questão anterior utilizando a função subset(). Veja a documentação (help) da função, se necessário. 5. Crie uma lista tripla contendo os valores de umidade, densidade e camada do solo com os dados da camada de 20-40 cm. Computação Estatística em R c© 2016 Silva, A.R. Parte II MÉTODOS UNIVARIADOS 15 Capítulo 3 Análise exploratória de dados A análise exploratória de dados deve ser sempre feita e, não raramente, podem ser ou as únicas necessárias ou decisivas na escolha de um método estatístico mais sofisticado. A exploração de dados é comumente feita por duas formas: i) estudo da distribuição de frequências dos dados, ii) por meio de medidas descritivas que procuram resumir a informação da amostra, e iii) por meios gráficos. 3.1 Distribuição de frequências Algumas ferramentas frequentemente utilizadas para o estudo de distribui- ção de frequências são: • Gráfico de barras • Gráfico de pizza ou de setores • Diagrama de ramos-e-folhas • Histograma Em particular, os dois últimos são adequados para dados quantitaivos. Para tal, podemos utilizar as funções stem() e hist(). A distribuição de ferequências de variáveis categóricas ou qualitativas é feita com os dois primeiros. Para estes, algumas funções úteis são: table(), barplot() e pie(). Exemplo: utilizando os dados camadassolo.csv, faremos o diagrama de ramos-e-folhas da resistência à penetração por meio de: > solo <- read.csv("http://arsilva.weebly.com/uploads/ + 2/1/0/0/21008856/camadassolo.csv", + header = TRUE) 18 Capítulo 3. Análise exploratória de dados > stem(solo$RP) The decimal point is at the | 0 | 47 1 | 0001445566668899 2 | 00000111112234455555667788999 3 | 000011222334444778 4 | 0002334446788 5 | 2277 6 | 25 Podemos observar claramente que há uma tendência de encontrar mais valores de RP entre 1 e 4 Mpa. Por outro lado, valores de RP acima de 5 MPa são pouco prováveis. Use o comando hist(solo$RP) para construir um histograma. Histogramas são, é claro, amplamente utilizados para representar a dis- tribuição dos dados, uma vez que o mesmo da ideia da forma da verdadeira distribuição f dos dados. Contudo, histogramas como estimadores de densi- dade podem ser criticados, principalmente por desperdiçar parte dos dados quando da formação das barras de frequência. alternativas robustas são os gráficos de densidade kernel, os quais estimam f por suavização, levando em conta cada observação da amostra. Na figura a seguir foi obtida com o comando: > attach(solo) > plot( density(RP) ) 0 2 4 6 8 0. 00 0. 10 0. 20 0. 30 density.default(x = RP) N = 84 Bandwidth = 0.4638 D en si ty Figura 3.1: Densidade kernel para osdados de resistência à penetração c© 2016 Silva, A.R. Computação Estatística em R Capítulo 3. Análise exploratória de dados 19 3.2 Estatísticas descritivas A descrição dos dados é feita por meio de medidas que os representem, resumidamente. Tais medidas podem ser de três tipos: • Medidas de posição ou de tendencia central • Medidas de dispersão ou variabilidade • Medidas de associação 3.2.1 Medidas de posição Veremos aqui algumas funções para computar as medidas de posição: média e mediana. > mean(RP) [1] 2.907619 > median(RP) [1] 2.75 3.2.2 Medidas de dispersão Calcularemos nesta seção as estatísticas: amplitude total (max - min), variância, desvio padrão e coeficiente de variação. > max(RP) - min(RP) [1] 6.14 > var(RP) [1] 1.654324 > sd(RP) [1] 1.286205 > 100 * sd(RP) / mean(RP) [1] 44.23569 3.2.3 Quantis amostrais Muitas vezes desejamos saber não o mínimo ou máximo apenas, mas sim valores em posições mais específicas, como o valor na posição percentual 95%, que significa o 95o maior valor de uma amostra de tamanho 100. Para isso, use a função quantile(). > quantile(RP, prob = 0.95) 95% 5.201 Computação Estatística em R c© 2016 Silva, A.R. 20 Capítulo 3. Análise exploratória de dados 3.2.4 Trabalhando com fatores Frequentemente precisamos calcular estatísticas para cada nível de um fa- tor. Por exemplo, qual o valor da média de RP para cada camada de solo? > aggregate(RP ~ Camada, FUN = mean, data = solo) Camada RP 1 0-20 3.177381 2 20-40 2.637857 Veja o que acontece ao passar o comando: > aggregate( .~ Camada, FUN = mean, data = solo) 3.2.5 Outras funções úteis • sum() • sort() • order() 3.2.6 str/summary Ao fazer a leitura de um data frame, é interessante utilizar as funções str() e summary(), para uma ideia inicial geral dos dados. Faça-o com o data frame solo: > str(solo) > summary(solo) 3.2.7 Box plot Diagramas de caixa (box plot) estão entre os mais completos métodos grá- ficos para análise exploratória de dados. Neles podemos identificar as esta- tísticas: média, mediana, primeiro e terceiro quartis (percentis 25% e 75%, respectivamente), além de possíveis outliers. No R, podemos construir box plots individuais: > boxplot(RP) ou conjuntos (para diferentes níveis de um fator): > boxplot(RP ~ Camada) c© 2016 Silva, A.R. Computação Estatística em R Capítulo 3. Análise exploratória de dados 21 3.3 Exercícios 1. Com o objeto solo, calcule para todas as variáveis, por camada, as seguintes estatísticas: Amplitudes total, Hx = max(x)−min(x) Coeficiente de variação, CV% = 100× sx/x̄ 2. Construa um histograma para a variável Tensão de preconsolidação e adicione a linha de densidade kernel no mesmo gráfico. Dica: use a função lines() 3. Qual é o 22o maior valor de Tensão? 4. Padronize a variável Tensão par ter média 0 e variância 1 Computação Estatística em R c© 2016 Silva, A.R. Capítulo 4 Covariância e correlação Outra parte fundamental da análise expliratória de dados é o estudo de me- didas de associação entre variáveis. Além disso, a existência de associação entre variáveis resposta é condição fundamental para realização de análi- ses multivariadas, no sentido de que interdependência implica em nenhum ganho em relação as informações obtidas com métodos univariados. O grau de associação linear entre variáveis é usualmente medido por meio da covariância e por meio de coeficientes de correlação. Sendo que a primeira é afetada pelas unidades de medida, as correlações não. 4.1 Covariância e correlação de Pearson Considere novamente os dados do objeto solo1. Calcularemos a covariância entre as variáveis US e RP da seguinte forma: > cov(x = US, y = RP) [1] -1.989888 > cor(x = US, y = RP) [1] -0.7992292 Assim, quanto maior a umidade do solo, menor a resistência. 4.2 Diagramas de dispersão Devido ao fato de a covariância e a correlação amostral (Pearson) serem medidas de associação estritamente linear, é aconselhável fazer inicial- mente uma análise gráfica da dispersão dos pares de valores. Isso pode ser executado com a função geral plot(). > plot(x = US, y = RP) > abline(v = mean(US), h = mean(RP), lty = 3) 24 Capítulo 4. Covariância e correlação ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● 6 8 10 12 14 1 2 3 4 5 6 US R P Figura 4.1: Diagrama de dispersão de US e RP A relação entre US e RP, neste caso, pode ser considerada, pelo menos, aproximadamente linear. Assim, o coeficiente de correlação de Pearson pode ser utilizado como medida de associação. No entanto, faça o diagrama de dispersão das variáveis x e y a seguir e depois calcule a correlação... > x <- seq(-2, 2, by = 0.1) > y <- x^2 4.3 Teste da correlação O teste t-Student com n−2 graus de liberdade para a hipótese de nulidade H0 : ρXY = 0 é feito por meio de: > cor.test(x = US, y = RP) Pearson’s product-moment correlation data: US and RP t = -12.042, df = 82, p-value < 2.2e-16 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: -0.8653465 -0.7057680 sample estimates: cor -0.7992292 Note: como p < 0.01, rejeitamos H0. 1Lembre-se de que os dados devem estar attachados. c© 2016 Silva, A.R. Computação Estatística em R Capítulo 4. Covariância e correlação 25 4.4 Correlações não paramétricas O coeficiente de Pearson deve ser utilizado quando as variáveis são pro- venientes da distribuição normal bivariada ou, ao menos, são contínuas. Variáveis discretas ou que não atendem a esse pré-requisito devem ser estu- dadas por meio dos coeficientes de Spearman ou Kendall, os quais podem ser entendidos como índices de monotonicidade, isto é, são baseados nos ranks das observações e não no seus valores propriamente ditos. A coerral- ção de Spearman, por exemplo, é calculada a partir dos ranks (ou postos) das observações originais. Para calcular estes coeficientes, basta adicionar modificar o argumento method da função cor(). 4.5 Gráfico de draftsman Uma generalização do diagrama de dispersão é o gráfico de draftsman, onde podem ser visualizadas as dispersões envolvendo todos os pares de variáveis. Por exemplo: > pairs(solo[, -7]) 4.6 Matrizes de covariância e de correlação Matrizes de covariância e de correlação são facilmente obtidas no R através das funções cov() e cor(), respectivamente. Ambas permitem calcular os seguintes coeficientes: Pearson (default) e não paramétricas de Kendall e Spearman, bastando alterar o argumento method. Exemplo: eliminaremos a coluna Camada (sétima coluna) do data frame solo para computar a matriz de covariâncias entre as variáveis. > covsolo <- cov(solo[, -7]) Observe que armazenamos a matriz no objeto covsolo. Iremos agora imprimir no console esta matriz com os valores arredondados em 2 casas decimais. > round(covsolo, 2) US DS RP CO Argila Tensao US 3.75 -0.12 -1.99 7.75 -1.63 -11.69 DS -0.12 0.01 0.10 -0.41 0.14 0.71 RP -1.99 0.10 1.65 -5.73 1.74 10.42 CO 7.75 -0.41 -5.73 41.12 -9.92 -43.31 Argila -1.63 0.14 1.74 -9.92 4.54 14.88 Tensao -11.69 0.71 10.42 -43.31 14.88 82.99 em que na diagonal observamos as variâncias e fora dela as covariâncias entre pares de variáveis. Devido a questões de unidades de medida, dificilmente identificamos quando uma covariância é alta ou baixa. Lembre que −∞ ≤ cov ≤ ∞. No Computação Estatística em R c© 2016 Silva, A.R. 26 Capítulo 4. Covariância e correlação entanto, podemos facilmente transformar uma matriz de covariâncias em uma matriz de correlações, pois: cor(x, y) = cov(x, y)√ var(x)var(y) Assim, basta fazer: > corsolo <- cov2cor(covsolo) > round(corsolo, 2) US DS RP CO Argila Tensao US 1.00 -0.73 -0.80 0.62 -0.39 -0.66 DS -0.73 1.00 0.89 -0.76 0.76 0.92 RP -0.80 0.89 1.00 -0.69 0.63 0.89 CO 0.62 -0.76 -0.69 1.00 -0.73 -0.74 Argila -0.39 0.76 0.63 -0.73 1.00 0.77 Tensao -0.66 0.92 0.89 -0.74 0.77 1.00 Essa função, cov2cor(), é bastante útil em situações em que não dis-pomos dos dados, mas apenas da matriz de covariâncias. Sim, poderíamos ter obtido a matriz de correlações (Pearson, Spearman ou Kendall) sem precisar obter primeiro a matriz de covariâncias. O procedimento utilizado foi apenas ilustrativo. Por outro lado, se conhecermos apenas a matriz de correlação, não é possível retornar a matriz de covariância, a menos que tenhamos a informação das variâncias ou desvios padrão. 4.7 Representação gráfica de matrizes de cor- relação A representação gráfica de matrizes de correlação pode ser de grande valia quando se deseja examinar a força e a direção das associações para um número considerável de variáveis (digamos > 10), ou mesmo quando se deseja observar correlações em blocos ou grupos de variáveis, facilitando assim a visualização e a descoberta de padrões de associação. Para isso, utilizaremos o pacote corrplot. Os comandos > library(corrplot) > corrplot(corsolo) produzem a figura 4.2. 4.8 Inferência sobre matrizes de correlação 4.8.1 Testes simultâneos A função multcor.test() do pacote biotools permite realizar os testes de cada um das correlações de uma matriz simultaneamente, bastando c© 2016 Silva, A.R. Computação Estatística em R Capítulo 4. Covariância e correlação 27 −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 U S D S R P C O A rg ila Te ns ao US DS RP CO Argila Tensao Figura 4.2: Representação gráfica da matriz de correlação do data frame solo informar a matriz de correlação e o número de linha do data set (n). Por exemplo, dada a matriz corsolo, a significância de cada correlação dessa matriz pode ser verificada por meio de: > library(biotools) > multcor.test(corsolo, n = nrow(solo)) Pairwise correlation t-test data: corsolo degrees of freedom: 82 alternative hypothesis: the true correlation is not equal to 0 p-values (with none adjustment for multiple tests): US DS RP CO Argila Tensao US <NA> *** *** *** *** *** DS 0 <NA> *** *** *** *** RP 0 0 <NA> *** *** *** CO 0 0 0 <NA> *** *** Argila 2e-04 0 0 0 <NA> *** Tensao 0 0 0 0 0 <NA> --- Signif. codes: ’***’0.001 ’**’0.01 ’*’0.05 ’.’0.1 ’ ’1 Todas as correlações foram significativas (p < 0.01). Com esta imple- mentação, é possível ainda ajustar os valores-p para o número de testes realizados na matriz. Computação Estatística em R c© 2016 Silva, A.R. 28 Capítulo 4. Covariância e correlação 4.8.2 Homogeneidade de matrizes de covariância A hipótese H0 : Σ1 = Σ2 = ... = Σk = Σ de igualdade ou homogeneidade das k matrizes de covariância é de especial importância em análise de variância multivariada ou em análise discrimi- nante canônica. O teste M de Box é o mais comumente utilizado para este fim. O mesmo pode ser realizado com a função boxM() do pacote biotools. Exemplo: Com o data set solo, podemos verificar se as matrizes de cova- riâncias das duas camadas são estatisticamente iguais, da seguinte forma: > boxM(data = solo[, -7], grouping = solo[, 7]) Box’s M-test for Homogeneity of Covariance Matrices data: solo[, -7] Chi-Sq (approx.) = 107.04, df = 21, p-value = 1.605e-13 Como p = 1.605 × 10−13, dizemos que as matrizes de covariância não devem ser consideradas homogêneas. 4.9 Exercícios 1. Construa o seguinte gráfico (figura 4.3): −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 US DS RP Tensao CO Argila −0.73 −0.8 −0.66 0.62 −0.39 0.89 0.92 −0.76 0.76 0.89 −0.69 0.63 −0.74 0.77 −0.73 Figura 4.3: Representação gráfica da matriz de correlação do data frame solo c© 2016 Silva, A.R. Computação Estatística em R Capítulo 4. Covariância e correlação 29 2. Agora faça um gráfico representando as correlações e indicando quais são significativas (p < 0,05). Dica: use o resultado da função multcor.test(). 3. Instale/carregue o pacote soilphysics. Carregue o conjunto de dados bulkDensity (digite data(bulkDensity)). - Teste a correlação entre as variáveis MOIS e BULK. - Teste a igualdade de matrizes de covariância para as amostras (coluna Id) Computação Estatística em R c© 2016 Silva, A.R. Capítulo 5 Regressão A simples correlação entre duas variáveis não fornece ideia de causa e efeito de uma variável sobre outra. Por exemplo, quanto será a mudança média em Y quando X variar em uma unidade. Além disso, na análise de corre- lação ambas as variáveis são consideradas resposta, ou variáveis aleatórias, o que nem sempre ocorre. Considere, por exemplo, um estudo de dose- resposta de um fertilizante sobre a produção vegetal. A variável dose é a controlada pelo pesquisador, isto é, não é aleatória, mas sim uma variável explanatória cujo efeito sobre a resposta produção esta sendo avaliado. 5.1 Regressão linear simples Vimos no capítulo anterior que a resistência do solo à penetração apresenta correlação linear negativa com a quantidade de água no solo e positiva com a densidade. Faça: > plot(RP ~ DS, data = solo) Perceba que a relação é linear. Ajustaremos então uma reta de mínimos quadrados, isto é, um modelo de regressão linear simples: yi = b0 + b1xi + �i em que b0 e b1 são os parâmatros do modelo, �i é o erro aleatório associado a observação yi, suposto ter distribuição normal1 com média zero e variância constante σ2. A função à ser chamada é a lm() (de linear models). > m1 <- lm(RP ~ DS, data = solo) > m1 1Veremos mais adiante como checar a normalidade dos resíduos e também outras exigências do modelo para o caso de se fazer inferências. 32 Capítulo 5. Regressão Call: lm(formula = RP ~ DS, data = solo) Coefficients: (Intercept) DS -19.62 13.49 5.1.1 Coeficiente de determinação Um dos critérios mais simples e amplamente utilizados para verificar o grau de ajuste do modelo é o coeficiente de determinação: R2 = SQreg SQtotal = 1− SQerro SQtotal Sendo que R2 ∈ [0, 1], e quanto maior o seu valor, melhor o ajuste do modelo. No entanto, deve-se considerar que o R2, além de ser uma função crescente do número de parâmetros do modelo (p), é esperado ser maior quando o modelo é ajustado com um menor número de observações (n). O coeficiente de determinação ajustado deve então ser utilizado quando da comparação de modelos ou diferentes ajustes de um mesmo modelo: R2aj. = R2(n− 1)− p+ 1 n− p A função Rsq() do pacote soilphysics calcula ambos os coeficientes de determinação a partir do objeto m1. > Rsq(m1) $R.squared [1] 0.7883671 $adj.R.squared [1] 0.7857862 attr(,"class") [1] "Rsq" 5.1.2 Independência e normalidade residual Quando se pretende fazer inferências acerca dos parâmetros do modelo linear, assume-se que os resíduos sejam independentes e normalmente dis- tribuídos. Para checar tais exigências, utilizaremos aqui dois testes de fácil aplicação: o teste de Durbin-Watson2 para independência e o teste de Shapiro-Wilk para normalidade. > library(car) 2Na verdade, o teste é para autocorrelação serial, sendo indiretamente usado para testar independência. c© 2016 Silva, A.R. Computação Estatística em R Capítulo 5. Regressão 33 > dwt(m1) lag Autocorrelation D-W Statistic p-value 1 0.01462032 1.970238 0.912 Alternative hypothesis: rho != 0 > resid <- residuals(m1) > shapiro.test(resid) Shapiro-Wilk normality test data: resid W = 0.96404, p-value = 0.01908 No exemplo corrente, podemos a firmar a 5% de significância que os resíduos são independentes (p = 0.912), mas não apresentam normalidade (p = 0.0198). 5.1.3 Análise de variância da regressão Uma vez ajustado o modelo, sob a pressuposições acerca dos resíduos, o teste F da análise de variância pode ser utilizado para avaliar a hipótese de nulidade: H0 : b0 = b1 = 0 contra a alternativa de que ao menos um dos parâmetros é não nulo ao nível α de significância. > anova(m1) Analysis of Variance Table Response: RP Df Sum Sq Mean Sq F value Pr(>F) DS 1 108.250 108.250 305.46 < 2.2e-16 *** Residuals 82 29.059 0.354 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Sendo p < 0.01, devemos rejeitar H0. 5.1.4 Teste t A hipótese anterior, verificada com o teste F , nem sempre é de interesse. Na verdade, o teste do intercepto tem pouco sentidoprático. O teste t pode ser aplicado para testar a nulidade (H0 : bj = 0) de cada um dos parâmetros do modelo, individualmente. t = b̂j√ V̂ ar(b̂j) Computação Estatística em R c© 2016 Silva, A.R. 34 Capítulo 5. Regressão por meio da distribuição t-Student com n− p graus de liberdade. Um summary no objeto m1 irá apresentar, além do resumo dos testes t para cada parâmetro, o valor do R2 e do R2 ajustado. > summary(m1) Call: lm(formula = RP ~ DS, data = solo) Residuals: Min 1Q Median 3Q Max -1.3153 -0.4391 -0.1104 0.3594 2.1547 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -19.6177 1.2905 -15.20 <2e-16 *** DS 13.4882 0.7717 17.48 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 0.5953 on 82 degrees of freedom Multiple R-squared: 0.7884, Adjusted R-squared: 0.7858 F-statistic: 305.5 on 1 and 82 DF, p-value: < 2.2e-16 5.1.5 Intervalo de confiança e de predição Um intervalo de 100(1− alpha)% confiança para o valor esperado E(Yh) = b0 + b1 ∗Xh é dado por: ŷh ± t1− α2 √ V̂ ar(ŷh) podendo yh ser ou não um valor observado. Por outro lado, o erro de pre- dição associado a uma observação futura pode ser utilizado para construir um intervalo de predição de 100(1− alpha)% de confiança: ŷh ± t1− α2 √ σ̂2 + V̂ ar(ŷh) A diferença básica entre os intervalos reside no fato de que os limites do intervalo de confiança são para um parâmetro E(Yh), enquanto que a predição está associada a uma variável aleatória não observada (observação futura). Note também que o intervalo de predição é sempre maior que o intervalo de confiança. Com a função genérica predict(), iremos construir e adicionar ao plot anterior intervalos de 95% confiança e de predição com o ajuste obtido em m1. > new <- data.frame(DS = seq(min(solo$DS), max(solo$DS), len = 99)) > ic <- predict(m1, newdata = new, interval = "confidence") > ip <- predict(m1, newdata = new, interval = "prediction") c© 2016 Silva, A.R. Computação Estatística em R Capítulo 5. Regressão 35 > matlines(new$DS, ic, col = c("black", "red", "red"), lty = 2) > matlines(new$DS, ip, col = c("black", "blue", "blue"), lty = 3) > legend("topleft", c("confiança", "predição"), + title = "Intervalo de", lty = 2:3, + col = c("red", "blue"), cex = 0.8) ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ●● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● 1.5 1.6 1.7 1.8 1 2 3 4 5 6 DS R P Intervalo de confiança predição Figura 5.1: Intervalos de 95% confiança e de previsão para regressão linear da resistência do solo à penetração em função da densidade. 5.2 Regressão linear múltipla Quando o modelo de regressã linear é composto por mais de um regressor, este modelo pode ser entendido como um modelo de regressão múltipla. Exemplo: o modelo y = b0 + b1x+ b2x2 + � tem apenas uma variável expli- cativa, X, mas tem dois regressores: os termos X e X2. Essa é uma forma geral de tratar modelos de regressão múltipla. Note que, de forma análoga, Y pode ser explicado em função de mais de uma variável explicativa pro- priamente dita (X1, X2, ..., Xk), digamos y = b0 + b1x1 + b2x2 + b3x3 + �. E ainda poderíamos adicionar a este modelo termos quadráticos, cúbicos... e ainda de produtos cruzados. Suponha então ajustar um modelo da RP em função de US, DS, CO e Argila. > m2 <- lm(RP ~ DS + US + CO + Argila, data = solo) > summary(m2) Call: lm(formula = RP ~ DS + US + CO + Argila, data = solo) Computação Estatística em R c© 2016 Silva, A.R. 36 Capítulo 5. Regressão Residuals: Min 1Q Median 3Q Max -1.23224 -0.41100 -0.04888 0.32306 1.74196 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -11.42886 2.59128 -4.411 3.22e-05 *** DS 9.56573 1.56371 6.117 3.43e-08 *** US -0.22656 0.05022 -4.512 2.21e-05 *** CO 0.00607 0.01585 0.383 0.703 Argila 0.02524 0.05057 0.499 0.619 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 0.532 on 79 degrees of freedom Multiple R-squared: 0.8371, Adjusted R-squared: 0.8289 F-statistic: 101.5 on 4 and 79 DF, p-value: < 2.2e-16 A equação de regressão ajustada seria: R̂P = −11.42 + 9.56DS − 0.22US + 0.006CO + 0.025Argila Contudo, pelo teste t, apenas termos DS e US foram significativos (p < 0,05). 5.3 Stepwise Em regressão múltipla, deve-se sempre buscar por modelos parcimoniosos, isto é, que sejam bem ajustados e com um mínimo possível de parâme- tros. Tais modelos são em geral obtidos por meio de seleção de variáveis explicativas. Um método amplamente utilizado de seleção é o stepwise, que consiste em: • (Método backward) Ajustar inicialmente um modelo com todas as variáveis e, em seguida, eliminar uma a uma, desde que haja isso promova redução do AIC do modelo. • (Método forward) Ajustar um modelo inicial, em geral apenas com a constante (b0), e em seguida adicionar variáveis que promovam dimi- nuição do AIC. • (Método stepwise) Consiste na mistura dos dois anteriores. Geral- mente parte-se de um modelo completo, e então avalia-se a exclusão e inclusão de variáveis em cada passo. Assim como o R2 ajustado, critérios de informação são bastante utili- zados como critério de escolha do modelo. Destaca-se aqui o critério de Akaike (AIC): c© 2016 Silva, A.R. Computação Estatística em R Capítulo 5. Regressão 37 AIC = −2logLike+ 2k em que logLike é o log natural da função de verossimilhança do modelo, e k é o número de parâmetros. Quanto menor o valor do AIC, melhor o ajuste do modelo. Realizando um stepwise bidirecional a partir do modelo m2, teremos: > step(m2) Start: AIC=-101.17 RP ~ DS + US + CO + Argila Df Sum of Sq RSS AIC - CO 1 0.0415 22.403 -103.017 - Argila 1 0.0705 22.432 -102.908 <none> 22.361 -101.173 - US 1 5.7615 28.123 -83.916 - DS 1 10.5924 32.954 -70.600 Step: AIC=-103.02 RP ~ DS + US + Argila Df Sum of Sq RSS AIC - Argila 1 0.0387 22.441 -104.872 <none> 22.403 -103.017 - US 1 6.0633 28.466 -84.897 - DS 1 10.6293 33.032 -72.400 Step: AIC=-104.87 RP ~ DS + US Df Sum of Sq RSS AIC <none> 22.441 -104.872 - US 1 6.6177 29.059 -85.165 - DS 1 27.1590 49.600 -40.253 Call: lm(formula = RP ~ DS + US, data = solo) Coefficients: (Intercept) DS US -11.646 9.910 -0.214 E assim, o modelo selecionado é: R̂P = −11.646 + 9.910DS − 0.214US 5.4 Construíndo superfícies de resposta Assim como fazemos diagramas de dispersão bidimensional para verificar a relação entre duas variáveis, um gráfico tridimensional pode ser feito com Computação Estatística em R c© 2016 Silva, A.R. 38 Capítulo 5. Regressão o exemplo usado aqui. Para tal, utilizaremos a função scatterplot3d() do pacote homônimo, que, embora não forneca soluções gráficas muito so- fisticada, é uma implementação simples e de fácil uso. > library(scatterplot3d) > s3d <- scatterplot3d(x = DS, y = US, z = RP, angle = 45) Feito isso, e tendo-se ajustado o modelo (m2), é possível adicionar ainda um plano 3D representando o ajuste da regressão. > m2 <- lm(RP ~ DS + US, data = solo) > s3d$plane3d(m2, col = "blue") 1.4 1.5 1.6 1.7 1.8 1.9 0 1 2 3 4 5 6 7 4 6 8 10 12 14 16 DS U SR P ●● ● ● ● ●● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ●● ●● ● ● ● ●● ● ● ● ● ● ● ● ● ●●●● ● ● ● ● ● ● ● ●●● ● ● ● ●● ● ● ● ● ● Figura 5.2: Diagrama de dispersão em 3D e plano de regressão ajustado para resistência à penetração em função da densidade e umidade do solo. Nota: É importante salientar que a função plane3d() serve, unica- mente, para construir planos de regressão. Quaisquer outros modelos, contendo não apenas os termos lineares, devem ser representados grafica- mente com outras funções mais gerais, tal como a função persp(). 5.5 Regressão não linear A relação entre uma variável explicativa ou explanatória X e uma variável resposta Y pode ser do tipo linear ou não linear. Mas atenção, NÃO é esta forma de associação que define se um modelo deregressão é linear ou não. Isto é, na verdade, definido pela forma como os parâmetros do modelo se relacionam. Assim, dizemos que a equação y = b0 + b1x+ b2x2 + � constitui um modelo de regressão linear nos parâmetros. Matematicamente, dizemos c© 2016 Silva, A.R. Computação Estatística em R Capítulo 5. Regressão 39 que um modelo é não linear se pelo menos uma das derivadas parciais em relação aos parâmetros for uma função de pelo menos um parâmetro. Por exemplo, o modelo y = b0 + xb1 + � é não linear, pois: ∂y ∂b1 = f(b1) = xb1 log(x) O método de estimação mais utilizado é o método dos mínimos quadra- dos não lineares, cujo princípio é o mesmo do método de mínimos quadrados para modelos lineares. Contudo, modelos não lineares raramente possuem forma fechada para os estimadores. Assim sendo, a estimação é feita por um processo iterativo, de acordo com algum algoritmo de busca, tais como Gauss-Newton, Newton-Raphson, Gauss-Marquardt, entre outros. O uso de processos iterativos requer, então, valores (ou chutes) iniciais para os parâmetros. Exemplo Visando determinar o tamanho ideal de parcelas experimentais, Lessman & Atkins (1963) propuseram o seguinte modelo para o coeficiente de variação experimental: y = b0x−b1 + � em que y é o coeficiente de variação experimental; x é o tamanho da parcela; b0 e b1 são parâmetros. Uma forma bastante simples de se obter valores iniciais é por meio da linearização do modelo não linear, ignorando (obviamente) o erro aleatório. Com o exemplo, podemos fazer: log(y) = log(b0)− b1 log(x) que é, agora, um modelo de regressão linear simples. Considere agora os seguintes dados de CV% e tamanho de parcela (m2): > ps <- c(1, 2, 3, 4, 6, 8, 12) > cv <- c(35.6, 29, 27.1, 25.6, 24.4, 23.3, 21.6) > lm(log(cv) ~ log(ps)) Call: lm(formula = log(cv) ~ log(ps)) Coefficients: (Intercept) log(ps) 3.5309 -0.1908 Poderíamos então utilizar esses valores iniciais (3.53 e -0.19) para obter as estimativas de mínimos quadrados não lineares, usando a função nls(). > nls(cv ~ b0*ps^-b1, + start = list(b0 = exp(3.53), b1 = 0.19)) Nonlinear regression model Computação Estatística em R c© 2016 Silva, A.R. 40 Capítulo 5. Regressão model: cv ~ b0 * ps^-b1 data: parent.frame() b0 b1 34.5394 0.1996 residual sum-of-squares: 3.665 Number of iterations to convergence: 3 Achieved convergence tolerance: 3.061e-06 Podemos agora desenhar o ajuste da regressão (5.3): > plot(ps, cv) > curve(34.54*x^-0.1996, add = TRUE, col = "blue") ● ● ● ● ● ● ● 2 4 6 8 10 12 22 24 26 28 30 32 34 36 ps cv Figura 5.3: Ajuste do modelo não linear para o coeficiente de variação experimental em função do tamanho da parcela. 5.6 Linear Response Plateau Não raramente, em estudos de nutrição de plantas, é esperado que a partir de certo ponto haja uma faixa de estabilização da produção ou cresimento vegetal em função da adição de nutrientes. Nesse caso, parece bastante apropriado ajustar um modelo de regressão do tipo LRP ou platô de res- posta linear. c© 2016 Silva, A.R. Computação Estatística em R Capítulo 5. Regressão 41 O modelo LRP nada mais é do que um modelo de regressão segmentado, em duas partes, sendo que em uma delas a resposta é descrita por um modelo de regressão linear simples, e a outra é descrita por uma reta (platô), isto é, onde a resposta é constante. Formalmente, o escrevemos da seguinte forma: y = h(x) + �, em que: h(x) = { b0 + b1x, x ≤ x0 b0 + b1x0, x > x0 sendo o parâmetro x0 o valor no eixo-x que delimita o platô. Exemplo Hartinee et al. (2010) utilizaram o modelo LRP para determinar a exigência de nitrogênio por arroz. Dados de produção em função de doses de um fertilizante nitrogenado são mostrados na tabela a seguir: Tabela 5.1: Efeito de N na produção de arroz (Hartinee et al., 2010). N 0 50 100 150 200 Prod. 7.67 14.46 19.84 20.04 20.59 A relação entre produção e dose de N pode ser melhor entendida quando visualizada graficamente. Isso ainda nos ajudará identificar onde deve estar o platô. > N <- c(0, 50, 100, 150, 200) > prod <- c(7.67, 14.46, 19.84, 20.04, 20.59) > plot(prod ~ N) No R, uma forma prática de estimar os parâmetros do modelo LRP é tratando-o como um modelo não linear, via a implementação nls(). > lrp <- function (x, b0, b1, x0) + ifelse(x <= x0, b0 + b1*x, b0 + b1*x0) > nls(prod ~ lrp(N, b0, b1, x0), + start = list(b0 = 8, b1 = 0.1, x0 = 80)) Nonlinear regression model model: prod ~ lrp(N, b0, b1, x0) data: parent.frame() b0 b1 x0 7.6700 0.1358 91.9489 residual sum-of-squares: 0.3017 Number of iterations to convergence: 2 Achieved convergence tolerance: 1.147e-08 Logo, a equação ajustada foi: Computação Estatística em R c© 2016 Silva, A.R. 42 Capítulo 5. Regressão ŷ = { 7.67 + 0.1358x, x ≤ 91.9489 20.15666, x > 91.9489 sendo 21.15666 o platô de resposta. A figura 5.4 mostra o ajuste do modelo. ● ● ● ● ● 0 50 100 150 200 8 10 12 14 16 18 20 N pr od Figura 5.4: Ajuste do modelo LRP aos dados de produção de arroz em função de doses de fertilizante nitrogenado. 5.7 Exercícios 1. Ajuste um modelo de regressão linear múltipla para a resistência à penetração em função da densidade e umidade do solo de cada uma das duas camadas (0-20 e 20-40 cm). Depois construa um diagrama de dispersão 3D, indicando com cores diferentes as observações tomadas em cada camada. Finalmente, adicione a esse gráfico os dois planos de regressão ajustados, separando também pelas cores das observações. 2. Como você classificaria o seguinte modelo, linear ou não linear? y = b1 √ x+ b2x+ � 3. Busscher (1990) propôs o seguinte modelo para a resistência à pene- tração: RP = b0θb1ρb2 + � c© 2016 Silva, A.R. Computação Estatística em R Capítulo 5. Regressão 43 Em que θ é o conteúdo de água no solo, ρ é o valor da densidade do solo, b0, b1 e b2 são parâmetros. Pede-se: com os dados das duas camadas, ajuste o modelo de Busscher e construa a superfície de resposta. 4. Em 1909, o alemão E. A. Mitscherlich desenvolveu uma equação rela- cionando o crescimento de plantas ao suprimento de nutrientes, subs- tituindo o modelo linear de Leibig. A lei de Mitscherlich é descrita pela equação: y = A[1− 10−c(x+b)] em que y é a resposta obtida (produção), x é a dose do fertilizante, A é um parâmetro que representa a produção máxima, b é um parâ- metro que representa a quantidade (dose) previamente existente no solo e c é um parâmetro que representa um coeficiente de eficácia do fertilizante. À exceção de c, todos os demais componentes da equação são expressos em kg ha−1. Esta lei foi estudada por Pimentel-Gomes (1953) com os seguintes dados de produtividade de cana-de-açúcar (t ha−1) em função de doses de vinhaça (m3 ha−1). Dose 0 250 500 1000 Prod. 47 75 90 98 Pede-se: ajuste o modelo de Mitscherlich e represente-o graficamente. Dica: use como valores iniciais para b e c os resultados obtidos com: mean(diff(dose)) e 1/mean(dose), respectivamente. Você conseguiu perceber alguma desvantagem do modelo de Mitscher- lich? Será que o modelo linear quadrático seria mais apropriado no caso presente (sim/não, por quê)? Computação Estatística em R c© 2016 Silva, A.R. Capítulo 6 Análise de variância e delineamentos experimentais Frequentemente conduzimos experimentos para provar hipóteses científi- cas. Adimitindo que estes sejam delineados de forma adequada e regidos pelos princípios básicos da experimentação (repetição, casualização, con- trole local), a variação total dos dados pode ser decomposta em partes conhecidas, devidas aos fatores estudados, e em parte desconhecida, o erro experimental. Essa técnica de decomposição é denominada análise de va- riância (ANOVA), e está associada ao teste F para as fontes de variação conhecidas, tais como tratamentos, interação etc. Veremos neste capítulo, como relizar análise de variância de dados ex- perimentais provenientes do delineamento inteiramente casualizado (DIC) e de blocos casualizados (DBC), ambos envolvendo apenas um fator de tratamento. 6.1 One-way ANOVA Suponha estudar apenas um fator comI níveis (i = 1, 2, ..., I), cada um repetido ri vezes (j = 1, 2, ..., ri). O modelo de ANOVA associado é: yij = µi + �ij em que yij é a observação tomada na j-ésima repetição do i-ésimo nível do fator; µi é a média do i-ésimo nível do fator; �ij é o erro aleatório associado a observação yij . A hipótese à ser verificada é: H0 : µ1 = µ2 = ... = µI , contra a alternativa de que ao menos um dos níveis tem efeito não nulo ou, de forma mais simples, que ao menos uma das médias dos níveis difere das demais. 46 Capítulo 6. Análise de variância e delineamentos experimentais Exemplo Considere dados1 de produção de quatro variedades de milho, obtidos de um experimento em delineamento inteiramente casualizado (DIC) com cinco repetições. Os mesmos estão disponíveis em arsilva.weebly.com. > milho <- read.table("http://arsilva.weebly.com/uploads/2 + /1/0/0/21008856/milho.txt", header = TRUE) O ajuste do modelo de ANOVA é feito da seguinte forma: > lm.milho <- lm(prod ~ variedade, data = milho) > lm.milho Call: lm(formula = prod ~ variedade, data = milho) Coefficients: (Intercept) variedadeB variedadeC variedadeD 23 4 3 8 Nesse caso, o objeto lm.milho contem as estimativas de µA (23), µ̂B = µ̂A + 4, µ̂C = µ̂A + 3 e µ̂D = µ̂A + 8. Isso porque o modelo é de posto incompleto2. A tabela da ANOVA só é obtida com auxílio da função anova(): > anova(lm.milho) Analysis of Variance Table Response: prod Df Sum Sq Mean Sq F value Pr(>F) variedade 3 163.75 54.583 7.7976 0.001976 ** Residuals 16 112.00 7.000 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Concluímos então pelo teste F que há diferença (p = 0.0019) entre ao menos duas das médias dos cultivares. 6.2 Testando a homogeneidade de variâncias Ao se ajustar um modelo de ANOVA, além de independência e normalidade dos erros, assumimos também que as variâncias residuais sejam homogêneas para o fator em estudo (variedade, no caso), sob pena de se fazer inferências erroneas. Assim, o teste da considerada mais importante das pressuposições do modelo, H0 : σ21 = σ22 = ... = σ2I = σ pode ser realizado com a estatística de Bartlett. 1Extraídos de Vieira e Hoffmann (1999). 2Nesse caso, a função lm() considera nulo o efeito do primeiro nível. c© 2016 Silva, A.R. Computação Estatística em R arsilva.weebly.com Capítulo 6. Análise de variância e delineamentos experimentais 47 > bartlett.test(residuals(lm.milho) ~ variedade, data = milho) Bartlett test of homogeneity of variances data: residuals(lm.milho) by variedade Bartlett’s K-squared = 0.03706, df = 3, p-value = 0.9981 Em se obtendo p = 0.9981, concluímos que as variâncias das variedades podem ser consideradas homogêneas. Nota: Observe que é muito importante que o teste de homogeneidade de variâncias seja feito com base nos resíduos do modelo, não nos dados! 6.3 Two-way ANOVA Suponha agora estudar dois fatores, um com I níveis (i = 1, 2, ..., I) e o outro com J níveis (j = 1, 2, ..., J), em que cada observação yij está sob o efeito da combinação de dois níveis desses fatores. O modelo de ANOVA associado é: yij = µ+ τi + βj + �ij em que µ é a média geral; τi é o efeito do i-ésimo nível do primeiro fator; βj é o efeito do j-ésimo nível do segundo fator; �ij é o erro aleatório associado a observação yij . A hipótese à ser verificada pode ser tanto de igualdade de médias de um quanto do outro fator. Se associarmos este modelo ao delineamento de blocos casualizados (DBC), então apenas o teste do fator de tratamentos interessa, sendo o segundo fator apenas para controle local ou blocagem. Exemplo Considere dados de produção de quatro cultivares de batata, obtidos de um experimento em delineamento em blocos ao acaso (DBC) com três blocos. Os mesmos estão disponíveis em arsilva.weebly.com. > batata <- read.table("http://arsilva.weebly.com/uploads/2/ + 1/0/0/21008856/batata.txt", h = TRUE) > batata$cultivar <- as.factor(batata$cultivar) > batata$bloco <- as.factor(batata$bloco) Perceba que as duas últimas esta últimas linhas de comando são ne- cessárias para que ao ajustar o modelo linear, o programa não entenda os níveis de cultivar nem de bloco como valores numéricos e sim como categorias ou níveis de um fator mesmo. A ANOVA é obtida fazendo: > lm.batata <- lm(prod ~ cultivar + bloco, data = batata) > anova(lm.batata) Analysis of Variance Table Computação Estatística em R c© 2016 Silva, A.R. arsilva.weebly.com 48 Capítulo 6. Análise de variância e delineamentos experimentais Response: prod Df Sum Sq Mean Sq F value Pr(>F) cultivar 3 4.3825 1.46083 13.8031 0.004218 ** bloco 2 0.4650 0.23250 2.1969 0.192373 Residuals 6 0.6350 0.10583 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 6.4 O teste da aditividade Em experimentos em DBC, é assumido no modelo que não há interação entre blocos e fatores principais (tratamentos), isto é, que os efeitos de blo- cos e tratamentos sejam aditivos (não multiplicativos). Esta presuposição pode ser avaliada por meio do teste de Tukey para não-aditividade. O teste consiste em separar um grau de liberdade do resíduo, que de fato consiste da interação tratamentos × blocos, na análise de variância e aplicar o teste F para testar a hipótese H0 de aditividade. Para isso, o termo λτiβj é adicionado ao modelo. Neste caso, podemos escrever H0 : λ = 0, e para executar o teste basta extrair os valores preditos e inserí-los como efeito quadrático no modelo. > lambda <- predict(lm.batata)^2 > anova(lm(prod ~ cultivar + bloco + lambda, data = batata)) Analysis of Variance Table Response: prod Df Sum Sq Mean Sq F value Pr(>F) cultivar 3 4.3825 1.46083 11.6357 0.0108 * bloco 2 0.4650 0.23250 1.8519 0.2501 lambda 1 0.0073 0.00727 0.0579 0.8195 Residuals 5 0.6277 0.12555 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 A fonte de variação lambda corresponde ao teste da aditividade. No caso, como p = 0.8195, não rejeitamos H0. 6.5 A precisão experimental: CV vs. IV A precisão experimental é comumente avaliada pelo coeficiente de variação experimental, dado por: CV (%) = 100 √ QMres µ̂ Por exemplo, no caso do primeiro exemplo deste capítulo (dados de mi- lho), CV (%) = 100 √ 7.0/26.75 = 9.98%. De acordo a classificação proposta por Pimentel-Gomes (2009), esse valor indica alta precisão experimental. c© 2016 Silva, A.R. Computação Estatística em R Capítulo 6. Análise de variância e delineamentos experimentais 49 Entretanto, é preciso uma análise mais cuidadosa quanto à classificação do CV, já que este varia com o delineamento experimental, espécie, variável resposta, tipo de estudo etc. Quando da comparação da precisão de experimentos instalados em con- dições diferentes, como número de repetições (r) diferentes, é sabido que o coeficiente de variação não é a medida mais indicada, já que quanto maior o número de repetições, menor tende a ser o CV. Pimentel-Gomes (1991) propôs então utilizar uma medida mais conveniente, o índice de variação (IV), corrigindo assim o problema do número diferente de repetições. IV (%) = CV√ r 6.6 Exercício Instalou-se um experimento para avaliar o comportamento de 9 porta- enxertos para a laranjeira Valência, casualizado em blocos com 3 repetições. Após 12 anos, foram avaliados, então, os resultados de produção, em nú- mero médio de frutos por planta. Os dados estão disponíveis em http:// arsilva.weebly.com/dados.html, sob o nome "laranja.txt"(Fonte: Teó- filo Sobrinho, 1972). Faça a leitura destes e depois a análise de variância, verificando também as pressuposições do modelo que se fizerem necessá- rias. Computação Estatística em R c© 2016 Silva, A.R. http://arsilva.weebly.com/dados.html http://arsilva.weebly.com/dados.html Capítulo 7 Procedimentos de comparações múltiplas de médias Quando o teste F da ANOVA está sendo utilizado para testar diferenças entre I tratamentos, a seguinte hipótese de nulidade é formulada H0 : µ1 = µ2 = ... = µI Entretanto, quando I > 2, algumas comparações específicas de trata- mentos podem ser interesse. Nesse contexto, os procedimentos decompa- rações múltiplas (PCM) são apropriados, desde que tratamento seja um fator qualitativo, e servem como um complemento do teste F . Há um número razoável de PCM disponível atualmente. Aplicaremos 5 deles e separando-os de acordo com a finalidade, em dois tipos principais: para comparações planejadas e comparações post-hoc. 7.1 Teste t para contrastes Um contraste é uma combinação linear de médias, cuja soma dos coefi- cientes é nula. Por exemplo, revisitando o exemplo sobre cultivares de batata do capítulo anterior, podemos construir um contraste entre médias de cultivares resistentes (1 e 3) e suscetíveis (2 e 4) à P. infestans: C = (µ1 + µ3)− (µ2 + µ4) No caso, o teste de C refere-se a comparação de dois grupos de médias, conforme podemos escrever na hipóteseH0 : µ1+µ3 = µ2+µ4. A estatística t-Student pode ser utilizada para testar a significância de um contraste, pois: 52 Capítulo 7. Procedimentos de comparações múltiplas de médias Ĉ V̂ ar(Ĉ) ∼ tν em que ν é o número de graus de liberdade do resíduo da análise de vari- ância. Exemplo Retomemos o modelo ajustado lm.batata de ANOVA. O contraste anterior pode ser testado por meio da implementação glht() do pacote multcomp. > library(multcomp) > c1 <- glht(lm.batata, linfct = mcp(cultivar = c(1, -1, 1, -1))) > summary(c1) Simultaneous Tests for General Linear Hypotheses Multiple Comparisons of Means: User-defined Contrasts Fit: lm(formula = prod ~ cultivar + bloco, data = batata) Linear Hypotheses: Estimate Std. Error t value Pr(>|t|) 1 == 0 1.7667 0.3756 4.703 0.00332 ** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Adjusted p values reported -- single-step method) Note que no argumento linfct é preciso informar os coeficientes do contraste na ordem1 em que os níveis do fator cultivar estão no R. A estimativa de C é 1.7667. O valor-p foi de 0.0033, indicando que o grupo de cultivares resistente (1 e 3) difere do grupo suscetível quanto à produção de tubérculos. No argumento linfct é possível ainda inserir uma matriz de contrastes à serem testados simultaneamente. 7.2 Teste LSD de Fisher A partir deste ponto, veremos como aplicar testes post-hoc, isto é, aqueles cujos contrastes são não planejados, mas sim definidos após o exame dos dados e após aplicação do teste F . Mais especificamente, tais testes procu- ram em geral comparar médias aos pares. O teste LSD de Fisher é um dos mais antigos e também dos mais utilizados. Baseia-se na diferença mínima significativa (DMS ou LSD: Least Significant Difference) e é considerado um dos mais sensíveis, isto é, que mais identifica diferenças significativas. Um 1A ordem padrão do R é a alfabética. Para verificar a ordem, digite levels(nome do fator). c© 2016 Silva, A.R. Computação Estatística em R Capítulo 7. Procedimentos de comparações múltiplas de médias 53 dos motivos para tal característica é que o nível de significância da família de testes (αF ) é maior que o nível nominal adotado para cada comparação (α), aumentando assim a probabilidade de erro tipo I. Para executar o teste LSD com o exemplo lm.batata, utilizaremos o pacote ExpDes, que além de realizar vários dos testes post-hoc, também automatiza a análise de variância, o teste de Shapiro-Wilk para norma- lidade e o cálculo do CV% experimental da maioria dos delineamentos e esquemas experimentais básicos. Assim sendo, faremos aqui a ANOVA e o teste LSD em uma mesma função: rbd() (de randomized block design): > library(ExpDes) > with(batata, + rbd(treat = cultivar, block = bloco, resp = prod, + quali = TRUE, mcomp = "lsd", sigT = 0.05, sigF = 0.05) ) ------------------------------------------------------------------------ Analysis of Variance Table ------------------------------------------------------------------------ DF SS MS Fc Pr>Fc Treatament 3 4.3825 1.46083 13.8031 0.004218 Block 2 0.4650 0.23250 2.1969 0.192373 Residuals 6 0.6350 0.10583 Total 11 5.4825 ------------------------------------------------------------------------ CV = 0.65 % ------------------------------------------------------------------------ Shapiro-Wilk normality test p-value: 0.4490271 According to Shapiro-Wilk normality test at 5% of significance, residuals can be considered normal. ------------------------------------------------------------------------ T test (LSD) ------------------------------------------------------------------------ Groups Treatments Means a 1 50.9 b 3 49.73333 b 4 49.43333 b 2 49.43333 ------------------------------------------------------------------------ 7.3 A correção de Bonferroni Especificamente no caso do teste LSD, a taxa de erro tipo I da família de testes (αF ) é aumentada de acordo com o número de comparações N aos pares. Com o objetivo de manter essa taxa de erro, a correção de Bonfer- roni é uma alternativa a ser utilizada. O método é baseado na seguinte desigualdade: αF ≤ N × α Assim, o procedimento é idêntico ao do teste LSD, com a diferença que o nível de significância de cada um dos N contrastes entre 2 médias é corrigido por: α∗ = α N Computação Estatística em R c© 2016 Silva, A.R. 54 Capítulo 7. Procedimentos de comparações múltiplas de médias Para realizar o teste, altere o argumento mcomp = "lsdb . 7.4 Teste HSD de Tukey Assim como o teste LSD, a estatística HSD (Honestly Significant Diffe- rence) de Tukey é utilizada como critério para comparar duas médias a um nível α de significância. A diferença é que o teste de Tukey é mais conser- vador, mas não sem motivo, pois o mesmo foi construído com a finalidade de proteger o nível de significância da família de testes. Para aplicar o teste HSD de Tukey às médias dos cultivares, basta alterar o argumento mcomp = "lsd para mcomp = "tukey . Assim, será apresentado a seguir apenas o resultado do teste de mé- dias, omitindo a parte da ANOVA (que seria idêntica). Tukey’s test ------------------------------------------------------------------------ Groups Treatments Means a 1 50.9 b 3 49.73333 b 4 49.43333 b 2 49.43333 ------------------------------------------------------------------------ 7.5 Teste SNK Também é baseado na estatística HSD de Tukey, com a diferença que o valor tabelado não é único em todas as comparações, mas leva em conta o número de médias ordenadas abrangidas pelo contraste. Assim, a comparação de médias mais próximas é feita de forma menos rigorosa que com o Tukey. O teste é executado modificando o argumento: mcomp = "snk . Student-Newman-Keuls’s test (SNK) ------------------------------------------------------------------------ Groups Treatments Means a 1 50.9 b 3 49.73333 b 4 49.43333 b 2 49.43333 ------------------------------------------------------------------------ 7.6 O critério de Scott-Knott Scott e Knott (1974) utilizaram a análise de agrupamento como técnica de comparação de médias no contexto da análise e variância, em substituição aos testes post-hoc. A diferença básica obtida é que não há sobreposição de grupos de médias. Trocando em miúdos, um mesmo tratamento não recebe duas ou mais letras classificatórias. O teste é executado modificando o argumento: mcomp = "sk c© 2016 Silva, A.R. Computação Estatística em R Capítulo 7. Procedimentos de comparações múltiplas de médias 55 . Scott-Knott test ------------------------------------------------------------------------ Groups Treatments Means 1 a 1 50.90000 2 b 3 49.73333 3 b 4 49.43333 4 b 2 49.43333 ------------------------------------------------------------------------ 7.7 Escolhendo o teste Nenhum dos procedimentos apresentados é ideal, de modo que a escolha, em especial dos testes post-hoc, deve é algo particular a cada tipo de situação. Por exemplo, o teste LSD é pouco rigoroso, mas não controla a taxa de erro da família. A correção de Bonferroni pode ser utilizada, entretanto não é recomendada quando lidando com um alto número de médias. O teste de HSD de Tukey controla a taxa de erro da família, mas também torna-se bastante rigoroso quando comparando muitas médias, digamos mais que 5 ou 6. Por outro lado, o testeSNK é baseado na mesma amplitude estudentizada usada no teste HSD, e leva em consideração a distância entre as médias envolvidas em cada comparação. Isso faz com que este teste seja menos rigoroso que o HSD, mas o mesmo falha em controlar a taxa de erro da família quando lidando, em geral, com 4 ou mais médias. Uma característica, provavelmente um problema, comum a todos esses testes é a possibilidade de sobreposição de classificações, isto é, não raramente enconramos médias sendo classificadas em dois ou mais grupos, o que torna mais complicada a discussão. O critério, por vezes chamado teste, de Scott- Knott não apresenta esse incoveniente e deve ser preferido para classificar um número grande de médias (digamos 7 ou mais). Em todos os casos, a precisão experimental (CV%) deve ser levada em consideração. Como regra prática, testes mais rigorosos devem ser aplicados quando o CV% for de médio a baixo. O tipo ou objetivo do estudo também é um critério muito importante na escolha do teste. Isso define que tipo de erro (tipo I ou tipo II) deve ser controlado e, sem dúvidas, isso facilita a escolha do teste. 7.8 Exercícios 1. Construa um contraste para testar a hipótese de que a média da variedade D de milho (exemplo do capítulo anterior) é maior que a média das demais variedades. Realize o teste com a função glht(). 2. Escolha e aplique um dos testes post-hoc para comparação de pares de médias de variedades. Qual foi seu critério de escolha? 3. Qual teste post-hoc você recomendaria para comparar médias dos 9 porta-enxertos de laranja, apresentados no exercício do capítulo anterior? Computação Estatística em R c© 2016 Silva, A.R. Capítulo 8 Experimentos multifatores Um fator pode ser definido como aquilo que supostamente afeta a resposta ou aquilo que se quer estudar, no caso de um fator de tratamento. Os níveis de um fator correpondem aos valores que o mesmo assume. Ensaios envolvendo apenas um fator não permitem estudar as interações que podem existir entre os fatores. Por exemplo, em estudos de adubação ou calagem, é esperado que hajam diferenças nas respostas obtidas com as doses de acordo com a lâmina de irrigação aplicada. Assim, dose e lâmina seriam dois fatores de tratamento à serem estudados simultaneamente num mesmo experimento. Logo, chamamos de experimentos multifatores aqueles em que se estuda o efeito de dois ou mais fatores simultaneamente. 8.1 Estruturas dos fatores, tipos de efeito e interação Um fator pode ser do tipo quali ou quantitativo, havendo diferenças na forma de estudo desse fator. Não obstante, há dois tipos de estrutura de relacionamento entre fatores: • Estrutura cruzada: quando os níveis de um fator são sempre os mes- mos para todos os níveis dos outros fatores. • Estrutura aninhada ou hierárquica: quando os níveis de um fator variam de acordo com os níveis dos outros fatores. Experimentos multifatores com estrutura cruzada permitem o estudo de dois tipos de efeito: • Efeito principal: trata-se basicamente da variação entre as médias dos níveis de um fator, desconsiderando os níveis dos outros fatores. • Efeito de interação: refere-se a influência de um nível de um fator no comportamento dos níveis dos demais fatores, ou seja, a dependência entre fatores. 58 Capítulo 8. Experimentos multifatores Veremos primeiramente como estudar graficamente o efeito da intera- ção. Depois, por ocasião da análise de variância, veremos o teste para a interação. Para isso, considere um experimento de fertilização com vinhaça em cana-de-açúcar. Foi medida a produção de 3 variedades, cada uma sob o efeito de 4 doses de vinhaça, em 3 blocos casualizados. Os dados estão disponíveis em: http://arsilva.weebly.com/dados.html. > cana <- read.csv2("http://arsilva.weebly.com/uploads/2/ + 1/0/0/21008856/vinhaca.csv", header = TRUE) > cana$vinhaca <- as.factor(cana$vinhaca) > cana$bloco <- as.factor(cana$bloco) Um estudo inicial da interação é feito dispondo no plano bidimensio- nal as médias de produção das combinações de dose e variedade, o que chamamos de gráfico de interação (Figura 8.1). > with(cana, interaction.plot(x.factor = vinhaca, + trace.factor = variedade, response = producao)) 66 68 70 72 74 76 vinhaca m ea n of p ro du ca o 0 500 1000 1500 variedade C B A Figura 8.1: Gráfico de interação variedade × dose de vinhaça. Note, por exemplo, que na dose 0 a variedade B apresentou a menor média de produção. Mas quando se aumentou a dose para 1000, B superou A. Essa mudança de comportamento das variedades de acordo com a dose de vinhaça é indicativo de que esses dois fatores apresentam interação. 8.2 Experimentos fatoriais O esquema fatorial é o mais simples dos esquemas multifatores com fatores com estrutura cruzada, podendo-se estudar simultaneamente dois ou mais fatores, cada um deles com dois ou mais níveis. O ensaio com vinhaça apresentado anteriormente consiste de um fatorial 3 × 4. Podemos então dizer que há 12 tratamentos (combinações de níveis). Note ainda que estes c© 2016 Silva, A.R. Computação Estatística em R http://arsilva.weebly.com/dados.html Capítulo 8. Experimentos multifatores 59 tratamentos podem ser casualizados em qualquer delineamento (DIC, DBC, quadrado latino, látice etc.). O modelo de ANOVA associado ao ensaio é: yijk = µ+ αi + βj + αjβj + λk + �ijk em que yijk é o valor da variável resposta Y sob o efeito do i-ésimo nível do fator A (variedade no caso), j-ésimo nível do fator B (dose de vinhaça no caso) e k-ésimo bloco; αi, βj , λk são efeitos do fator A, fator B e bloco, respectivamente; �ijk é o erro aleatório associado a yijk. Assim, testamos na ANOVA os efeitos principais do fator A e do fator B, que correspondem às hipóteses: H0 : µ1 = µ2 = ... = µI (fator A) e H0 : µ1 = µ2 = ... = µJ (fator B) bem como o teste da interação (H0 : αjβj = 0 ∀i, j ou que não há interação entre os fatores). Havendo interação significativa, é preciso estudar os níveis de um fator dentro de cada nível do outro, procedimento que chamamos de desdobramento da interação. Apesar de a biblioteca ExpDes estar preparada para automatizar to- dos os cálculos da ANOVA e já desdobrar a interação, veremos primeiro como fazer a ANOVA usando a implementação pardão lm() do R. Não sem motivo, pois essa abordagem será necessária, e provavelmente a única solu- ção, quando lidarmos com análise multivariada de variância (MANOVA). Além disso, análises de resíduos e testes das pressuposições do modelo só podem ser realizados quando ajustamos o modelo via lm(). No exemplo da vinhaça, temos: > lm.vinhaca <- lm(producao ~ bloco + variedade * vinhaca, + data = cana) > anova(lm.vinhaca) Analysis of Variance Table Response: producao Df Sum Sq Mean Sq F value Pr(>F) bloco 2 3.389 1.694 0.7669 0.47649 variedade 2 278.222 139.111 62.9577 7.880e-10 *** vinhaca 3 226.306 75.435 34.1398 1.871e-08 *** variedade:vinhaca 6 39.778 6.630 3.0004 0.02689 * Residuals 22 48.611 2.210 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Perceba que tanto a interação quanto os efeitos principais foram signi- ficativos (p < 0.05). Agora, o desdobramento da interação pode ser feito i) aplicando um teste post-hoc aos níveis de variedade em dada dose e ii) ajustando-se modelos de regressão para a produção de cana em função da dose de vinhaça em cada variedade. No R há diversas funções para se fa- zer isso, podendo-se citar algumas dos pacotes ExpDes e agricolae. Por Computação Estatística em R c© 2016 Silva, A.R. 60 Capítulo 8. Experimentos multifatores facilidade, utilizaremos a função fat2.rbd() do ExpDes, que realiza tanto a ANOVA quanto os testes post-hoc e a análise de regressão. > with(cana, + fat2.rbd(factor1 = variedade, factor2 = vinhaca, + block = bloco, resp = producao, quali = c(TRUE, FALSE), + mcomp = "tukey", fac.names = c("Variedade", "Dose"), + sigT = 0.05, sigF = 0.05)) Por economia de espaço (!!), omitiremos aqui o resultado. Obs.: como estamos fazendo regressão com o fator vinhaça, ceritifique- se de que a coluna vinhaca é numérica
Compartilhar