Ajuste de modelos lineares e mistos no ambiente R

09 e 10 de Outubro de 2014 - Piracicaba - SP
Prof. Dr. Walmes M. Zeviani
Escola Superior de Agricultura “Luiz de Queiroz” - USP
Lab. de Estatística e Geoinformação - LEG
Pós Graduação em Genética e Melhoramento de Plantas Departamento de Estatística - UFPR

Leitura e edição de dados

Arquivos texto com caracter separador

##-----------------------------------------------------------------------------
## Dados com separador de campo que é tabulação.

da <- read.table("brasilCopa2014.txt", header=TRUE, sep="\t")
str(da)

da <- read.table("brasilCopa2014.txt", header=TRUE, sep="\t",
                 stringsAsFactors=FALSE, na.string="-")
str(da)

##-----------------------------------------------------------------------------
## Dados com separador de campo que é ponto e vírgula.

da <- read.table("brasilCopa2014.csv", header=TRUE, sep=";",
                 stringsAsFactors=FALSE, na.string="-")
str(da)

Arquivos texto com comprimento fixo de campo

##-----------------------------------------------------------------------------
## Dados com comprimento fixo de campo.

l <- c(0,3,16,28,31,35,38,43,45,47,49,50,54,60,64,66,70)

db <- read.fwf("brasilCopa2014fwf.txt", header=TRUE, sep="\t",
               widths=diff(l), stringsAsFactors=FALSE)
str(db)

Edição de tabelas

##-----------------------------------------------------------------------------
## Ler dados de um experimento em blocos com variedades de batatinha. Os
## dados estão no formato amplo.

bat <- read.table("pimentel_batatinha_wide.txt", header=TRUE, sep="\t")
str(bat)

bat

require(reshape)
## Loading required package: reshape
## Empilhando os valores, de amplo para longo.
batl <- melt(bat, id.vars="variedade", variable_name="bloco")
str(batl)

## De longo para amplo (caminho inverso).
cast(batl, variedade~bloco, value="value")

##-----------------------------------------------------------------------------
## Ordenar a tabela.

require(plyr)
## Loading required package: plyr
## 
## Attaching package: 'plyr'
## 
## The following objects are masked from 'package:reshape':
## 
##     rename, round_any
arrange(batl, variedade, bloco)
arrange(batl, value)
arrange(batl, variedade, value)

##-----------------------------------------------------------------------------
## Filtrar a tabela (tomar subconjuntos).

subset(batl, variedade=="Kennebec")
subset(batl, variedade%in%c("Kennebec","Buena Vista"))
subset(batl, is.element(variedade, c("Kennebec","Buena Vista")))

subset(batl, bloco=="I")
subset(batl, bloco%in%c("I","IV") & variedade=="Kennebec")
subset(batl, bloco%in%c("I","IV") | variedade=="Kennebec")

subset(batl, value>25)
subset(batl, value<12)

##-----------------------------------------------------------------------------
## Classificar valoes.

range(batl$value)
cls <- c(-Inf,15,25,Inf)
findInterval(batl$value, vec=cls)

cut(batl$value, breaks=cls)
cut(batl$value, breaks=cls, labels=c("baixa","media","alta"))

##-----------------------------------------------------------------------------
## Adicionar uma coluna à tabela de dados.

## Classe de produtividade.
batl$pcls <- cut(batl$value, breaks=cls,
                 labels=c("baixa","media","alta"))
str(batl)

batl <- transform(batl, lprod=log10(value), prods=value^2)
str(batl)

Escrever tabela

##-----------------------------------------------------------------------------
## Campos separados por ;.

write.table(batl, file="pimentel_batatinha_mod.txt", sep=";",
            row.names=FALSE, col.names=TRUE, quote=FALSE)

print(sessionInfo(), locale=FALSE)
## R version 3.1.1 (2014-07-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  base     
## 
## other attached packages:
## [1] plyr_1.8.1       reshape_0.8.5    rmarkdown_0.2.68 knitr_1.6       
## 
## loaded via a namespace (and not attached):
## [1] digest_0.6.4    evaluate_0.5.5  formatR_1.0     htmltools_0.2.6 methods_3.1.1  
## [6] Rcpp_0.11.0     stringr_0.6.2   tools_3.1.1
Sys.time()
## [1] "2014-10-07 19:24:00 BRT"