Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
disciplinas:ce223:comandos2008 [2008/02/28 13:16]
paulojus criada
disciplinas:ce223:comandos2008 [2008/06/11 13:46]
ehlers
Linha 3: Linha 3:
 ==== Semana 1 ==== ==== Semana 1 ====
 === 27/02/2008 === === 27/02/2008 ===
 +Quatro formas alternativas de entrada de dados de 0 a 10.
 +<code R>
 +x <- c(0, 1, 2, 3, 4, 5 ,6, 7, 8, 9, 10)
 +x
 +x <- 0:10
 +x
 +x <- seq(0,10, by=1)
 +x <- scan()
 +1: 0
 +2: 1
 +...
 +10: 9
 +11: 10
 +12: 
 +</​code>​
 +
 +Extendendo as possibilidades
 +<code R>
 +seq(0,1, by=0.1)
 +(0:10)/10
 +
 +2*(0:10)
 +seq(0,​20,​by=2)
 +
 +10:0
 +seq(10,0, by=-1)
 +</​code>​
 +
 +Selecionando indivíduos pela sua posição (indexando valores de um vetor). Note que comandos a seguir somente mostram resultados sem alterar //x//
 +<code R>
 +x[1]
 +x[4]
 +x[1:3]
 +x[5:8]
 +x[c(2, 5, 7])
 +x
 +</​code>​
 +
 +Selecionando valores do vetor segundo outros critérios. Nos comandos a seguir o objeto original não é alterado.
 +<code R>
 +pesos <- c(67, 83, 56, 91, 58, 47, 82, 75)
 +pesos[pesos > 80]
 +pesos[pesos < 50 | pesos > 80]
 +pesos[pesos > 50 & pesos < 80]
 +</​code>​
 +
 +
 +Substituindo valores de um vetor. Note que comandos alteram valores do vetor.
 +<code R>
 +x[1:3] <- c(0, 10, 20)
 +x
 +
 +pesos
 +pesos[4]
 +pesos[4] <- 81
 +pesos
 +pesos[pesos > 80]
 +pesos[pesos > 80] <- 85
 +pesos
 +pesos[pesos > 80] <- NA
 +pesos
 +pesos[is.na(pesos)] <- 90
 +pesos
 +</​code>​
 +
 +Identificando as posições dos elementos que satisfazem certo critério.
 +<code R>
 +pesos
 +which(pesos == 56)
 +which(pesos == 90)
 +which(pesos < 70)
 +</​code>​
 +
 +Amostrando valores de um vetor. Note uso do ''​rep''​ para definir amostra com reposição. ''​args()''​ mostra os argumentos da função.
 +<code R>
 +dados <- c(34, 28, 31, 32, 43, 40, 45, 39, 26, 29)
 +sample(dados,​ 3)
 +sample(dados,​ 3)
 +sample(dados,​ 3, rep=TRUE) ​
 +args(sample)
 +</​code>​
 +
 +Ordenando valores
 +<code R>
 +dados
 +sort(dados)
 +rev(sort(dados))
 +sort(dados, decreasing=T)
 +</​code>​
 +
 +Acrescentando elementos e concatenando dois ou mais vetores<​code R>
 +x <- 0:10
 +x
 +x <- c(x, 11)
 +x
 +
 +x1 <- c(51:60, 101:110)
 +x1
 +
 +x2 <- c(x, c(15, 18, 21, 15, 30))
 +x2
 +
 +x3 <- c(x2, x1)
 +x3
 +
 +c(1:10, seq(21, 50, by=2), c(100, 110, 150))
 +</​code>​
 +
 +==== Semana 2 ====
 +=== 03/03/2008 ===
 +
 +Operadores aritméticas e funções para operações aritméticas,​ prioridade de operações,​ uso de parêntesis. ​
 +<code R>
 +x <- 0:10
 +px <- choose(10, x) * (0.3)^x * (1-0.3)^(10-x)
 +px
 +</​code>​
 +
 +Gráficos
 +<code R>
 +plot(x, px)            # ver gráfico
 +plot(x, px, type="​h"​) ​ # ver gráfico
 +</​code>​
 +
 +Funções relacionadas a distribuições de probabilidades
 +<code R>
 +px <- dbinom(x, 10, 0.3)
 +px
 +</​code>​
 +
 +Gráfico da função acumulada
 +<code R>
 +Fx <- pbinom(x, 10, 0.3)
 +Fx
 +cumsum(px) ​       # note que soma acumulada de dbinom() fornece mesmo resultado que pbinom()
 +plot(x, Fx, type="​s"​)
 +</​code>​
 +
 +Lei da reciclagem (//​recycling rule//) -- válida para as operações aritméticas
 +<code R>
 +2 * x
 +(0.3)^x
 +x1 <- c(2, 5, 7, 8)
 +x1
 +x2 <- c(10, 20)
 +x2
 +x1 + x2
 +x2 + x1
 +x3 <- (1:3)*10
 +x3
 +x1 + x3
 +x3 + x1
 +x2 + x3
 +x3 + x2
 +x1 * x2
 +x1 * x2
 +exp(x1) + log(x2)
 +</​code>​
 +
 +Argumentos de funções: ordem dos argumentos, nomes dos argumentos, casamento parcial de nomes, argumentos com //default//
 +<code R>
 +args(dbinom)
 +dbinom(x, 10, 0.3)
 +dbinom(x=x, size=10, prob=0.3)
 +dbinom(prob=0.3,​ x=x, size=10)
 +dbinom(size=10,​ prob=0.3, x=x)
 +dbinom(x, s=10, p=0.3)
 +dbinom(x, p=0.3, s=10)
 +dbinom(x, p=0.3, s=10)
 +dbinom(x, 10, 0.3, log=F)
 +dbinom(x, 10, 0.3, log=T)
 +</​code>​
 +
 +=== 05/03/2008 ===
 +
 +Verificando máximos, mínimos e suas posições em um vetor.<​code R>
 +pesos <- c(67, 83, 56, 91, 58, 47, 82, 75)
 +max(pesos)
 +min(pesos)
 +which(pesos == max(pesos))
 +which.max(pesos)
 +which(pesos == min(pesos))
 +which.min(pesos)
 +</​code>​
 +
 +Testando pela ocorrência de ''​NA''​. Note o uso do caracter de negação ''​!''​ <code R>
 +dat <- c(43, 56, NA, 23, 48, 33, NA, 29, 33, 39)
 +is.na(dat)
 +!is.na(dat)
 +which(is.na(dat))
 +which(!is.na(dat))
 +dat1 <- dat[!is.na(dat)]
 +</​code>​
 +
 +==== Semana 3 ====
 +=== 10/03/2008 ===
 +
 +Outras funções de probabilidades<​code R>
 +args(dchisq)
 +args(dt)
 +</​code>​
 +
 +Algumas contantes e operadores<​code R>
 +exp(1)
 +exp(3)
 +print(pi, dig=12)
 +print(pi, dig=12)
 +pi
 +options(digits=12)
 +pi
 +exp(1)
 +</​code>​
 +
 +Examinar opções de ''​options()''<​code R>
 +options()
 +</​code>​
 +
 +
 +=== 12/03/2008 ===
 +
 +Funções para verificar exitência de ''​NA'''​s ''​NaN'''​s e valores infinitos (''​Inf''​) <code R>
 +x <- c(5, 0, -2)
 +x/0
 +is.nan(x/0)
 +is.finite(x/​0)
 +!is.finite(x/​0)
 +</​code>​
 +
 +Explicações sobre como o R armazana objetos (RAM e/ou dispositivos como por exemplo o HD)<code R>
 +save.image()
 +q()
 +</​code>​
 +
 +Listando e apagando objetos
 +<code R>
 +ls()
 +objects()
 +rm(x)
 +rm(list=ls())
 +args(ls)
 +ls()
 +ls(all=T)
 +</​code>​
 +
 +Tipos de objetos no R: matrizes
 +<code R>
 +x <- 1:24
 +x
 +m <- matrix(x, nr=6)
 +m
 +m <- matrix(x, nr=6, byrow=T)
 +m
 +x <- 1:25
 +m <- matrix(x, nr=6)
 +m
 +attributes(x)
 +attributes(m)
 +</​code>​
 +
 +Tipos de objetos no R: arrays
 +<code R>
 +x <- 1:24
 +a <- array(x, dim=c(4,​3,​2))
 +a
 +</​code>​
 +
 +Digitação e conversão de uma tabela de tripla entrada (dada no quadro durante a aula) em um objeto do tipo ''​array''​
 +|            |  PR                   ​|| ​  ​SC ​                ​|| ​  ​RS ​               ||
 +|            | Masculino | Feminino ​ | Masculino | Feminino ​ | Masculino | Feminino |
 +|Não Fuma    ^  45       ​^ ​ 16       ​^ ​  ​21 ​     ^  33       ​^ ​ 40       ​^ ​  ​45 ​    ^
 +|Fuma pouco  ^  28       ​^ ​ 22       ​^ ​  ​34 ​     ^  21       ​^ ​ 50       ​^ ​  ​37 ​    ^
 +|Fuma muito  ^  37       ​^ ​ 15       ​^ ​  ​56 ​     ^  30       ​^ ​ 85       ​^ ​  ​29 ​    ^
 +
 +Comentários sobre ordem de entrada dos dados, cliclagem das variáveis e definição das dimensões do array<​code R>
 +freqs <- scan()
 +1: 45
 +2: 28
 +3: 37
 +4: 16
 +5: 22
 +6: 15
 +7: 21
 +8: 34
 +9: 56
 +10: 33
 +11: 21
 +12: 30
 +13: 40
 +14: 50
 +15: 85
 +16: 45
 +17: 37
 +18: 29
 +19:
 +freqs
 +Af <- array(freqs,​ dim=c(3,​2,​3))
 +Af
 +</​code>​
 +
 +==== Semana 4 ====
 +=== 17/03/2008 ===
 +<code R>
 +freqs = scan(file='​http://​leg.ufpr.br/​~ehlers/​CE223/​fumo.dat'​)
 +freqs
 + [1] 45 16 21 33 40 45 28 22 34 21 50 37 37 15 56 30 85 29
 +
 +array(freqs,​ dim=c(2,​3,​3))
 +, , 1
 +
 +     [,1] [,2] [,3]
 +[1,]   ​45 ​  ​21 ​  40
 +[2,]   ​16 ​  ​33 ​  45
 +
 +, , 2
 +
 +     [,1] [,2] [,3]
 +[1,]   ​28 ​  ​34 ​  50
 +[2,]   ​22 ​  ​21 ​  37
 +
 +, , 3
 +
 +     [,1] [,2] [,3]
 +[1,]   ​37 ​  ​56 ​  85
 +[2,]   ​15 ​  ​30 ​  29
 +
 +# Cada matrix 2x3 contem as contagens por sexo (linhas) e estado (colunas). ​
 +# A ultima dimensao refere-se ao habito de fumar.
 +
 +nomes = list(c('​M','​F'​),​c('​PR','​SC','​RS'​),​c('​nao fuma','​fuma pouco','​fuma muito'​))
 +
 +hf = array(freqs,​ dim=c(2,​3,​3),​ dimnames=nomes)
 +
 +hf
 +, , nao fuma
 +
 +  PR SC RS
 +M 45 21 40
 +F 16 33 45
 +
 +, , fuma pouco
 +
 +  PR SC RS
 +M 28 34 50
 +F 22 21 37
 +
 +, , fuma muito
 +
 +  PR SC RS
 +M 37 56 85
 +F 15 30 29
 +
 +m1 <- matrix(1:​12,​ ncol = 3)
 +m1
 +
 +dimnames(m1)
 +
 +dimnames(m1) <- list(c("​L1",​ "​L2",​ "​L3",​ "​L4"​),​ c("​C1",​ "​C2",​ "​C3"​))
 +
 +m1
 +
 +m2 <- cbind(1:5, 6:10)
 +m2
 +
 +m3 <- cbind(1:5, 6)
 +m3
 +
 +margin.table(m1,​ margin = 1)
 +
 +apply(m1, 1, sum)
 +
 +rowSums(m1)
 +
 +margin.table(m1,​ margin = 2)
 +
 +apply(m1, 2, sum)
 +
 +colSums(m1)
 +</​code>​
 +
 +Operacoes com matrizes
 +<code R>
 +m4 <- matrix(1:6, nc = 3)
 +m5 <- matrix(10 * (1:6), nc = 3)
 +m4
 +
 +m5
 +
 +m4 + m5
 +
 +m4 * m5
 +
 +m5 - m4
 +
 +m5/m4
 +
 +m4 %*% m5
 +
 +t(m4)
 +
 +m6 = t(m4)%*% m5
 +
 +solve(m6)
 +
 +m6[3,3]=20
 +
 +solve(m6)
 +
 +mat <- matrix(c(1, 5, 2, 3, -2, 1, -1, 1, -1), nc = 3)
 +
 +vec <- c(10, 15, 7)
 +
 +solve(mat, vec)
 +</​code>​
 +
 +=== 19/03/2008 ===
 +Data frames
 +<code R>
 +d1 = data.frame(x=1:​10,​y=c(51,​54,​61,​67,​68,​75,​77,​75,​80,​82))
 +
 +d1
 +
 +      x  y
 +  1   1 51
 +  2   2 54
 +  3   3 61
 +  4   4 67
 +  5   5 68
 +  6   6 75
 +  7   7 77
 +  8   8 75
 +  9   9 80
 +  10 10 82
 +
 +names(d1)
 +
 +d1$x
 +d1$y
 +
 +d1[,1]
 +d1[,2]
 +
 +plot(d1)
 +
 +plot(d1$x,​d1$y)
 +
 +d2 = data.frame(Y = c(rnorm(5,​mean=10,​sd=2),​ rnorm(5,​16,​2),​ rnorm(5,​14,​2)))
 +
 +gl(3, 5)
 + [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
 +Levels: 1 2 3
 +
 +d2$lev = gl(3, 5)
 +
 +d2
 +
 +is.factor(d2$lev)
 +</​code>​
 +
 +Aplicando uma funcao a um Data Frame separando por fatores
 +<code R>
 +by(d2$Y, d2$lev, summary)
 +</​code>​
 +
 +Criando um Data Frame a partir de todas as combinacoes de 2 fatores.
 +<code R>
 +d3 = expand.grid(1:​3,​ 4:5)
 +d3
 +
 +is.data.frame(d3)
 +</​code>​
 +
 +Adicionando colunas
 +<code R>
 +d4 = data.frame(peso=rnorm(15,​65,​5),​altura=rnorm(15,​160,​10))
 +d4
 +
 +d4=cbind(d4,​sexo=c(rep('​M',​10),​rep('​F',​5)))
 +d4
 +</​code>​
 +
 +Toda coluna que não seja composta exclusivamente de números é definida como um fator.
 +<code R>
 +is.factor(d4$sexo)
 +[1] TRUE
 +
 +letters
 +
 +LETTERS
 +
 +d4=cbind(d4,​nome=letters[1:​15])
 +
 +is.factor(d4$nome)
 +[1] TRUE
 +
 +d4$nome= as.character(d4$nome)
 +
 +d4
 +
 +dim(d4)
 +
 +names(d4)
 +
 +dimnames(d4)
 +
 +rownames(d4)
 +
 +colnames(d4)
 +
 +d4[d4$sexo=='​M',​1:​2]
 +
 +d4[d4$sexo=='​F',​4]
 +
 +by(d4[,​1:​2],​d4$sexo,​function(x)x)
 +
 +by(d4[,​4],​d4$sexo,​function(x)as.character(x))
 +</​code>​
 +
 +
 +
 +Listas
 +<code R>
 +
 +Listas sao estruturas genericas e flexiveis que permitem armazenar
 +diversos formatos em um unico objeto. ​
 +
 +lis1 <- list(A = 1:10, B = "CE 223", C = matrix(1:​9,​ncol = 3))
 +lis1
 +
 +$A
 +[1]  1  2  3  4  5  6  7  8  9 10
 +
 +$B
 +[1] "CE 223"
 +  ​
 +$C
 +     [,1] [,2] [,3]
 +[1,]    1    4    7
 +[2,]    2    5    8
 +[3,]    3    6    9
 +</​code>​
 +
 +Varias funcoes do R retornam listas
 +<code R>
 +d1
 +
 +lis2 = lm (y ~ x, data=d1)
 +
 +lis2
 +
 +is.list(lis2)
 +
 +class(lis2)
 +
 +summary(lis2)
 +
 +anova(lis2)
 +
 +names(lis2)
 +
 +lis2$pred
 +
 +lis2$residuals
 +
 +par(mfrow=c(2,​2))
 +
 +plot(lis2)
 +</​code>​
 +
 +Selecionando elementos de uma lista
 +<code R>
 +lis1$A
 +
 +lis2$coeff
 +
 +lis1[3]
 +
 +lis1[[3]]
 +
 +</​code>​
 +
 +==== Semana 5 ====
 +
 +=== 24/03/2008 ===
 +**Problema:​**
 +Considere duas variáveis aleatórias:​ ''​N''​ com distribuição Poisson de parâmetro 15 e ''​Pr''​ com distribuição exponencial de parâmetro 1/50000. Queremos obter o quantil 99 de uma variável aleatória ''​Y''​ dada pelo produto das anteriores, isto é ''​Y = N * Pr''​.
 +
 +**Solução:​** a solução analítica requer a obtenção da f.d.p. de ''​Y''​seguida da resolução de uma equação envolvendo integração desta f.d.p. para encontrar o quantil pedido. Entretanto, vamos aqui ilustrar uma alternativa numérica para resolver o problema, usando uma aproximação numérica por simulação.
 +<code R>
 +N<- rpois(10000,​ lambda=15)
 +Pr<- rexp(10000, rate=1/​50000)
 +Y<- N*Pr
 +q99 <- quantile(Y, prob=0.99)
 +</​code>​
 +
 +Vamos agora visualizar a distribuição de interesse de diferentes formas: pelo histograma das simulações e,
 +uma forma alternativa (e mais interessante!!!) utilizando estimação de densidades.
 +<code R>
 +hist(Y)
 +hist(Y, prob=T)
 +lines(density(Y))
 +plot(density(Y))
 +abline(v=q99)
 +</​code> ​
 +
 +Note que funções podem retornar resultados e/ou gráficos. A função ''​hist()''​ é um exemplo de função que retorna ambos.
 +<code R>
 +hy <- hist(Y)
 +hy
 +class(hy)
 +plot(hy)
 +hist
 +</​code>​
 +
 +Criando uma função -- um exemplo. Vamos encapsular todo o procedimento acima em uma função. Isto pode
 +ser útil para tornar a execução mais rápida e eficiente quando o procedimento deve ser repetido várias vezes.
 +(o equivalente a construir ''​macros''​).
 +<code R>
 +mf<- function(n,​lam,​r,​q){
 +  N<​-rpois(n,​lambda=lam)
 +  Pr<​-rexp(n,​rate=r)
 +  Y<-N*Pr
 +  qq <- quantile(Y,​prob=q)
 +  hist(Y,​prob=T)
 +  lines(density(Y))
 +  abline(v=qq)
 +  text("​topright",​ paste("​quantil",​ q, "​=",​ qq))
 +  return(invisible(qq))
 +}
 +mf(10000, 15, 1/50000, 0.99)
 +resp <- mf(10000,​15,​ 1/50000, 0.99)
 +resp
 +</​code>​
 +
 +=== 26/03/2008 ===
 +Exercício proposto no material do curso e extensões discutidas em aula.
 +
 +Calculando o valor da expressão
 +<code R>
 +x <- c(12, 11,​14,​15,​10,​11,​14,​11)
 +E=-length(x)*10 + sum(x) * log(10) - sum(log(factorial(x)))
 +E
 +</​code>​
 +
 +Agora tornando mais flexível, escrevendo uma função que permite entrar com diferentes amostras e/ou valores de λ.
 +<code R>
 +mf <- function(y, lam){
 +-length(y)*lam + sum(y) * log(lam) - sum(log(factorial(y)))
 +}
 +mf(y=x, lam=10)
 +</​code>​
 +
 +Noque que está é a expressão da log-verossimilhanca para uma a.a. de uma distribuição de Poisson
 +<code R>
 +mf(y=x, lam=11)
 +mf(y=x, lam=12)
 +mf(y=x, lam=13)
 +</​code>​
 +
 +Vamos então fazer o gráfico da função log-verossimilhança. Como esta é uma função do parâmetro λ vamos primeiro redefinir a função de uma forma mais conveniente colocando o parâmetro como o primeiro argumento.
 +<code R>
 +mf <- function(lam,​ y){
 +-length(y)*lam + sum(y) * log(lam) - sum(log(factorial(y)))
 +}
 +l <- seq(5, 25, l=200)
 +ll <- mf(l)
 +ll <- mf(l, y=x)
 +plot(l, ll, type="​l",​ xlab=expression(lambda),​ ylab=expression(l(lambda)))
 +</​code>​
 +
 +Vamos agora indicar a solução analítica.
 +<code R>
 +mean(x)
 +abline(v=mean(x))
 +</​code>​
 +
 +A solução também poderia ser obtida por otimização numérica. Isto não é vantajoso para este problema mas pode ser a solução em casos onde a solução analítica não é disponível.
 +<​code>​
 +optimize(mf,​ c(min(x), max(x)), maximum=T, y=x)
 +</​code>​
 +
 +==== Semana 6 ====
 +
 +=== 31/03/2008 e 02/04/2008 ===
 +Lendo dados externos no formato data.frame
 +
 +<code R>
 +milsa=read.table('​milsa.dat',​header=T)
 +</​code>​
 +
 +Transformando numericos em fatores
 +<code R>
 +milsa$civil=factor(milsa$civil,​lev=1:​2,​lab=c('​solteiro','​casado'​))
 +milsa$instrucao=factor(milsa$instrucao,​lev=1:​3,​lab=c('​1oGrau','​2oGrau','​superior'​),​ord=T)
 +milsa$regiao=factor(milsa$regiao,​lev=1:​3,​lab=c('​interior','​capital','​outro'​))
 +head(milsa)
 +</​code>​
 +Criando nova variavel numerica
 +<code R>
 +milsa=transform(milsa,​idade=ano+mes/​12)
 +</​code>​
 +
 +Tabulacao
 +<code R>
 +table(milsa$instrucao)
 +
 +table(milsa$civil)
 +
 +table(milsa$regiao)
 +
 +table(milsa[,​c(2,​3)])
 +
 +table(milsa$civil,​milsa$instrucao)
 +
 +attach(milsa)
 +
 +table(civil,​instrucao)
 +
 +table(civil,​instrucao,​regiao)
 +</​code>​
 +
 +Proporcoes
 +<code R>
 +tmp=table(civil,​regiao)
 +
 +cbind(tmp, total=rowSums(tmp))
 +
 +prop.table(tmp,​mar=1)#​ linhas somam 1
 +
 +rbind(tmp, total=colSums(tmp))
 +
 +prop.table(tmp,​mar=2)#​ colunas somam 1
 +
 +prop.table(tmp)#​ todos somam 1
 +</​code>​
 +
 +Resumos
 +<code R>
 +summary(milsa[,​-1])
 +
 +par(mfrow=c(3,​2))
 +
 +barplot(table(civil))
 +barplot(table(instrucao))
 +barplot(table(regiao))
 +
 +pie(table(civil),​main='​estado civil'​)
 +pie(table(instrucao),​main='​grau de instrucao'​)
 +pie(table(regiao),​main='​regiao de origem'​)
 +</​code>​
 +
 +Analise bivariada
 +<code R>
 +barplot(table(civil,​instrucao))
 +barplot(table(regiao,​instrucao))
 +
 +barplot(table(civil,​instrucao),​beside=T)
 +barplot(table(regiao,​instrucao),​beside=T,​legend.text=T)
 +</​code>​
 +
 +Esquema dos 5 numeros
 +<code R>
 +fivenum(idade)
 +
 +[1] 20.83333 30.58333 34.91667 40.54167 48.91667
 +
 +quantile(idade,​c(0.25,​0.75))
 +     ​25% ​     75% 
 +30.66667 40.52083
 +</​code>​
 +
 +Medidas robustas
 +<code R>
 +salario1=salario
 +salario1[36]=93.30
 +
 +mean(salario);​ mean(salario1)
 +
 +median(salario);​ median(salario1)
 +
 +mean(salario,​trim=0.1);​ mean(salario1,​trim=0.1)
 +
 +sd(salario);​ sd(salario1)
 +
 +#distancia inter quartis
 +
 +IQR(salario);​ IQR(salario1)
 +
 +##Desvio absoluto mediano (MAD: median absolute deviation)
 +##​mediana(|Xi - median(X)| * 1.4826
 +##A constante 1.4826 torna o mad comparavel com o sd de uma normal
 +
 +mad(salario);​ mad(salario1)
 +</​code>​
 +
 +Ramo-folhas
 +<code R>
 +stem(salario)
 +
 +  The decimal point is at the |
 +
 +   4 | 0637
 +   6 | 379446
 +   8 | 15791388
 +  10 | 5816
 +  12 | 08268
 +  14 | 77
 +  16 | 0263
 +  18 | 84
 +  20 | 
 +  22 | 3
 +
 +stem(salario,​scale=2)
 +   4 | 06
 +   5 | 37
 +   6 | 379
 +   7 | 446
 +   8 | 1579
 +   9 | 1388
 +  10 | 58
 +  11 | 16
 +  12 | 08
 +  13 | 268
 +  14 | 77
 +  15 | 
 +  16 | 026
 +  17 | 3
 +  18 | 8
 +  19 | 4
 +  20 | 
 +  21 | 
 +  22 | 
 +  23 | 3
 +</​code>​
 +
 +Histogramas
 +<code R>
 +par(mfrow=c(2,​2))
 +
 +hist(salario,​main='​salario'​)
 +
 +hist(salario,​nclass=15,​main='​salario'​)
 +hist(idade,​main='​idade'​)
 +
 +barplot(table(filhos),​main='​No de filhos'​)
 +
 +par(mfrow=c(1,​1))
 +
 +hist(salario,​main='​salario'​)
 +rug(salario)
 +</​code>​
 +
 +Estimando uma funcao de densidade
 +<code R>
 +hist(salario,​main='​salario',​prob=T)
 +lines(density(salario))
 +
 +hist(idade,​main='​idade',​prob=T)
 +lines(density(idade))
 +</​code>​
 +
 +Boxplot
 +<code R>
 +par(mfrow=c(1,​2))
 +
 +boxplot(idade,​main='​idade'​)
 +rug(idade,​side=2)
 +
 +boxplot(salario,​main='​salario'​)
 +rug(salario,​side=2)
 +
 +par(mfrow=c(2,​1))
 +
 +boxplot(idade,​horizontal=T,​main='​idade'​)
 +rug(idade,​side=1)
 +
 +boxplot(salario,​ horizontal=T,​main='​salario'​)
 +rug(salario,​side=1)
 +</​code>​
 +
 +Variaveis categoricas e numericas
 +<code R>
 +boxplot(salario~regiao)
 +boxplot(idade~civil)
 +
 +boxplot(scale(salario),​scale(idade)) #variaveis na mesma escala
 +</​code>​
 +
 +Ambas variaveis numericas
 +<code R>
 +plot(salario,​idade) #variaveis na mesma escala
 +
 +corr=round(cor(salario,​idade),​2)
 +
 +text(20,​25,​paste('​rho=',​corr))
 +
 +</​code>​
 +
 +
 +==== Semana 7 ====
 +
 +=== 07/04/2008 e 09/04/2008 ===
 +
 +Analisar os dados do Exercicio 26, Capitulo 1 do livro NOÇÕES DE PROBABILIDADE E ESTATÍSTICA disponiveis em http://​www.ime.usp.br/​~noproest
 +
 +Note que ha brancos no arquivo de dados (dados omissos). Uma forma de tratar este problema é abrir o arquivo Excel e salvar como um arquivo texto do tipo CSV (comma separated values). Posteriormente este arquivo pode ser lido como
 +<code R>
 +
 +read.table('​nome do arquivo',​ header=T, sep=','​)
 +
 +# ou
 +read.csv('​nome do arquivo',​ header=T)
 +</​code>​
 +
 +Uma alternativa melhor é utilizar a função read.xls do pacote gdata pois assim não precisamos abrir o arquivo Excel. Após salvar o arquivo aeusp.xls na sua area de trabalho execute
 +<code R>
 +library(gdata) ou require(gdata)
 +
 +x = read.xls ('​aeusp.xls'​)
 +
 +head(x)
 +
 +  Num    Comun Sexo Idade Ecivil X.Reproce X.Temposp X.Resid Trab Ttrab X.Itrab
 +1   1 JdRaposo ​   2     ​4 ​     4  Nordeste ​       21       ​9 ​   3    NA      20
 +2   2 JdRaposo ​   2     ​1 ​     1   ​Sudeste ​       24       ​9 ​   1     ​1 ​     14
 +3   3 JdRaposo ​   2     ​2 ​     1  Nordeste ​       31       ​3 ​   1     ​1 ​     14
 +4   4 JdRaposo ​   1     ​2 ​     2  Nordeste ​       10       ​3 ​   1     ​4 ​     10
 +5   5 JdRaposo ​   2     ​4 ​     2  Nordeste ​       31       ​6 ​   1     ​1 ​     11
 +6   6 JdRaposo ​   2     ​4 ​     2   ​Sudeste ​       24       ​4 ​   2    NA      15
 +  X.Renda X.Acompu X.Serief
 +1       ​1 ​       2        1
 +2       ​2 ​       2        7
 +3       ​5 ​       2        7
 +4       ​5 ​       2       11
 +5       ​6 ​       1        4
 +6       ​4 ​       2        4
 +</​code>​
 +
 +=== 30/04/2008 ===
 +
 +Gerando 1000 amostras de tamanho n=20 de uma distribuição normal padrão ​
 +<code R>
 +rnorm(20, m=70, sd=10)
 +ams <- matrix(rnorm(20*1000,​ m=70, sd=10), ncol=20)
 +dim(ams)
 +ams[1,]
 +ams[2,]
 +</​code>​
 +
 +Calculando o valor da estatística de interesse para a primeira e segunda amostra
 +<code R>
 +max(ams[1,​])/​quantile(ams[1,​],​ prob=0.75)
 +unname(max(ams[1,​])/​quantile(ams[1,​],​ prob=0.75))
 +unname(max(ams[2,​])/​quantile(ams[2,​],​ prob=0.75))
 +</​code>​
 +
 +Escrevendo uma função que calcula o valor da estatística de interesse e calculando novamente o valor para a primeira e segunda amostras.
 +<code R>
 +T.est <- function(x) unname(max(x)/​quantile(x,​ prob=0.75))
 +T.est(ams[1,​])
 +T.est(ams[2,​])
 +</​code>​
 +
 +Calculando valor da estatística de interesse agora para todas as amostras de uma só vez
 +<code R>
 +ts <- apply(ams, 1, T.est)
 +length(ts)
 +ts
 +</​code> ​
 +
 +Explorando os resultados: medidas resumo, grafico de densidade estimada e IC (95%)
 +<code R>
 +summary(ts)
 +plot(density(ts))
 +quantile(ts,​ prob=c(0.025,​ 0.975))
 +</​code> ​
 +
 +Aumentando o número de amostras para 5000.
 +<code R>
 +ams <- matrix(rnorm(20*5000,​ m=70, sd=10), ncol=20)
 +ts <- apply(ams, 1, T.est)
 +plot(density(ts))
 +</​code>​
 +
 +Distribuição amostral da média: empírica (por simulação) //versus// teórica
 +<code R>
 +medias <- apply(ams, 1, mean)
 +plot(density(medias))
 +curve(dnorm(x,​mean=70,​ sd=10/​sqrt(20)),​ 60, 80, add=TRUE, col=2)
 +</​code>​
 +
 +=== 07/05/2008 ===
 +
 +Exercicios sobre o uso do Latex.
 +
 +Um preambulo basico:
 +<​code>​
 +\documentclass[12pt]{article}% classes basicas: book, article, report e letter
 +\usepackage[brazil]{babel}% português do Brasil. ​
 +\usepackage[latin1]{inputenc}% usar o conjunto de caracteres Europeu Ocidental.
 +</​code>​
 +Para usar Unicode, substitua a última linha por
 +<​code>​
 +\usepackage[utf-8]{inputenc}
 +</​code>​
 +
 +Apos o preambulo coloque o titulo, autoria e data do artigo.
 +<​code>​
 +
 +\Title{Título do Trabalho}
 +\author{Nome do Autor}
 +\date{\today}
 +</​code>​
 +
 +Agora sim começa o documento,
 +<​code>​
 +\begin{document}
 +\maketitle
 +% seu texto ...
 +% Inclua seções e subseções ​
 +\section{Uma seção}
 +\subsection{Uma subseção}
 +\end{document}
 +</​code>​
 +
 +Escreva os comandos Latex para as seguintes formulas matematicas:​
 +  * <​latex>​$E(X^2)=\int_{-\infty}^{\infty}x^2 f(x)dx$</​latex>​
 +<​code>​
 +$$ E(X^2)=\int_{-\infty}^{\infty}x^2 f(x)dx $$
 +</​code>​
 +  * <​latex>​$X\sim N(\mu,​\sigma^2)\Rightarrow f(x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left\{-\frac{1}{2\sigma^2}(x-\mu)^2\right\}$</​latex>​
 +<​code>​
 +$$ 
 +X\sim N(\mu,​\sigma^2)\Rightarrow f(x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left\{-\frac{1}{2\sigma^2}(x-\mu)^2\right\}
 +$$
 +</​code>​
 +  * <​latex>​$(a+b)^n = \sum_{k=0}^n \frac{n!}{k!(n-k)!} a^k b^{n-k}</​latex>​
 +<​code>​
 +$$ (a+b)^n = \sum_{k=0}^n \frac{n!}{k!(n-k)!} a^k b^{n-k} $$
 +</​code>​
 +As fórmulas acima ficam destacadas do texto. Para que uma formula fique dentro do texto use $ formula $ ao inves de $$ formula $$.
 +
 +Escreva os comandos do Latex para construir a seguinte matriz:
 +
 +<​latex>​
 +\left[
 +\begin{array}{cccc}
 +a_{11} & a_{12} & \dots  & a_{1n}\\
 +a_{21} & a_{22} & \dots  & a_{2n}\\
 +\vdots & \vdots & \vdots & \vdots\\
 +a_{m1} & a_{m2} & \dots  & a_{mn}\\  ​
 +\end{array}
 +\right]
 +</​latex>​
 +
 +<​code>​
 +\left[
 +\begin{array}{cccc}
 +a_{11} & a_{12} & \dots  & a_{1n}\\
 +a_{21} & a_{22} & \dots  & a_{2n}\\
 +\vdots & \vdots & \vdots & \vdots\\
 +a_{m1} & a_{m2} & \dots  & a_{mn}\\  ​
 +\end{array}
 +\right]
 +</​code>​
 +
 +Escreva os comandos do Latex para montar as seguintes tabelas. Tente numerar as tabelas, colocar um comentário e referenciar as tabelas no texto.
 +
 +<​latex>​
 +\begin{tabular}{ccc}
 +\hline
 +           & masculino & feminino \\
 +\hline
 +Não fuma   & 45        & 16       \\
 +Fuma pouco & 28        & 22       \\
 +\hline
 +\end{tabular}
 +</​latex>​
 +
 +<​code>​
 +\begin{tabular}{ccc}
 +\hline
 +           & masculino & feminino \\
 +\hline
 +Não fuma   & 45        & 16       \\
 +Fuma pouco & 28        & 22       \\
 +\hline
 +\end{tabular}
 +</​code>​
 +
 +<​latex>​
 +\begin{tabular}{|l|cc|}
 +\hline
 +           & masculino & feminino \\
 +\hline\hline
 +Não fuma   & 45        & 16       \\
 +Fuma pouco & 28        & 22       \\
 +\hline
 +\end{tabular}
 +</​latex>​
 +
 +<​code>​
 +\begin{tabular}{|l|cc|}
 +\hline
 +           & masculino & feminino \\
 +\hline\hline
 +Não fuma   & 45        & 16       \\
 +Fuma pouco & 28        & 22       \\
 +\hline
 +\end{tabular}
 +</​code>​
 +
 +Criando uma tabela Latex de dentro do R.
 +
 +<code R>
 +m=data.frame(x=rnorm(10),​y=rgamma(10))
 +library(Hmisc)
 +latex(round(m,​4),​ title='',​file='​tab1.tex',​caption='​Usando o comando latex do pacote Hmisc.'​)
 +</​code>​
 +Agora basta incluir o arquivo tab1.tex no seu documento.
 +
 +Incluindo figuras.
 +
 +Os comandos abaixo criam um arquivo Postscript com um histograma.
 +<code R>
 +postscript('​histograma.ps'​)
 +hist(rnorm(1000))
 +dev.off()
 +</​code>​
 +
 +Use os comandos abaixo para incluir a figura no seu documento. Será preciso incluir o comando \usepackage[dvips]{graphicx} no preambulo.
 +<​code>​
 +\begin{figure}[htbp]\centering
 +\includegraphics[width=10cm,​ height=10cm]{histograma.ps}
 +\caption{Histograma de uma amostra de tamanho 1000 da distribuição normal padrão.}
 +\label{fig:​hist}
 +\end{figure}
 +</​code>​
 +
 +Pode-se fazer referencia a figura no texto: figura \ref{fig:​hist},​ na pagina \pageref{fig:​hist}. Note que a figura ficou rotacionada à esquerda. Podemos corrigir refazendo o arquivo .ps
 +<code R>
 +postscript('​histograma.ps',​horizontal=F)
 +hist(rnorm(1000))
 +dev.off()
 +</​code>​
 +
 +ou usando a opção "​angle"​
 +<​code>​
 +\begin{figure}[htbp]\centering
 +\includegraphics[width = 10cm, height = 10cm, angle = 270]{histograma.ps}
 +\caption{Histograma de uma amostra de tamanho 1000 da distribuição normal padrão.}
 +\label{fig:​hist}
 +\end{figure}
 +</​code>​
 +
 +Colocando duas figuras lado a lado. Acrescente \usepackage{subfigure} no preambulo.
 +
 +<​code>​
 +\begin{figure}[h]
 +   ​\centerline{
 +   ​\subfigure[histograma grande]{\includegraphics[width=10cm,​height=10cm]{histograma.ps}
 +   ​\label{fig:​hist1}}
 +   \hfil
 +   ​\subfigure[histograma pequeno]{\includegraphics[width=5cm,​height=5cm]{histograma.ps}
 +   ​\label{fig:​hist2}}
 +   }
 +   ​\caption{Exemplo de duas figuras.}
 +   ​\label{fig:​histogramas}
 +\end{figure}
 +</​code>​
 +
 +Fazendo referencia: Figuras \ref{fig:​histogramas},​ \ref{fig:​hist1} e \ref{fig:​hist2}.
 +
 +
 +Mais sobre fórmulas matemáticas.
 +
 +<​latex>​
 +$\overbrace{x_1+\underbrace{x_2+\ldots+x_{n-1}}_{n-2}+x_n}^n$
 +</​latex>​
 +
 +<​code>​
 +$$
 +\overbrace{x_1+\underbrace{x_2+\ldots+x_{n-1}}_{n-2}+x_n}^n
 +$$
 +</​code>​
 +
 +<​latex> ​
 +$ \widehat{\theta\lambda\beta} $, $ \tilde{\pi} $, $ \widetilde{\pi q} $.
 +</​latex>​
 +
 +<​code> ​
 +$ \widehat{\theta\lambda\beta} $, $ \tilde{\pi} $, $ \widetilde{\pi q} $.
 +</​code>​
 +
 +<​latex>​
 +$$
 +\int_0^{\infty} e^{-st} \, dt = \frac{e^{-st}}{-s}\Bigg|_0^{\infty}
 +$$
 +</​latex>​
 +
 +<​code>​
 +$$ \int_0^{\infty} e^{-st}\,dt = \frac{e^{-st}}{-s} \Bigg|_0^{\infty} $$
 +</​code>​
 +
 +<​latex>​
 +$$
 +I_{x\in A}=\left\{\begin{array}{rc}
 +1 &​\mbox{se}\quad x\in A\\
 +0 &​\mbox{se}\quad x\notin A
 +\end{array}\right.
 +$$
 +</​latex>​
 +
 +<​code>​
 +$$
 +I_{x\in A} = \left\{
 +\begin{array}{rc}
 +1 & \mbox{se} \quad x \in A\\
 +0 & \mbox{se} \quad x \notin A
 +\end{array}
 +\right.
 +$$
 +</​code>​
 +
 +Para gerar automaticamente uma tabela de conteúdo (ou sumário), lista de figuras e lista de tabelas inclua estes comandos logo após \begin{document}
 +<​code>​
 +\tableofcontents
 +\listoffigures
 +\listoftables
 +</​code>​
 +Compile 3 vezes seu arquivo .tex e os arquivos .toc .lof e .lot serão criados.
 +
 +
 +Funções de verossimilhança
 +
 +Seja (12,​15,​9,​10,​17,​12,​11,​18,​15,​13) uma amostra aleatoria de <​latex>​ $X\sim N(\mu,4)$ </​latex>​.
 +
 +
  

QR Code
QR Code disciplinas:ce223:comandos2008 (generated for current page)