R para Entomologistas: nível básico


CAPÍTULO 3


Análise de variáveis contínuas coletadas em experimentos com esquemas fatoriais

 

José Bruno Malaquias, Tatiane Caroline Grella, Jéssica Karina da Silva Pachú

 

https://doi.org/10.4322/mp.2020-12.c3

 

Resumo

Nesta seção, estamos expondo um exemplo de análise de banco de dados hipotético que foi delineado em blocos ao acaso e com estrutura de tratamento em esquema fatorial 2 x 2. Como a variável hipotética é contínua, então novamente exploramos algumas linhas de comando que são essenciais para testes de normalidade e homogeneidade de variâncias, para posterior análise de variância e testes de comparação de médias. Apresentamos todas as linhas de comando com um passo a passo de forma comentada e detalhada. Utilizaremos os seguintes pacotes: readxl, MASS e ExpDes.pt. Os comandos a serem executados no R estão sendo apresentados com a cor azul.

Palavras-chave: análise fatorial; ANOVA; dois fatores; variável contínua; desdobramento; interação.


1. Importação do banco de dados

Após fazer o download dos arquivos utilizados neste capítulo ao clicar aqui, é necessário verificar em qual local do computador (diretório) o arquivo que será analisado se encontra.

Para isso, vamos usar o comando getwd(), que irá verificar em qual diretório você está trabalhando: getwd()

Caso seja necessário alterar o diretório, basta seguir os passos:

Session -> Set working Directory -> Choose Directory

Após escolher um diretório é possivel ver quais os arquivos existem no mesmo, para isso, usamos a função: list.files() que mostrará a lista de arquivos dentro do seu diretório.

Após a escolha do diretório, vamos ler o arquivo que será analisado.

Para ler o arquivo em excel, nós iremos precisar do pacote readxl [1].

Uma forma elegante de carregar o pacote é utilizar a linha de comando (essa linha também funciona caso o pacote não esteja instalado, pois automaticamente a instalação será realizada):

if (!require("readxl")) install.packages("readxl"); require(readxl)

O sinal de exclamação indica negação, então a linha de comando acima é traduzida como: "caso o pacote necessário (readxl) nao esteja instalado, instale o pacote, e em seguida carregue-o"

Vamos agora explorar uma outra forma de ler o banco de dados, mas utilizando o mesmo pacote. Primeiro vamos colocar o nosso path para leitura do arquivo, veja que atribui o meu path com o nome MinhaPastaEArquivo (cada um pode atribuir o nome que desejar):

MinhaPastaEArquivo <- "C:/Users/Bruno/Google Drive/Grupo de Discussão/Grupo - Linguagem R/Material-01082020/BD1-Anovatwoway.xlsx"

Veja que parte do path é pessoal: "C:/Users/Bruno/Google Drive/Grupo de Discussão/Grupo - Linguagem R/Material-01082020

É possível extrair essa parte, apenas rodando o comando getwd(), copiando e colando o que aparecer.

A outra parte extraímos do resultado de list.files()

Para mostrar os nomes das planilhas disponíveis, é necessário executar a seguinte linha de comando:

excel_sheets(path=MinhaPastaEArquivo)

Vamos utilizar agora a função read_excel para ler o arquivo e especificar a planilha que temos interesse.

df <-read_excel(path=MinhaPastaEArquivo, sheet = "Planilha1")

Veja que estamos atribuindo o nome do banco de dados agora de df

head(df): para ler o cabeçalho do dataframe.

View(df): para ver o banco de dados em outra janela

attach(df): para enviar o banco de dados para a memória


2. Testes de pressuposição da ANOVA

Para testar a homogeneidade de variâncias, iremos utilizar o teste de Bartlett, com a função bartlett.test

Vresp: é a variável resposta de interesse, ou variável dependente

Fator1: é o fator 1, ou a variável independente 1

Fator2: é o fator 1, ou a variável independente 2

Bloco: é o fator 1, ou a variável independente 2

bartlett.test(df$Vresp, df$Fator1)

teste de Bartlett para um estudo conduzido em DIC - com apenas um fator.

bartlett.test(df$Vresp, df$Fator1, df$Bloco)

