introduÇÃo ao r - instituto de matemática e...
TRANSCRIPT
INTRODUÇÃO AO RINTRODUÇÃO AO RBaseado nos livros
“An Introduction to R”
de W. N. Venables, D. M. Smith e Equipe do R
e “A Handbook of Statistical AnalysesUsing R”
de Brian S. Everitt e Tursten Hothorn
MAE399 – Simulação e Análise de DadosProf. Fábio Prates MachadoMonitor: Ivan Costa Bernardo
COMEÇANDO...
• Criar subdiretório para armazenar arquivos de dados (diretório de trabalho)
▫ Arquivo > Mudar dir...▫ Arquivo > Mudar dir...
• Script ou direto no console
AJUDA• Informações sobre funções (ex.: solve):▫ help(solve) ou▫ ?solve
• Informações sobre caracteres e palavras com • Informações sobre caracteres e palavras com significado sintático (ex.: [[):▫ Help(“[[“) ou▫ ?(“[[“)
• Ajuda em HTML (navegável com hyperlinks):▫ help.start()
• Exemplos:▫ example(tópico)
SÍMBOLOS QUE PODEM SER USADOS
• Todos os caracteres alfanuméricos
• Letras acentuadas
• ‘.’ (ponto)• ‘.’ (ponto)
• ‘_’ (underscore)
• Obs.: nomes precisam começar com letra ou ‘.’
COMANDOS• Expressão:▫ avaliada, impressa, e o valor é perdido▫ Ex.:
� > 5^2� > 5^2� [1] 25
• Atribuição:▫ avalia uma expressão▫ passa o valor para a variável▫ resultado não é automaticamente impresso▫ Ex.:
� y = log(x+2)
COMANDOS (cont.)
•
DIRECIONAR SAÍDA PARA ARQUIVO
• sink (“nome do arquivo”)
• Para restabelecer a saída para o console:▫ sink()▫ sink()
OBJETOS
• Variáveis
• Arrays
• Matrizes• Matrizes
• Strings de caracteres
• Funções
• Outras estruturas mais gerais produzidas a partir desses componentes
OBJETOS (cont.)
• Para exibir os nomes dos objetos armazenados no momento no R:▫ objects()▫ objects()
▫ ou ls()
• Para remover objetos:▫ rm (obj1, obj2, ..., objn)
• Ao final de cada sessão:
▫ objetos são armazenados em .Rdata
▫ linhas de comando são salvas em .Rhistory
MANIPULAÇÕES DE NÚMEROS E VETORES• Construir um vetor com os números 10,4; 5,6; 3,1; 6,4 e 21,7:▫ x <- c(10.4, 5.6, 3.1, 6.4, 21.7)▫ x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
▫ c(10.4, 5.6, 3.1, 6.4, 21.7) -> x
▫ x = c(10.4, 5.6, 3.1, 6.4, 21.7)
▫ assign (“x”, c(10.4, 5.6, 3.1, 6.4, 21.7))
• Números isolados são considerados vetores de comprimento 1
MANIPULAÇÕES DE NÚMEROS E VETORES (cont.)
x = c(10.4, 5.6, 3.1, 6.4, 21.7)
y = c(x, 0, x) y = c(x, 0, x)
cria10.4 5.6 3.1 6.4 21.7 0 10.4 5.6 3.1 6.4 21.7
ARITMÉTICA• Operações aritméticas elementares:▫ +, -, *, / e ^
• Outras funções comuns disponíveis:▫ , , , , , ...▫ log, exp, sin, cos, tan, sqrt...▫ max e min. Ex. (com x = c(1, 3.5, 2)):
� max (1, 3.5, 2) ou� max (x)
▫ range(x) produz c(min(x), max(x))▫ length(x) � número de elementos em x▫ sum(x) � soma dos elementos de x▫ prod(x) � produto dos elementos de x
NÚMEROS COMPLEXOS
• Explicitar a parte complexa!▫ > sqrt(-16)
▫ [1] NaN▫ [1] NaN
▫ Mensagens de aviso perdidas:
▫ In sqrt(-16) : NaNs produzidos
▫ > sqrt(-16 + 0i)
▫ [1] 0+4i
FUNÇÕES ESTATÍSTICAS
• mean(x)�média amostral
• var(x)� variância amostral:
▫ sum((x – mean(x))^2)/(length(x) – 1)▫ sum((x – mean(x))^2)/(length(x) – 1)
▫ Se x é uma matriz n por p, o valor será a matriz ppor p de covariância amostral. (Linhas de x são
vistas como vetores p-variados independentes.)
ORDENAÇÃO DE VETORES• sort(x)� devolve um vetor com os elementos de x em ordem crescente▫ > x = c(5.9, 8.7, 2.5, 3.1, 3)▫ > sort (x)▫ > sort (x)▫ [1] 2.5 3 3.1 5.9 8.7
• order: fornece os índices dos elementos do vetor x na ordem crescente dos valores de x▫ > order (x)▫ [1] 3 5 4 1 2
• rank (x): fornece os ranks de cada elemento de x▫ > rank (x)▫ [1] 4 5 1 3 2
ORDENAÇÃO DE DATA FRAMES
• Para ordenar um data frame (ex.: datafr) de acordo com uma variável (ex.: Critério):
▫ indices = order (datafr$Critério, ▫ indices = order (datafr$Critério, decreasing = T)
▫ datafr_ordenado = datafr[indices,]
SEQUÊNCIAS• a:b� vetor c(a, a+1, ..., b-1, b)• Função seq (para produzir o vetor acima):▫ seq(a, b)▫ ou seq(from = a, to = b)▫ ou seq(from = a, to = b)▫ ou seq(to = b, from = a)
• Outros parâmetros da função seq:▫ by� tamanho dos saltos. (Default: by = 1) Ex.:
� > seq(2, 5, by = 0.6)� [1] 2.0 2.6 3.2 3.8 4.4 5.0
▫ length� comprimento do vetor a ser gerado. Ex.:� > seq(2,5, length = 5)� [1] 2.00 2.75 3.50 4.25 5.00
SEQUÊNCIAS (cont.)
• Função rep:
▫ > v = c(1, 2.5, pi, 9.9)
▫ > rep (v, 2) ou rep (v, times = 2)▫ > rep (v, 2) ou rep (v, times = 2)
▫ [1] 1.000000 2.500000 3.141593 9.900000 1.000000 2.500000 3.141593 9.900000
▫ > rep (v, each = 2)
▫ [1] 1.000000 1.000000 2.500000 2.500000 3.141593 3.141593 9.900000 9.900000
VETORES LÓGICOS• Valores possíveis: TRUE, FALSE ou NA
• Abreviações:▫ T = TRUE▫▫ F = FALSE
▫ Obs.: T e F são apenas variáveis. (Podem ser redefinidas.)
▫ Exemplo:� > x = c(1, 2, 3, 4.5, 6, 7.5, 10)� > maior_que_5 = x > 5� > maior_que_5� [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE
OPERADORES LÓGICOS
• >, >=, <, <=, == e !=
• & ou && � “e”
• | ou || � “ou”• | ou || � “ou”
• Vetores lógicos forçados para vetores numéricos:▫ FALSE = 0
▫ TRUE = 1
VALORES FALTANTES
• NA:
▫ Valor não disponível (not available) ou faltante num vetornum vetor
▫ Qualquer operação com NA resulta em NA.
▫ is.na(x)� diz se os elementos de x são ou não NA. Ex.:
� > x = numeric()
� > x[3] = 10
� > is.na(x)
� [1] TRUE TRUE FALSE
VALORES FALTANTES (cont.)
• NaN:
▫ Valor faltante produzido por uma operação numérica. Ex.: 0/0, Inf – Inf, sqrt(-4)...numérica. Ex.: 0/0, Inf – Inf, sqrt(-4)...
▫ Obs.:� if.na(x) vale TRUE para NA e NaN
� if.nan(x) vale TRUE apenas para NaN
VETORES DE CARACTERES• Delimitar as sequências de caracteres com aspas simples ou duplas. Ex.:▫ “São Paulo”▫ ou ‘São Paulo’▫ ou ‘São Paulo’
• Sequências de escape com \:▫ \n � nova linha▫ \t � tab▫ \b � backspace▫ \v � tab vertical▫ \\ � barra invertida \▫ \’ � apóstrofo▫ \” � aspas
VETORES DE CARACTERES (cont.)• paste() concatena caracteres em strings.▫ Parâmetro sep� separador. (Default: caractere branco ‘ ’)
▫ Ex.:▫ Ex.:� > labs = paste (c('X', 'Y'), 1:10, sep = '-')
� > labs� [1] "X-1" "Y-2" "X-3" "Y-4" "X-5" "Y-6" "X-7" "Y-8" "X-9" "Y-10"
� > paste ('a ', 'b', 'c', sep = '')� [1] "a bc"� > paste ('a ', 'b', 'c')� [1] "a b c"
VETORES DE ÍNDICES• 1. Vetores lógicos. Ex.:▫ > x = c(10, 20, 30, 40, 50, NA)▫ > y = (x+1)[!is.na(x) & x > 25]▫ > y▫ > y▫ [1] 31 41 51
• 2. Vetores de números naturais. Ex.:▫ > x = c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
▫ > x[2]▫ [1] 20▫ > x[3:10]▫ [1] 30 40 50 60 70 80 90 100
VETORES DE ÍNDICES (cont.)• 3. Vetores de números inteiros negativos. Ex.:▫ > x = c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)▫ > y = x[-(1:5)] # Todos os elementos de x menos os 5 primeiros
▫ > y▫ > y▫ [1] 60 70 80 90 100
• 4. Vetores de strings de caracteres. Ex.:▫ > salarios = c(5000, 4500, 2300, 2300)▫ > names(salarios) = c('mae', 'pai', 'filho', 'filha')
▫ > salarios_pais = salarios[c('mae', 'pai')]▫ > salarios_pais▫ mae pai ▫ 5000 4500
VETORES DE ÍNDICES (cont.)
• Obs.: expressões indexadas podem aparecer, em uma expressão, no lado recebedor. Ex.:▫ > x[is.na(x)] <- 0 # Substitui os ▫ > x[is.na(x)] <- 0 # Substitui os valores faltantes em x por zeros
OBJETOS
• Modos (tipos):
▫ numeric
▫ complex▫ complex
▫ logical
▫ character
▫ raw
• Vetores: todos os elementos do mesmo modo
• Listas: elementos podem ser de modos distintos
OBJETOS (cont.)
• Para criar vetores vazios, utilizar character(), character(0), numeric(),
etc. Ex.:etc. Ex.:▫ > x = character()
▫ > x[2] = "bla"
▫ > x[3] = 10
▫ > x
▫ [1] NA "bla" "10"
OBJETOS (cont.)
• as.algumacoisa () � Forçar de um modo
para outro. Ex.:▫ > x = 0:5▫ > x = 0:5
▫ > x = 0:5 # x é do modo "numeric"
▫ > y = as.character(x) # y contém os elementos de x no modo "character"
▫ > y
▫ [1] "0" "1" "2" "3" "4" "5"
OBJETOS (cont.)
• Classe de um objeto:
▫ Para vetores simples, é o seu modo: numeric, logical, character, etc.logical, character, etc.
▫ Para outras estruturas, pode ser
� list
� matrix
� array
� factor
� data.frame
FATORES
• Um fator é um objeto vetorial usado para especificar uma classificação discreta (agrupamento) dos componentes de outros (agrupamento) dos componentes de outros vetores do mesmo comprimento.
FATORES (cont.)
• Exemplo: estados é um vetor com os estados
de origem de 10 pessoas:▫ > estados = c("SP", "MG", "RJ", "RS", ▫ > estados = c("SP", "MG", "RJ", "RS", "SP", "RJ", "SP", "RS", "SP", "BA")
▫ > fator_estado = factor(estados)
▫ > fator_estado
▫ [1] SP MG RJ RS SP RJ SP RS SP BA
▫ Levels: BA MG RJ RS SP
CALCULAR FUNÇÃO PARA CADA NÍVEL DE UM FATOR• Função tapply():
▫ > rendas = c(5.5, 4.3, 5.2, 4.1, 5.7, 6.0, 6.2, 5.0, 7.2, 3.1)6.0, 6.2, 5.0, 7.2, 3.1)
▫ > renda_media_por_estado = tapply(rendas, fator_estado, mean)
▫ > renda_media_por_estado
▫ BA MG RJ RS SP
▫ 3.10 4.30 5.60 4.55 6.15
FATORES ORDENADOS• Função ordered() cria fatores ordenados:▫ > escolaridade = c(4, 3, 4, 4, 5, 6, 6, 5, 5, 1)▫ > fator_escolaridade = ordered(escolaridade, levels = 1:6, labels = c("Analfabeto", "Lê e escreve", "Fundamental", "Médio", "Superior", escreve", "Fundamental", "Médio", "Superior", "Pós-graduação"))
▫ > fator_escolaridade▫ [1] Médio Fundamental Médio Médio Superior
▫ [6] Pós-graduação Pós-graduação Superior Superior Analfabeto
▫ 6 Levels: Analfabeto < Lê e escreve < Fundamental < ... < Pós-graduação
ARRAYS E MATRIZES
• Arrays: coleção subscrita de entradas de dados.
• Vetor de dimensões: se length(dim(x)) = k, então o vetor x é k-dimensional. Ex. (x é um então o vetor x é k-dimensional. Ex. (x é um
vetor de 1500 elementos):▫ # y será um array com dimensões 3 por 5 por 100 construído a partir dos elementos de x
▫ y = array (x, dim = c(3, 5, 100))
ARRAYS E MATRIZES (cont.)
• Ordem:
▫ 1º subscrito move-se mais rápido, ..., e o último, mais devagar. Ex.:mais devagar. Ex.:y[1,1,1], y[2,1,1], y[3,1,1],
y[1,2,1], ..., y[3,5,1],
y[1,1,2], ..., y[2,5,100], y[3,5,100]
ARRAYS E MATRIZES (cont.)
• Subseções: sequência de vetores de índices como subscritos. Se alguma posição de índices é deixada vazia, são tomados os elementos com deixada vazia, são tomados os elementos com todos os subscritos nessa posição. Ex.:
▫ y[,,72] é um array 3 por 5 contendo os valores� y[1,1,72], y[2,1,72], y[3,1,72], y[1,2,72], y[2,2,72], y[3,2,72],
y[1,3,72], y[2,3,72], y[3,3,72],
y[1,4,72], y[2,4,72], y[3,4,72],
y[1,5,72], y[2,5,72], y[3,5,72]
ARRAYS E MATRIZES (cont.)
• Criar arrays e matrizes:▫ x = array (conteúdo, dim = c(...))
▫ x = matrix (conteúdo, nrow = ..., ▫ x = matrix (conteúdo, nrow = ..., ncol = ...)
• Forçar um array ou matriz de volta para um vetor:▫ vetor = as.vector(x)
ARRAYS E MATRIZES (cont.)
• Unindo matrizes:▫ y à direita de x:
� cbind (x, y)� cbind (x, y)
▫ y abaixo de x:
� rbind (x, y)
• Obs.: válido analogamente para mais de duas matrizes
• Número de linhas de A: nrow (A)
• Número de colunas de A: ncol (A)
TABELA DE FATORES• Considere A e B variáveis categóricas (discretas).• Produzir uma tabela com as frequências de A e B:▫ tabela = table (A, B)
• Frequências marginais:▫ freq.marg.A = margin.table (tabela, 1)▫ freq.marg.B = margin.table (tabela, 2)
• Proporções:▫ prop.table (tabela)
• Proporções marginais:▫ prop.table (tabela, 1)▫ prop.table (tabela, 2)
EXPRESSÕES COM ARRAYS E MATRIZES
• Expressões realizadas elemento a elemento:▫ Z = 4.5*X/Y + W – 3
▫ Ex.: Z[1,1] = 4.5*X[1,1]/Y[1,1] + W[1,1] – 3▫ Ex.: Z[1,1] = 4.5*X[1,1]/Y[1,1] + W[1,1] – 3
• Produto de matrizes:▫ Para calcular AB, fazer A %*% B
• Produto externo (ou tensorial):▫ A %o% B # operação = *
▫ z = outer (x, y, f) # c/ fç f arbitr.
TRANSPOSIÇÃO E DETERMINANTES
• Transposta de uma matriz A:
▫ t(A)
• Transposta generalizada de um array:• Transposta generalizada de um array:▫ aperm(A, perm) # perm = permutação dos índices
• Determinante de A:
▫ det (A)
EQUAÇÕES LINEARES E INVERSÃO
• Suponha apenas A e b dados. x é um vetor ou matriz. Se b = Ax, podemos encontrar x assim:
▫ solve (A, b)▫ solve (A, b)
• Para calcular a inversa de A:▫ solve (A)
AUTOVALORES E AUTOVETORES• Para calcular autovalores e autovetores da matriz M:▫ eigen (M)
• O resultado é uma lista de dois componentes, • O resultado é uma lista de dois componentes, chamados▫ values...
� eigen(M)$val
▫ ... e vectors:� eigen(M)$vec
• Para calcular apenas os autovalores:▫ eigen (M, only.values = TRUE)$val
LISTAS E DATA FRAMES
• Lista: objeto constituído de uma coleção ordenada de objetos conhecidos como componentes. Ex.:▫ Lista.João = list (nome = “João”,
cônjuge = “Maria”, n.filhos = 3,cônjuge = “Maria”, n.filhos = 3,idade.filhos = c(4, 7, 9))
• Componentes: Lista.João[[1]], ..., Lista.João[[4]]ou Lista.João$nome, ..., Lista.João$iou Lista.João[[“nome”]]
• Número de componentes: length(Lista.João)
LISTAS E DATA FRAMES (cont.)
• Concatenar listas:▫ lista.união = c(lista.1, ..., lista.n)lista.n)
LISTAS E DATA FRAMES (cont.)
• Um data frame é uma lista da classe data.frame.
• Para formar um data frame:• Para formar um data frame:▫ Dados = data.frame (nome.1 = var.1, ..., nome.k = var.k, row.names = nomes) # nomes é um vetor de identificadores
LISTAS E DATA FRAMES (cont.)
• attach(Dados): elimina a necessidade de Dados$ para referir-se a Dados$variável
• detach(Dados): para desfazer • detach(Dados): para desfazer attach(Dados)
LENDO DADOS DE UM ARQUIVO
• CSV (Comma-separated values) com ‘,’ como separador decimal e ‘;’ como separador de colunas (como gerado pelo Excel 2010):colunas (como gerado pelo Excel 2010):▫ Dados = read.csv (“Nome do arquivo.csv”, dec = ‘,’, sep = ‘;’)
ou
▫ Dados = read.csv2 (“Nome do arquivo.csv”)
LENDO DADOS DE UM ARQUIVO (cont.)
• Função read.table():▫ Dados = read.table (“Arquivo.txt”, header = T, dec = ‘,’)
• Função scan(): para ler um arquivo e passar os dados para um vetor:▫ Vetor_num = scan(“Arquivo.txt”, sep = ‘,’)
▫ Vetor_str = scan(“Arquivo.txt”, ‘’) # Argumento “dummy” ‘’ para especificar que são strings, não variáveis numéricas.
BANCOS DE DADOS PRONTOS
• Para listar os bancos de dados atualmente disponíveis:▫ data()▫ data()
EDITAR DADOS NUM DATA FRAME
• Função edit():▫ Dados2 = edit (Dados1) # A versão alterada de Dados1 será atribuída a Dados2
• Função fix():▫ fix (Dados1) # O próprio data frame Dados1 é modificado
• Para entrar com novos dados pela interface de planilha:▫ Dados = edit(data.frame())
DISTRIBUIÇÕES DE PROBABILIDADEDistribuição Nome no R Argumentos adicionais
Beta beta shape1, shape2, ncp
Binomial binom size, prob
CauchyCauchy cauchy location, scale
Qui quadrado chisq df, ncp
Exponencial exp rate
F f df1, df2, ncp
Gama gamma shape, scale
Geométrica geom prob
Hipergeométrica hyper m, n, k
DISTRIBUIÇÕES DE PROB. (cont.)Distribuição Nome no R Argumentos adicionais
Lognormal lnorm meanlog, sdlog
Logística logis location, scale
Binomial negativaBinomial negativa nbinom size, prob
Normal norm mean, sd
Poisson pois lambda
Signed rank signrank n
t de Student t df, ncp
Uniforme unif min, max
Weibull weibull shape, scale
Wilcoxon wilcox m, n
DISTRIBUIÇÕES DE PROB. (cont.)
• Funções (--- = nome da distr. no R):
▫ d--- (x, ..., log = FALSE): densidade
▫ p--- (q, ..., lower.tail = TRUE, ▫ p--- (q, ..., lower.tail = TRUE,
log.p = FALSE): função de distribuição
acumulada
▫ q--- (p, ..., lower.tail = TRUE,
log.p = FALSE): quantil
▫ r--- (n, ...): geração de números aleatórios
AGRUPAMENTOS, LAÇOS E EXECUÇÕES CONDICIONAIS• Comandos podem ser agrupados em chaves –{expr.1; ...; expr.m}. O valor do grupo é
o resultado da última expressãoo resultado da última expressão
• Função ifelse ():
▫ ifelse (condição, valor_se_cond_verd, valor_caso_contr)
AGRUPAMENTOS, LAÇOS E EXECUÇÕES CONDICIONAIS• for:
▫ for (var.loop in seq) expressão
• Exemplo:• Exemplo:▫ xc <- split(x, ind)
▫ yc <- split(y, ind)
▫ for (i in 1:length(yc)) {
plot(xc[[i]], yc[[i]])
abline(lsfit(xc[[i]], yc[[i]]))
}
AGRUPAMENTOS, LAÇOS E EXECUÇÕES CONDICIONAIS (cont.)• while
• repeat (só sai com break)
• break• break
• next (interrompe um ciclo e vai para o próximo)
FUNÇÕES
• Uma função é definida por uma atribuição da forma▫ nome = function (arg.1, arg.2, ...) expressão▫ nome = function (arg.1, arg.2, ...) expressão
• Chamada:▫ nome (expr.1, expr.2, ...)
FUNÇÕES (cont.)• Exemplo (t.2.amostras calcula a estatística t para duas amostras):▫ t.2.amostras = function (y1, y2) {▫ n1 = length (y1); n2 = length (y2)▫ yb1 = mean(y1); yb2 = mean(y2)▫ yb1 = mean(y1); yb2 = mean(y2)▫ s1 = var(y1); s2 = var(y2)▫ s = ((n1-1)*s1 + (n2-1)*s2)/(n1+n2-2)▫ tst = (yb1 - yb2)/sqrt(s*(1/n1 + 1/n2))▫ tst▫ }
• Chamada:▫ tstat.MF = t.2.amostras (dados$masc, dados$fem)▫ tstat.MF # Para imprimir o valor
DEFININDO OPERADORES BINÁRIOS
• Para definir um operador binário (colocar aspas):▫ "%algo%" = function (x, y) expressão▫ "%algo%" = function (x, y) expressão
• Para usar:▫ arg.1 %algo% arg.2
CHAMANDO FUNÇÕES• Exemplo:▫ fun1 = function (dados, data.frame, graph = TRUE, limit = 20) {
▫ ...........▫ }▫ }
• fun1 pode ser chamada das seguintes formas:▫ resp = fun1 (d, df, FALSE, 25)▫ resp = fun1 (d, df, graph = FALSE, limit = 25)▫ resp = fun1 (data = d, data.frame = df, limit = 25, graph = F)
• Podemos omitir parâmetros com default. São equivalentes:▫ resp = fun1 (d, df, T, 20)▫ resp = fun1 (d, df)
MODELOS ESTATÍSTICOSFórmula Modelo
y ~ xRegressão linear simples de y sobre x com intercepto implícito
Regressão linear simples de y sobre x com y ~ x + 1
Regressão linear simples de y sobre x com intercepto explícito
y ~ 0 + xRegressão linear simples de y sobre x passando pela origem (sem termo de intercepto)
y ~ -1 + x
y ~ x - 1
log(y) ~ x1 + x2Regressão múltipla da variável transformada log(y) sobre x1 e x2 (com termo de intercepto implícito)
MODELOS ESTATÍSTICOS (cont.)Fórmula Modelo
y ~ poly(x, 2)Regressão polinomial de y sobre x de grau 2 usando polinômios ortogonais
Regressão polinomial de y sobre x de grau 2 usando y ~ 1 + x + I(x^2)
Regressão polinomial de y sobre x de grau 2 usando potências explícitas
y ~ X + poly(x, 2)Regressão múltipla de y com matriz modelo consistindo da matriz X e dos termos polinomiais em x de grau 2
y ~ AAnálise de variância com classificação simples de y, com classes determinadas por A
y ~ A + xAnálise de covariância com classificação simples de y, com classes determinadas por A e covariável x
MODELOS ESTATÍSTICOS (cont.)Fórmula Modelo
y ~ A*B Modelo aditivo de dois fatores de y sobre A e B com classificação cruzaday ~ A + B + A:B
y ~ B %in% A Modelo aditivo de dois fatores de y sobre A e B com y ~ B %in% A Modelo aditivo de dois fatores de y sobre A e B com classificação hierárquicay ~ A/B
y ~ (A + B + C)^2 Experimento com três fatores com efeitos principais e interações dos fatores dois a doisy ~ A*B*C – A:B:C
y ~ A*x Modelos de regressão linear separados dentro de cada nível de A y ~ A/x
y ~ A/(1 + x) - 1
Modelos de regressão linear separados dentro de cada nível de A . Produz estimativas explícitas de (número de níveis em A) diferentes interceptos e inclinações
MODELOS ESTATÍSTICOS (cont.)• Operador ~ é usado para definir uma fórmula de modelo:▫ resposta ~ op.1 termo.1 op.2 termo.2 ▫ resposta ~ op.1 termo.1 op.2 termo.2 op.3 termo.3 ...� resposta: vetor ou matriz definindo a variável resposta
� op.i: operador + ou – indicando a inclusão ou exclusão de um termo do modelo
� termo.i: expressão vetorial ou matricial ou 1(intercepto); ou um fator ou uma expressão de fórmula
MODELOS ESTATÍSTICOS (cont.)• Notação:▫ Y ~ M: Y modelado por M▫ M.1 + M.2: inclui M.1 e M.2▫ M.1 – M.2: inclui M.1 e deixa fora os termos de M.2▫ M.1 – M.2: inclui M.1 e deixa fora os termos de M.2▫ M.1 : M.2: produto tensorial de M.1 e M.2 (se são fatores, então o produto de “subclasses”)
▫ M.1 %in% M.2: idem▫ M.1 * M.2: M.1 + M.2 + M.1:M.2▫ M.1 / M.2: M.1 + M.2%in% M.1▫ M^n: todos os termos em M junto com as interações de ordem até n
▫ I(M): insular M (dentro de M, todos os operadores têm seu significado aritmético normal, e esse termo aparece na matriz do modelo)
MODELOS LINEARES
• Função básica: lm().
• Exemplo de chamada:▫ modelo.ajustado = lm (formula, data = ▫ modelo.ajustado = lm (formula, data = data.frame)
MODELOS LINEARES (cont.)• Funções orientadas a objetos da classe lm:▫ addi▫ alias
▫ kappa▫ labels▫ plot▫ predict▫ alias
▫ anova▫ coef▫ deviance▫ drop1▫ effects▫ family▫ formula
▫ predict▫ print▫ proj▫ residuals▫ step▫ summary▫ vcov
ESTIMANDO A LARGURA DE UMA SALA
• Banco de dados roomwidth no pacote HSAUR: 44 medidas em metros e 69 medidas em pés da largura de uma salalargura de uma sala
data(“roomwidth”, package = HSAUR)
Dados <- roomwidth
attach(Dados)
ESTIMANDO A LARGURA DE UMA SALA
unit width
1 metres 8
2 metres 92 metres 9
3 metres 10
4 metres 10
...
112 feet 80
113 feet 94
ESTIMANDO A LARGURA DE UMA SALA> convert <- ifelse (roomwidth$unit == “feet”, 1, 3.28)
• Medidas de posição e desvios padrão amostrais para os dois grupos:> tapply (roomwidth$width * convert, roomwidth$unit,
summary)summary)$feet
Min. 1st Qu. Median Mean 3rd Qu. Max. 24.0 36.0 42.0 43.7 48.0 94.0
$metresMin. 1st Qu. Median Mean 3rd Qu. Max. 26.24 36.08 49.20 52.55 55.76 131.20
> tapply (roomwidth$width * convert, roomwidth$unit, sd)feet metres
12.49742 23.43444
ESTIMANDO A LARGURA DE UMA SALA• Gráficos:> boxplot(I(width * convert) ~ unit, data = roomwidth, ylab = "Largura estimada (pés)", varwidth = TRUE, names = c("Estimativas em pés", "Estimativas em metros (convertidas para pés", "Estimativas em metros (convertidas para pés)"))> feet <- roomwidth$unit == "feet"> qqnorm(roomwidth$width[feet], ylab = "Largura estimada (pés)")> qqline(roomwidth$width[feet])> qqnorm(roomwidth$width[!feet], ylab = "Largura estimada (metros)")> qqline(roomwidth$width[!feet])> matrix(c(1,2,1,3), 2,2)
ESTIMANDO A LARGURA DE UMA SALA
ESTIMANDO A LARGURA DE UMA SALA
APARELHO PARA ENERGIA DAS ONDAS
• Banco de dados waves no pacote HSAUR: 18 medidas da variável de interesse de acordo com dois métodos distintosdois métodos distintos
data(“waves”, package = “HSAUR”)
Ondas = waves
APARELHO PARA ENERGIA DAS ONDAS
• Gráficos:> mooringdiff <- waves$method1 -waves$method2> layout(matrix(1:2, ncol = 2))> boxplot(mooringdiff, ylab = "Diferenças (Newton-metros)", main = "Boxplot")> abline(h = 0, lty = 2)> qqnorm(mooringdiff, ylab = "Diferenças (Newton-metros)")> qqline(mooringdiff)
APARELHO PARA ENERGIA DAS ONDAS
MORTALIDADE E DUREZA DA ÁGUA• Banco de dados water no pacote HSAUR: 61 observações de dureza da água (concentração de cálcio) em diferentes localidades da Inglaterra
> data("water", package = "HSAUR")> data("water", package = "HSAUR")> Agua = water> Agua
location town mortality hardness1 South Bath 1247 1052 North Birkenhead 1668 173 South Birmingham 1466 5…60 South Wolverhampton 1485 8161 North York 1378 71
MORTALIDADE E DUREZA DA ÁGUA• Gráficos:> layout(matrix(c(2, 0, 1, 3), 2, 2, byrow = TRUE), c(2, 1), c(1, 2), TRUE)> psymb <- as.numeric(water$location)> plot(mortality ~ hardness, data = water, pch = > plot(mortality ~ hardness, data = water, pch = psymb, xlab = "Dureza da água", ylab = "Mortalidade")> abline (lm(mortality ~ hardness, data = water))> legend("topright", legend = levels(water$location), pch = c(1,2), bty = "n")> hist(water$hardness, xlab = "Dureza da água", ylab= "Frequência", main = "Histograma da variável Dureza da Água")> boxplot(water$mortality)
MORTALIDADE E DUREZA DA ÁGUA
FALHAS EM AROS DE PISTÃO• Banco de dados pistonrings no pacote HSAUR: número de falhas para 4 compressores em 3 pernas distintas
> data("pistonrings", package = "HSAUR")"HSAUR")
> Falhas = pistonrings> Falhas
legcompressor North Centre South
C1 17 17 12C2 11 9 13C3 11 8 19C4 14 7 28
FALHAS EM AROS DE PISTÃO• Teste de homogeneidade (qui quadrado):> chisq.test(Falhas)
Pearson's Chi-squared test
data: Falhas X-squared = 11.7223, df = 6, p-value = 0.06846
> chisq.test(Falhas)$residualsleg
compressor North Centre SouthC1 0.6036154 1.6728267 -1.7802243C2 0.1429031 0.2975200 -0.3471197C3 -0.3251427 -0.4522620 0.6202463C4 -0.4157886 -1.4666936 1.4635235
FALHAS EM AROS DE PISTÃO
• Gráficos de associação:
library(“vcd”)
assoc(Falhas)assoc(Falhas)
REINCIDÊNCIAS DE MENORES INFRATORES• Banco de dados rearrests no pacote HSAUR: cada contagem refere-se a pares de indivíduos.
> data("rearrests", package = > data("rearrests", package = "HSAUR")> Reinc = rearrests> Reinc
Juvenile courtAdult court Rearrest No rearrestRearrest 158 515No rearrest 290 1134
REINCIDÊNCIA DE MENORES INFRATORES• Teste de McNemar:
> mcnemar.test(Reinc, correct = > mcnemar.test(Reinc, correct = FALSE)
McNemar's Chi-squared test
data: ReincMcNemar's chi-squared = 62.8882, df = 1, p-value = 2.188e-15
REINCIDÊNCIA DE MENORES INFRATORES• Teste binomial> binom.test(Reinc[2], n = sum(Reinc[c(2,3)]))
Exact binomial test
data: Reinc[2] and sum(Reinc[c(2, 3)]) number of successes = 290, number of trials = 805, p-value = 1.918e-15alternative hypothesis: true probability of success is not equal to 0.5 95 percent confidence interval:0.3270278 0.3944969 sample estimates:probability of success
0.3602484