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

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
disciplinas:ce223:comandos2008 [2008/03/19 15:02]
ehlers
disciplinas:ce223:comandos2008 [2008/05/28 11:08]
ehlers
Linha 306: Linha 306:
 <code R> <code R>
 freqs = scan(file='​http://​leg.ufpr.br/​~ehlers/​CE223/​fumo.dat'​) 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
  
-array(freqs, dim=c(3,2,3))+# Cada matrix 2x3 contem as contagens por sexo (linhase estado (colunas).  
 +# A ultima dimensao refere-se ao habito de fumar.
  
-nomes = list(c('​PR','​SC','​RS'), c('M','​F'), c('nao fuma','​fuma pouco','​fuma muito'​))+nomes = list(c('​M','​F'​),​c('​PR','​SC','​RS'​),​c('​nao fuma','​fuma pouco','​fuma muito'​))
  
-hf = array(freqs,​ dim=c(3,2,3), dimnames=nomes)+hf = array(freqs,​ dim=c(2,3,3), dimnames=nomes)
  
 hf 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 <- matrix(1:​12,​ ncol = 3)
Linha 341: Linha 380:
  
 colSums(m1) colSums(m1)
 +</​code>​
  
-#​operacoes ​com matrizes +Operacoes ​com matrizes 
 +<code R>
 m4 <- matrix(1:6, nc = 3) m4 <- matrix(1:6, nc = 3)
 m5 <- matrix(10 * (1:6), nc = 3) m5 <- matrix(10 * (1:6), nc = 3)
Linha 377: Linha 417:
 </​code>​ </​code>​
  
 +=== 19/03/2008 ===
 +Data frames
 <code R> <code R>
-<- c(01234,6789, 10) +d1 = data.frame(x=1:10,y=c(51,54,61,67,68,75,77,75,80,82))
-+
-x <- 0:10 +
-+
-x <- seq(0,10, by=1) +
-x <- scan() +
-1: 0 +
-2: 1 +
-... +
-10: 9 +
-11: 10 +
-12:  +
-</​code>​+
  
-Extendendo as possibilidades +d1
-<code R> +
-seq(0,1, by=0.1) +
-(0:10)/10+
  
-2*(0:10) +      x  y 
-seq(0,​20,​by=2)+  ​1 ​  1 51 
 +  ​  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
  
-10:0 +names(d1) 
-seq(10,0by=-1)+ 
 +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>​ </​code>​
  
-Selecionando indivíduos pela sua posição (indexando valores de um vetor). Note que comandos ​seguir somente mostram resultados sem alterar //x//+Aplicando uma funcao ​um Data Frame separando por fatores
 <code R> <code R>
-x[1] +by(d2$Yd2$levsummary)
-x[4] +
-x[1:3] +
-x[5:8] +
-x[c(257]) +
-x+
 </​code>​ </​code>​
  
-Selecionando valores do vetor segundo outros critérios. Nos comandos ​seguir o objeto original não é alterado.+Criando um Data Frame partir de todas as combinacoes de 2 fatores.
 <code R> <code R>