teste de Bartlett para um estudo conduzido em DBC - com apenas um fator.

bartlett.test(df$Vresp, df$Fator1, df$Fator2)

teste de Bartlett para um estudo conduzido em DIC com esquema fatorial (2 fatores).

bartlett.test(df$Vresp, df$Fator1, df$Fator2, df$Bloco)

teste de Bartlett para um estudo conduzido em DBC com esquema fatorial (2 fatores).

Teste de Bartlett: Se o p-value for superior a 0.05, as variâncias são homogêneas.

Teste de Shapiro: shapiro.test

Se o p-value for superior a 0.05, há normalidade dos dados.


3. ANOVA com dois fatores (two-way ANOVA)

Esse é o modelo que iremos trabalhar para two way-ANOVA:

Modelofatorial<-aov(ALT~FAT1*FAT2+BLOC, data=df)

Veja que usamos a função aov para rodar a ANOVA.

ALT: é a variável resposta.

FAT1: é o fator 1.

FAT2: é o fator 2.

BLOC: é o fator bloco.

Essas designações ALT, FAT1, FAT2 e BLOC são provenientes do seguinte banco de dados:

summary(Modelofatorial): mostra o resumo da ANOVA

Veja que essa análise contém um erro. O erro desse output está no número de graus de liberdade para o fator BLOC (que corresponde a blocos). O número correto seria 3. A fórmula de graus de liberdade é n-1, nesse caso temos 4 blocos, que perfazeria BLOC= 3.

Antes de seguir com a análise precisamos perguntar se é fator, porque temos variáveis dependentes e independentes, quando elas são dependentes precisa ser fator, para isso usamos o comando:

is.factor(df$FAT1)

is.factor(df$FAT2)

is.factor(df$BLOC)

Quando as variáveis são independentes é necessário converter, para isso precisamos utilizar a função as.factor e atualizar cada fator convertido

df$FAT1<-as.factor(df$FAT1)

df$FAT2<-as.factor(df$FAT2)

df$BLOC<-as.factor(df$BLOC)

ATENÇÃO: não faça esse procedimento de conversão em fator para as suas variáveis dependentes (variáveis respostas).

Após a conversão das variáveis independentes em fator, nós precisamos testar novamente se as variáveis são fatores:

is.factor(df$FAT1)

is.factor(df$FAT2)

is.factor(df$BLOC)

o resultado deverá ser TRUE

Agora que as suas variáveis independentes são fatores, você pode rodar a two-way ANOVA.

Modelofatorial<-aov(ALT~FAT1*FAT2+BLOC, data=df)

ummary(Modelofatorial)

Perceba que o número de graus de liberdade do fator BLOC agora está correto!!

Agora poderemos aplicar os testes de comparações de médias. Para isto, vamos utilizar a função fat2.dbc, vamos carregar o pacote com a nossa forma elegante:

if(!require("ExpDes.pt")) install.packages("ExpDes.pt"); require(ExpDes.pt)

fat2.dbc(FAT1, FAT2, BLOC, ALT, quali = c(TRUE, TRUE), mcomp = "tukey",

fac.names = c("FATOR 1", "FATOR 2"), sigT = 0.05, sigF = 0.05)

Como a interação não foi significativa (podemos observar isso na linha "FAT1:FAT2") serão analisados apenas os efeitos simples.


4. Outros exemplos

Para acessar o script e banco de dados, clique aqui. Vamos escolher o diretório no qual queremos trabalhar:

Session -> Set working Directory -> Choose Directory

Abra a pasta que contém o seu banco de dados.

Vamos usar o comando list.files() para visualizarmos os nomes de todos os arquivos que contém na pasta selecionada.

Quando seu banco de dados está no formato do Excel é necessário rodar o comando

df<-read_excel("BD.xlsx", sheet = 1), onde:

df é o nome dado ao dataframe (você pode colocar o nome que quiser);

read_excel é o comando para ler o arquivo do Excel

BD. é o nome do seu arquivo dentro da pasta selecionada

xlsx é a extensão do arquivo com o qual você está trabalhando

sheet = 1 faz referência a qual aba do seu arquivo do Excel quer analisar

