INTRODUÇÃO AO R INTRODUÇÃO AO R Baseado nos livros “An Introduction to R” de W. N. Venables, D. M. Smith e Equipe do R e “A Handbook of Statistical Analyses Using R” de Brian S. Everitt e Tursten Hothorn MAE399 – Simulação e Análise de Dados Prof. Fábio Prates Machado Monitor: Ivan Costa Bernardo
89
Embed
INTRODUÇÃO AO Rfmachado/MAE399/... · 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.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
▫ 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.:
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
▫ > 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():
▫ > 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)
• 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
• 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
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
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)
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