-pesos <- c(6783, 56, 91, 58, 47, 82, 75+d3 = expand.grid(1:34:5
-pesos[pesos > 80] +d3 
-pesos[pesos < 50 | pesos > 80] + 
-pesos[pesos > 50 & pesos < 80]+is.data.frame(d3)
 </​code>​ </​code>​
  
- +Adicionando colunas
-Substituindo valores de um vetor. Note que comandos alteram valores do vetor.+
 <code R> <code R>
-x[1:3] <- c(01020+d4 = data.frame(peso=rnorm(15,65,5),​altura=rnorm(15,​160,​10)
-x+d4
  
-pesos +d4=cbind(d4,​sexo=c(rep('​M',​10),​rep('​F',​5))
-pesos[4] +d4
-pesos[4] <- 81 +
-pesos +
-pesos[pesos > 80] +
-pesos[pesos > 80] <- 85 +
-pesos +
-pesos[pesos > 80] <- NA +
-pesos +
-pesos[is.na(pesos)] <- 90 +
-pesos+
 </​code>​ </​code>​
  
-Identificando as posições dos elementos ​que satisfazem certo critério.+Toda coluna ​que não seja composta exclusivamente de números é definida como um fator.
 <code R> <code R>
-pesos +is.factor(d4$sexo) 
-which(pesos == 56+[1] TRUE 
-which(pesos == 90+ 
-which(pesos < 70)+letters 
 + 
 +LETTERS 
 + 
 +d4=cbind(d4,nome=letters[1:​15]) 
 + 
 +is.factor(d4$nome) 
 +[1] TRUE 
 + 
 +d4$nomeas.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>​ </​code>​
  
-Amostrando valores de um vetor. Note uso do ''​rep''​ para definir amostra com reposição. ''​args()''​ mostra os argumentos da função.+ 
 + 
 +Listas
 <code R> <code R>
-dados <- c(342831, 32, 43, 40, 45, 39, 26, 29) + 
-sample(dados, 3) +Listas sao estruturas genericas e flexiveis que permitem armazenar 
-sample(dados, ​3) +diversos formatos em um unico objeto.  
-sample(dados, 3, rep=TRUE) ​ + 
-args(sample)+lis1 <- list(A = 1:10B = "CE 223"C = matrix(1:9,ncol = 3)
 +lis1 
 + 
 +$A 
 +[1]  1  2  ​ ​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>​ </​code>​
  
-Ordenando valores+Varias funcoes do R retornam listas
 <code R> <code R>
-dados +d1 
-sort(dados+ 
-rev(sort(dados)) +lis2 = lm (y ~ x, data=d1
-sort(dados, decreasing=T)+ 
 +lis2 
 + 
 +is.list(lis2) 
 + 
 +class(lis2) 
 + 
 +summary(lis2
 + 
 +anova(lis2) 
 + 
 +names(lis2) 
 + 
 +lis2$pred 
 + 
 +lis2$residuals 
 + 
 +par(mfrow=c(2,2)) 
 + 
 +plot(lis2)
 </​code>​ </​code>​
  
-Acrescentando ​elementos ​e concatenando dois ou mais vetores<code R> +Selecionando ​elementos ​de uma lista 
-x <- 0:10 +<code R> 
-+lis1$A
-x <- c(x, 11) +
-x+
  
-x1 <- c(51:60, 101:110) +lis2$coeff
-x1+
  
-x2 <- c(x, c(15, 18, 21, 15, 30)) +lis1[3]
-x2+
  
-x3 <- c(x2, x1) +lis1[[3]]
-x3+
  
-c(1:10, seq(21, 50, by=2), c(100, 110, 150)) 
 </​code>​ </​code>​
  
-==== Semana ​==== +==== Semana ​====
-=== 03/​03/​2008 ​===+
  
-Operadores aritméticas ​funções para operações aritméticas,​ prioridade ​de operaçõesuso de parêntesis+=== 24/03/2008 === 
 +**Problema:​** 
 +Considere duas variáveis aleatórias:​ ''​N''​ com distribuição Poisson de parâmetro 15 ''​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 anterioresisto é ''​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> <code R>
-<- 0:10 +N<- rpois(10000,​ lambda=15) 
-px <- choose(10x) * (0.3)^x * (1-0.3)^(10-x) +Pr<- rexp(10000rate=1/​50000) 
-px+Y<- N*Pr 
 +q99 <- quantile(Y, prob=0.99)
 </​code>​ </​code>​
  
-Gráficos+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> <code R>
-plot(xpx           # ver gráfico +hist(Y) 
-plot(x, px, type="​h"​ # ver gráfico+hist(Yprob=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>​ </​code>​
  
-Funções relacionadas ​distribuições de probabilidades+Criando uma função -- um exemplo. Vamos encapsular todo o procedimento acima em uma função. Isto pode 
 +ser útil para tornar ​execução mais rápida e eficiente quando o procedimento deve ser repetido várias vezes. 
 +(o equivalente a construir ''​macros''​).
 <code R> <code R>
-px <- dbinom(x10, 0.3+mf<- function(n,lam,r,q){ 
-px+  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>​ </​code>​
  
-Gráfico ​da função acumulada+=== 26/03/2008 === 
 +Exercício proposto no material do curso e extensões discutidas em aula. 
 + 
 +Calculando o valor da expressão
 <code R> <code R>
-Fx <- pbinom(x, 10, 0.3+<- c(12, 11,14,15,10,11,14,11
-Fx +E=-length(x)*10 + sum(x* log(10- sum(log(factorial(x))) 
-cumsum(px       # note que soma acumulada de dbinom() fornece mesmo resultado que pbinom() +E
-plot(x, Fx, type="​s"​)+
 </​code>​ </​code>​
  
-Lei da reciclagem (//recycling rule//) -- válida para as operações aritméticas+Agora tornando mais flexível, escrevendo uma função que permite entrar com diferentes amostras e/ou valores de λ.
 <code R> <code R>
-2 * x +mf <- function(ylam){ 
-(0.3)^x +-length(y)*lam sum(y) * log(lam- sum(log(factorial(y))) 
-x1 <- c(25, 7, 8+
-x1 +mf(y=x, lam=10)
-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(x1log(x2)+
 </​code>​ </​code>​
  
-Argumentos ​de funções: ordem dos argumentos, nomes dos argumentos, casamento parcial ​de nomes, argumentos com //default//+Noque que está é a expressão da log-verossimilhanca para uma a.a. de uma distribuição ​de Poisson
 <code R> <code R>
-args(dbinom) +mf(y=x, lam=11
-dbinom(x, 10, 0.3) +mf(y=x, lam=12
-dbinom(x=x, size=10, prob=0.3+mf(y=x, lam=13)
-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.3log=T)+
 </​code>​ </​code>​
  
-=== 05/03/2008 ===+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>​
  
-Verificando máximos, mínimos e suas posições em um vetor.<code R> +Vamos agora indicar a solução analítica. 
-pesos <- c(67, 83, 56, 91, 58, 47, 82, 75+<code R> 
-max(pesos) +mean(x
-min(pesos) +abline(v=mean(x))
-which(pesos =max(pesos)+
-which.max(pesos) +
-which(pesos == min(pesos)) +
-which.min(pesos)+
 </​code>​ </​code>​
  
-Testando pela ocorrência de ''​NA''​Note o uso do caracter de negação ''​!'' ​<​code ​R+A solução também poderia ser obtida por otimização numéricaIsto não é vantajoso para este problema mas pode ser a solução em casos onde a solução analítica não é disponível. 
-dat <- c(4356, NA, 23, 48, 33, NA, 29, 33, 39) +<​code>​ 
-is.na(dat) +optimize(mfc(min(x), max(x)), maximum=T, y=x)
-!is.na(dat) +
-which(is.na(dat)) +
-which(!is.na(dat)) +
-dat1 <- dat[!is.na(dat)]+
 </​code>​ </​code>​
  
-==== Semana ​==== +==== Semana ​====
-=== 10/​03/​2008 ​===+
  
-Outras funções de probabilidades<code R> +=== 31/03/2008 e 02/04/2008 === 
-args(dchisq) +Lendo dados externos no formato data.frame 
-args(dt)+ 
 +<code R> 
 +milsa=read.table('​milsa.dat',​header=T)
 </​code>​ </​code>​
  
-Algumas contantes e operadores<code R> +Transformando numericos em fatores 
-exp(1+<code R> 
-exp(3+milsa$civil=factor(milsa$civil,​lev=1:2,lab=c('​solteiro','​casado'​)
-print(pidig=12) +milsa$instrucao=factor(milsa$instrucao,lev=1:3,lab=c('​1oGrau'​,'​2oGrau','​superior'​),​ord=T
-print(pidig=12+milsa$regiao=factor(milsa$regiao,​lev=1:​3,​lab=c('​interior','​capital','​outro'​)
-pi +head(milsa)
-options(digits=12+
-pi +
-exp(1)+
 </​code>​ </​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)
  
-Examinar opções de ''​options()''<​code R> +table(civil,​instrucao,​regiao)
-options()+
 </​code>​ </​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))
  
-=== 12/03/2008 ===+prop.table(tmp,​mar=2)# colunas somam 1
  
-Funções para verificar exitência de ''​NA'''​s ''​NaN'''​s e valores infinitos (''​Inf''​) <code R> +prop.table(tmp)# todos somam 1
-x <- c(5, 0, -2) +
-x/0 +
-is.nan(x/​0) +
-is.finite(x/​0) +
-!is.finite(x/0)+
 </​code>​ </​code>​
  
-Explicações sobre como o R armazana objetos (RAM e/ou dispositivos como por exemplo o HD)<code R> +Resumos 
-save.image() +<code R> 
-q()+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>​ </​code>​
  
-Listando e apagando objetos+Analise bivariada
 <code R> <code R>
-ls(+barplot(table(civil,​instrucao)) 
-objects() +barplot(table(regiao,​instrucao)) 
-rm(x+ 
-rm(list=ls()) +barplot(table(civil,​instrucao),​beside=T
-args(ls+barplot(table(regiao,​instrucao),​beside=T,​legend.text=T)
-ls() +
-ls(all=T)+
 </​code>​ </​code>​
  
-Tipos de objetos no R: matrizes+Esquema dos 5 numeros
 <code R> <code R>
-x <- 1:24 +fivenum(idade) 
-x + 
-m <- matrix(xnr=6) +[1] 20.83333 30.58333 34.91667 40.54167 48.91667 
-+ 
-m <- matrix(xnr=6, byrow=T+quantile(idade,c(0.25,0.75)
-+     ​25%      75%  
-x <- 1:25 +30.66667 40.52083
-m <- matrix(x, nr=6) +
-+
-attributes(x) +
-attributes(m)+
 </​code>​ </​code>​
  
-Tipos de objetos no R: arrays+Medidas robustas
 <code R> <code R>
-x <- 1:24 +salario1=salario 
-a <- array(xdim=c(4,3,2)) +salario1[36]=93.30 
-a+ 
 +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>​ </​code>​
  
-Digitação e conversão de uma tabela de tripla entrada ​(dada no quadro durante a aulaem um objeto do tipo ''​array''​ +Ramo-folhas 
-|            |  PR                   ​|| ​  ​SC ​                ​|| ​  ​RS ​               || +<code R> 
-|            | Masculino | Feminino ​ | Masculino | Feminino ​ | Masculino | Feminino | +stem(salario)
-|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> +  The decimal point is at the | 
-freqs <- scan() + 
-1: 45 +   4 | 0637 
-2: 28 +   6 | 379446 
-3: 37 +   8 | 15791388 
-4: 16 +  10 | 5816 
-5: 22 +  12 | 08268 
-6: 15 +  14 | 77 
-7: 21 +  16 | 0263 
-8: 34 +  18 | 84 
-9: 56 +  20 |  
-10: 33 +  22 | 
-11: 21 + 
-12: 30 +stem(salario,​scale=2) 
-13: 40 +   | 06 
-14: 50 +   ​| 37 
-15: 85 +   ​| 379 
-16: 45 +   ​| 446 
-17: 37 +   ​| 1579 
-18: 29 +   ​| 1388 
-19: +  10 | 58 
-freqs +  11 | 16 
-Af <- array(freqs,​ dim=c(3,2,3)) +  12 | 08 
-Af+  13 | 268 
 +  14 | 77 
 +  15  
 +  16 | 026 
 +  17 | 3 
 +  18 | 8 
 +  19 | 4 
 +  20 |  
 +  21 |  
 +  22 |  
 +  23 | 3
 </​code>​ </​code>​
  
-==== Semana 4 ==== +Histogramas
-=== 19/03/2008 === +
-Data frames+
 <code R> <code R>
-d1 = data.frame(x=1:10,y=c(51,​54,​61,​67,​68,​75,​77,​75,​80,82))+par(mfrow=c(2,2))
  
-d1+hist(salario,​main='​salario'​)
  
-      x  y +hist(salario,​nclass=15,​main='​salario'​) 
-  ​1 ​  1 51 +hist(idade,​main='​idade'​)
-  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)+barplot(table(filhos),​main='​No de filhos'​)
  
-d1$x +par(mfrow=c(1,​1))
-d1$y+
  
-d1[,1] +hist(salario,main='​salario'​) 
-d1[,2]+rug(salario) 
 +</​code>​
  
-plot(d1)+Estimando uma funcao de densidade 
 +<code R> 
 +hist(salario,​main='​salario',​prob=T) 
 +lines(density(salario))
  
-plot(d1$x,d1$y)+hist(idade,main='​idade',​prob=T) 
 +lines(density(idade)) 
 +</​code>​
  
-d2 = data.frame(= c(rnorm(5,​mean=10,​sd=2),​ rnorm(5,​16,​2),​ rnorm(5,14,2)))+Boxplot 
 +<code R> 
 +par(mfrow=c(1,2))
  
-gl(35+boxplot(idade,main='​idade'​
- [1] 1 1 1 1 1 2 2 2 2 3 3 3 3 3 +rug(idade,​side=2)
-Levels: 1 2 3+
  
-d2$lev ​gl(35)+boxplot(salario,​main='​salario'​) 
 +rug(salario,side=2)
  
-d2+par(mfrow=c(2,​1))
  
-is.factor(d2$lev)+boxplot(idade,​horizontal=T,​main='​idade'​) 
 +rug(idade,​side=1)
  
-# Aplicando uma funcao a um Data Frame separando por fatores+boxplot(salario,​ horizontal=T,​main='​salario'​) 
 +rug(salario,​side=1) 
 +</​code>​
  
-by(d2$Y, d2$lev, summary)+Variaveis categoricas e numericas 
 +<code R> 
 +boxplot(salario~regiao) 
 +boxplot(idade~civil)
  
-Criando um Data Frame a partir de todas as combinacoes de 2 fatores.+boxplot(scale(salario),​scale(idade)) ​#variaveis na mesma escala 
 +</​code>​
  
-d3 = expand.grid(1:34:5) +Ambas variaveis numericas 
-d3+<code R> 
 +plot(salario,idade#variaveis na mesma escala
  
-is.data.frame(d3)+corr=round(cor(salario,​idade),​2)
  
-# Adicionando colunas+text(20,​25,​paste('​rho=',​corr))
  
-d4 = data.frame(peso=rnorm(15,​65,​5),​altura=rnorm(15,​160,​10)) +</​code>​
-d4+
  
-d4=cbind(d4,​sexo=c(rep('​M',​10),​rep('​F',​5))) 
-d4 
  
-# Toda coluna que não seja composta exclusivamente de números é definida como um fator.+==== Semana 7 ====
  
-is.factor(d4$sexo) +=== 07/04/2008 e 09/04/2008 ===
-[1] TRUE+
  
-letters+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
  
-LETTERS+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>
  
-d4=cbind(d4,nome=letters[1:​15])+read.table('nome do arquivo',​ header=T, sep=','​)
  
-is.factor(d4$nome) +# ou 
-[1] TRUE+read.csv('nome do arquivo',​ header=T
 +</​code>​
  
-d4$nome= as.character(d4$nome)+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)
  
-d4+x = read.xls ('​aeusp.xls'​)
  
-dim(d4)+head(x)
  
-names(d4)+  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>​
  
-dimnames(d4)+=== 30/04/2008 ===
  
-rownames(d4)+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>​
  
-colnames(d4)+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>​
  
-d4[d4$sexo=='​M'​,1:2]+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(xprob=0.75)) 
 +T.est(ams[1,]) 
 +T.est(ams[2,]
 +</​code>​
  
-d4[d4$sexo=='​F'​,4]+Calculando valor da estatística de interesse agora para todas as amostras de uma só vez 
 +<code R> 
 +ts <- apply(ams1, T.est) 
 +length(ts) 
 +ts 
 +</​code> ​
  
-by(d4[,1:2],d4$sexo,function(x)x)+Explorando os resultadosmedidas resumografico de densidade estimada e IC (95%) 
 +<code R> 
 +summary(ts) 
 +plot(density(ts)) 
 +quantile(tsprob=c(0.025, 0.975)) 
 +</​code> ​
  
-by(d4[,4],d4$sexo,function(x)as.character(x))+Aumentando o número de amostras para 5000. 
 +<code R> 
 +ams <- matrix(rnorm(20*5000m=70sd=10)ncol=20) 
 +ts <- apply(ams, 1, T.est) 
 +plot(density(ts))
 </​code>​ </​code>​
  
-Listas+Distribuição amostral da média: empírica (por simulação) //versus// teórica
 <code R> <code R>
-#Listas sao estruturas genericas e flexiveis que permitem armazenar +medias <- apply(ams, 1, mean) 
-#diversos formatos em um unico objeto. ​+plot(density(medias)) 
 +curve(dnorm(x,​mean=70,​ sd=10/​sqrt(20)),​ 60, 80, add=TRUE, col=2) 
 +</​code>​
  
-lis1 <- list(A ​1:10, B "CE 223", C matrix(1:​9,​ncol ​3)) +=== 07/05/2008 ===
-lis1+
  
-$A +Exercicios sobre o uso do Latex.
-[1]  1  2  3  4  5  6  7  8  9 10+
  
-$B +Um preambulo basico: 
-[1] "CE 223" +<​code>​ 
-   +\documentclass[12pt]{article}% classes basicas: bookarticlereport e letter 
-$C +\usepackage[brazil]{babel}% português do Brasil. ​ 
-     [,1[,2] [,3] +\usepackage[latin1]{inputenc}% usar o conjunto de caracteres Europeu Ocidental. 
-[1,   ​1 ​   4    7 +</​code>​ 
-[2,   ​2 ​   5    8 +Para usar Unicode, substitua a última linha por 
-[3,   ​3 ​   6    9+<​code>​ 
 +\usepackage[utf-8]{inputenc} 
 +</​code>​
  
-#Varias funcoes ​do R retornam listas+Apos o preambulo coloque o titulo, autoria e data do artigo. 
 +<​code>​
  
-d1+\Title{Título do Trabalho} 
 +\author{Nome do Autor} 
 +\date{\today} 
 +</​code>​
  
-lis2 = lm (y ~ xdata=d1)+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>​
  
-lis2+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 $$.
  
-is.list(lis2)+Escreva os comandos do Latex para construir a seguinte matriz:
  
-class(lis2)+<​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>​
  
-summary(lis2)+<​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>​
  
-anova(lis2)+Escreva os comandos do Latex para montar as seguintes tabelas. Tente numerar as tabelas, colocar um comentário e referenciar as tabelas no texto.
  
-names(lis2)+<​latex>​ 
 +\begin{tabular}{ccc} 
 +\hline 
 +           & masculino & feminino \\ 
 +\hline 
 +Não fuma   & 45        & 16       \\ 
 +Fuma pouco & 28        & 22       \\ 
 +\hline 
 +\end{tabular} 
 +</​latex>​
  
-lis2$pred+<​code>​ 
 +\begin{tabular}{ccc} 
 +\hline 
 +           & masculino & feminino \\ 
 +\hline 
 +Não fuma   & 45        & 16       \\ 
 +Fuma pouco & 28        & 22       \\ 
 +\hline 
 +\end{tabular} 
 +</​code>​
  
-lis2$residuals+<​latex>​ 
 +\begin{tabular}{|l|cc|} 
 +\hline 
 +           & masculino & feminino \\ 
 +\hline\hline 
 +Não fuma   & 45        & 16       \\ 
 +Fuma pouco & 28        & 22       \\ 
 +\hline 
 +\end{tabular} 
 +</​latex>​
  
-par(mfrow=c(2,​2))+<​code>​ 
 +\begin{tabular}{|l|cc|} 
 +\hline 
 +           & masculino & feminino \\ 
 +\hline\hline 
 +Não fuma   & 45        & 16       \\ 
 +Fuma pouco & 28        & 22       \\ 
 +\hline 
 +\end{tabular} 
 +</​code>​
  
-plot(lis2)+Criando uma tabela Latex de dentro do R.
  
-#​Selecionando elementos de uma lista+<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.
  
-lis1$A+Incluindo figuras.
  
-lis2$coeff+Os comandos abaixo criam um arquivo Postscript com um histograma. 
 +<code R> 
 +postscript('​histograma.ps'​) 
 +hist(rnorm(1000)) 
 +dev.off() 
 +</​code>​
  
-lis1[3]+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>​
  
-lis1[[3]]+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>​ </​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>​
 +
 +
 +

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