Para ver o cabeçalho do banco de dados a função utilizada é: head(df, n=2) neste caso, em específico, será visualizada apenas 2 linhas do seu banco de dados.

Antes de realizarmos os testes de normalidade e homogeneidade é necessário verificar se as variáveis independentes são fatores.

Neste caso, as variáveis são: Ins, Fung e Bloco

Ins

Fung

Bloco

A

X

1

A

X

2

A

X

3

A

X

4

B

X

1

B

X

2

B

X

3

Para realizar a verificação é necessário utilizar os comandos:

is.factor(df$Ins)

is.factor(df$Fung)

is.factor(df$Bloco)

A resposta para a verificação precisa ser: TRUE

Caso a resposta de: FALSE, é necessário converter as variáveis independentes em fatores, para isso utilizamos a função "as.factor":

df$Ins<-as.factor(df$Ins)

df$Fung<-as.factor(df$Fung)

df$Bloco<-as.factor(df$Bloco)

em seguida é necessário verificar se a conversão foi bem sucedida:

is.factor(df$Ins)

is.factor(df$Fung)

is.factor(df$Bloco)

Em seguida é necessário selecionar qual variável deseja analisar

df$VRESP<-df$D

Neste caso, trabalharemos com a variável "D", proveniente do banco de dado.

Atenção: o nome da variável deve ser idêntico ao escrito no banco de dado.

Depois de selecionarmos a variável que queremos analisar, podemos realizar os testes de normalidade e homogeneidade:

Para normalidade usamos o comando:

shapiro.test(df$VRESP)

Shapiro-Wilk normality test

data: df$VRESP

W = 0.95084, p-value = 0.5031

Para que os dados sejam considerados normais, o valor de "p" tem que ser maior que 0.05. Dessa forma podemos verificar que a análise em questão passou no teste de normalidade, pois p=0.5031.

Para homogeneidade usamos o comando:

bartlett.test(df$VRESP, df$Ins, df$Fung, df$Bloco)

Bartlett test of homogeneity of variances

data: df$VRESP and df$Ins

Bartlett's K-squared = 2.3704, df = 1, p-value = 0.1237

Para que os dados sejam considerados homogêneos, o valor de "p" tem que ser maior que 0.05. Dessa forma podemos verificar que a análise em questão passou no teste de homogeneidade, pois p=0.1237.

OBS: caso os dados não atendam à normalidade e homogeneidade é necessário transforma-los, verifique como fazer isso mais a baixo.

Em seguida podemos rodar a ANOVA, para isso utilizaremos a função "aov":

Modelofatorial<-aov(VRESP~Ins*Fung+Bloco, data=df)

summary(Modelofatorial)

Em seguida fazemos um Summary para verificar o resultado do teste a cima:

Através do teste realizado podemos observar que existe diferença significativa nos grupos quando analisados separadamente e também na interação inseticida versus fungicida.

OBS: quando a interação não for significativa, não é necessário fazer desdobramento da interação inseticida versus fungicida.

Quando ocorre diferença significativa podemos rodar o teste de Tukey, o qual faz comparações múltiplas, para isso é necessário instalar o pacote "ExpDes" [2], utilizando o comando:

if(!require("ExpDes.pt")) install.packages("ExpDes.pt"); require(ExpDes.pt)

Esse comando verifica se você possui o pacote necessário e caso não possua, ele baixa e instala esse pacote.

Após a instalação do pacote, podemos rodar o teste de Tukey, com o seguinte comando:

  

Esse comando já especifica que a significância dos resultados é de 95%

Como resultado do teste de Tukey, obtemos os desdobramentos:


Letras diferentes indicam que houve diferença significativa entre os tratamentos.Para apresentarmos os resultados finais nos artigos, utilizamos essas letras, mas paraobtermos a média juntamente com uma medida de variabilidade desvio ou erro padrão que devemos apresentar é necessário instalar o pacote "Rmisc" e rodar um último co-mando:

if (!require("Rmisc")) install.packages("Rmisc"); require(Rmisc)

summarySE(df, measurevar = "VRESP", groupvars = c("Ins", "Fung"))

Obtemos como resultado:

Um exemplo de tabela que pode ser construída a partir dos resultados obtidos é:

Letras maiúsculas comparam colunas.

Letras minúsculas comparam linhas.


5. Caso que necessita de transformação

Clique aqui para acessar o banco de dados e script.

Vamos ler o banco de dados:

df<-read_excel("BD (1).xlsx", sheet = 1)

head(df, n=2)

Vamos testar as pressuposições:

shapiro.test(df$VRESP)

bartlett.test(df$VRESP, df$Ins, df$Fung, df$Bloco)

Perceba que os dados não atendarem às pressuposições de normalidade e homogeneidade de variâncias (p < 0.05). Portanto, é necessário transformá-los, para isso, precisaremos do pacote MASS [3] e usaremos o comando:

(df$VRESP_box = (df$VRESP ^ lambda - 1)/lambda): aqui inserimos a fórmula de Box-Cox [5].

Após a transformação devemos repetir os testes "Shapiro" e "Bartlett" para verificar se os dados atendem as pressuposições de normalidade e homogeneidade (SE ATENTAR A FORMA DE ESCREVER O COMANDO, POIS AGORA OS DADOS ESTÃO TRANSFORMADOS, ENTÀO É NECESSÁRIO ACRESCENTAR "box").

shapiro.test(df$VRESP_box)

bartlett.test(df$VRESP_box, df$Ins, df$Fung, df$Bloco)

Após isso vamos rodar a análise de variância:

if(!require("ExpDes.pt")) install.packages("ExpDes.pt"); require(ExpDes.pt)

fat2.dbc(Ins, Fung, Bloco, VRESP_box, quali = c(TRUE, TRUE), mcomp = "tukey",

fac.names = c("Inseticida", "Fungicida"), sigT = 0.05, sigF = 0.05)

if (!require("Rmisc")) install.packages("Rmisc"); require(Rmisc)

summarySE(df, measurevar = "VRESP", groupvars = c("Ins", "Fung"))

Quando é necessário fazer a transformação dos dados, devemos nos atentar para os valores de médias que colocamos na tabela dos resultados finais, pois elas não devem ser dos dados transformados e sim aqueles originais, os quais são obtidos na análise descritiva acima com a função summarySE do pacote Rmisc [4].


6. Referências dos pacotes utilizados

[1] Wicham H., Bryan J. readxl: Read Excel Files. R package version 1.3.1. 2019. https://CRAN.R-project.org/package=readxl

[2] Ferreira E.B., Cavalcanti P.P., Nogueira D.A. ExpDes.pt: Pacote Experimental Designs (Portuguese). R package version 1.2.0. 2018. https://CRAN.R-project.org/package=ExpDes.pt

[3] Venables W.N., Ripley B.D. Modern Applied Statistics with S. Fourth Edition. Springer, New York. 2002.

[4] Hope R.M. Rmisc: Rmisc: Ryan Miscellaneous. R package version 1.5. https://CRAN.R-project.org/package=Rmisc. 2013.

[5] Box G., Cox DR. An analysis of transformations. Journal of the Royal Society, 26: 211-252. 1964.


7. Referências recomendadas

Crawley, M.J. The R book. John Wiley & Sons, 2012.

Matloff Norman. The art of R programming: A tour of statistical software design. No Starch Press, 2011.

Peternelli L.A., Mello M.P. Conhecendo o R: uma visão estatística. Viçosa: UFV, v. 1, 2011.


Autores

José Bruno Malaquias, Instituto de Biociências - Câmpus de Botucatu. R. Prof. Dr. Antônio Celso Wagner Zanin, 250 - Distrito de Rubião Junior - Botucatu/SP, Brasil - CEP 18618-689

Tatiane Caroline Grella - Biologia Celular e Molecular na Universidade Estadual Paulista "Júlio de Mesquita Filho" - Laboratório de Ecotoxicologia e Conservação de Abelhas (LECA) - Avenida 24 A,1515 - Bela Vista - CEP 13506-900 - Rio Claro/SP, Brasil

Jéssica Karina da Silva Pachú, Departamento de Entomologia e Acarologia - LEA Avenida Pádua Dias, 11 - CEP 13418-900 - Piracicaba/SP, Brasil

* Autor para correspondência: malaquias.josebruno@gmail.com