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/26 15:22]
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>+
  
-Algumas contantes e operadores<code R> +<code R> 
-exp(1) +milsa=read.table('​milsa.dat'​,header=T)
-exp(3) +
-print(pi, dig=12) +
-print(pidig=12) +
-pi +
-options(digits=12) +
-pi +
-exp(1)+
 </​code>​ </​code>​
  
-Examinar opções de ''​options()''​<code R> +Transformando numericos em fatores 
-options()+<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>​ </​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)
  
-=== 12/03/2008 ===+table(civil,​instrucao)
  
-Funções para verificar exitência de ''​NA'''​s ''​NaN'''​s e valores infinitos ​(''​Inf''​) <code R> +table(civil,instrucao,regiao)
-x <- c(50-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> +Proporcoes 
-save.image() +<code R> 
-q()+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>​ </​code>​
  
-Listando e apagando objetos+Resumos
 <code R> <code R>
-ls() +summary(milsa[,-1]
-objects() + 
-rm(x+par(mfrow=c(3,​2)
-rm(list=ls()) + 
-args(ls+barplot(table(civil)
-ls() +barplot(table(instrucao)) 
-ls(all=T)+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>​
  
-Tipos de objetos no R: matrizes+Analise bivariada
 <code R> <code R>
-x <- 1:24 +barplot(table(civil,instrucao)
-+barplot(table(regiao,instrucao)
-m <- matrix(xnr=6+ 
-+barplot(table(civil,​instrucao),beside=T
-m <- matrix(xnr=6, byrow=T+barplot(table(regiao,​instrucao),​beside=T,​legend.text=T)
-+
-x <- 1:25 +
-m <- matrix(xnr=6+
-+
-attributes(x) +
-attributes(m)+
 </​code>​ </​code>​
  
-Tipos de objetos no R: arrays+Esquema dos 5 numeros
 <code R> <code R>
-x <- 1:24 +fivenum(idade) 
-a <- array(xdim=c(4,3,2)) + 
-a+[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>​ </​code>​
  
-Digitação e conversão de uma tabela de tripla entrada (dada no quadro durante a aula) em um objeto do tipo ''​array''​ +Medidas robustas 
-|            |  PR                   ​|| ​  ​SC ​                ​|| ​  ​RS ​               || +<code R> 
-|            | Masculino | Feminino ​ | Masculino | Feminino ​ | Masculino | Feminino | +salario1=salario 
-|Não Fuma    ^  45       ​^ ​ 16       ​^ ​  ​21 ​     ^  33       ​^ ​ 40       ​^ ​  ​45 ​    ^ +salario1[36]=93.30
-|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> +mean(salario); mean(salario1
-freqs <- scan() + 
-1: 45 +median(salario);​ median(salario1) 
-2: 28 + 
-3: 37 +mean(salario,​trim=0.1);​ mean(salario1,​trim=0.1) 
-4: 16 + 
-5: 22 +sd(salario);​ sd(salario1) 
-6: 15 + 
-7: 21 +#distancia inter quartis 
-8: 34 + 
-9: 56 +IQR(salario);​ IQR(salario1) 
-10: 33 + 
-11: 21 +##Desvio absoluto mediano (MADmedian absolute deviation) 
-1230 +##​mediana(|Xi - median(X)| * 1.4826 
-13: 40 +##A constante 1.4826 torna o mad comparavel com o sd de uma normal 
-14: 50 + 
-15: 85 +mad(salario); mad(salario1)
-16: 45 +
-17: 37 +
-18: 29 +
-19: +
-freqs +
-Af <- array(freqs, dim=c(3,2,3)+
-Af+
 </​code>​ </​code>​
  
-==== Semana 4 ==== +Ramo-folhas
-=== 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))+stem(salario)
  
-d1+  The decimal point is at the |
  
-      x  y +   4 | 0637 
-  ​1 ​  ​1 51 +   6 | 379446 
-  ​2 ​  ​2 54 +   8 | 15791388 
-  ​3   3 61 +  ​10 | 5816 
-  ​4   4 67 +  ​12 | 08268 
-  ​5   5 68 +  ​14 | 77 
-  ​6   6 75 +  ​16 | 0263 
-  ​7   7 77 +  ​18 | 84 
-  ​8   8 75 +  ​20 |  
-  ​9   9 80 +  ​22 | 3
-  10 10 82+
  
-names(d1)+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>​
  
-d1$x +Histogramas 
-d1$y+<code R> 
 +par(mfrow=c(2,​2))
  
-d1[,1] +hist(salario,main='​salario'​)
-d1[,2]+
  
-plot(d1)+hist(salario,​nclass=15,​main='​salario'​) 
 +hist(idade,​main='​idade'​)
  
-plot(d1$x,d1$y)+barplot(table(filhos),main='​No de filhos'​)
  
-d2 = data.frame(= c(rnorm(5,​mean=10,​sd=2),​ rnorm(5,​16,​2),​ rnorm(5,14,2)))+par(mfrow=c(1,1))
  
-gl(35+hist(salario,main='​salario'​
- [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 +rug(salario) 
-Levels: 1 2 3+</​code>​
  
-d2$lev = gl(35)+Estimando uma funcao de densidade 
 +<code R> 
 +hist(salario,main='​salario',​prob=T) 
 +lines(density(salario))
  
-d2+hist(idade,​main='​idade',​prob=T) 
 +lines(density(idade)) 
 +</​code>​
  
-is.factor(d2$lev)+Boxplot 
 +<code R> 
 +par(mfrow=c(1,​2))
  
-# Aplicando uma funcao a um Data Frame separando por fatores+boxplot(idade,​main='​idade'​) 
 +rug(idade,​side=2)
  
-by(d2$Yd2$levsummary)+boxplot(salario,main='​salario'​) 
 +rug(salario,side=2)
  
-# Criando um Data Frame a partir de todas as combinacoes de fatores.+par(mfrow=c(2,1))
  
-d3 = expand.grid(1:34:5+boxplot(idade,horizontal=T,​main='​idade'​
-d3+rug(idade,​side=1)
  
-is.data.frame(d3)+boxplot(salario, horizontal=T,​main='​salario'​) 
 +rug(salario,​side=1) 
 +</​code>​
  
-# Adicionando colunas+Variaveis categoricas e numericas 
 +<code R> 
 +boxplot(salario~regiao) 
 +boxplot(idade~civil)
  
-d4 = data.frame(peso=rnorm(15,65,5),altura=rnorm(15,160,10)) +boxplot(scale(salario),scale(idade)) #variaveis na mesma escala 
-d4+</​code>​
  
-d4=cbind(d4,sexo=c(rep('​M',​10),​rep('​F',​5))) +Ambas variaveis numericas 
-d4+<code R> 
 +plot(salario,idade#variaveis na mesma escala
  
-# Toda coluna que não seja composta exclusivamente de números é definida como um fator.+corr=round(cor(salario,​idade),​2)
  
-is.factor(d4$sexo) +text(20,​25,​paste('​rho=',​corr))
-[1] TRUE+
  
-letters+</​code>​
  
-LETTERS 
  
-d4=cbind(d4,​nome=letters[1:​15])+==== Semana 7 ====
  
-is.factor(d4$nome) +=== 07/04/2008 e 09/04/2008 ===
-[1] TRUE+
  
-d4$nome= as.character(d4$nome)+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
  
-d4+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>
  
-dim(d4)+read.table('nome do arquivo',​ header=T, sep=','​)
  
-names(d4)+# ou
  
-dimnames(d4)+read.csv('nome do arquivo',​ header=T) 
 +</​code>​
  
-rownames(d4)+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)
  
-colnames(d4)+x = read.xls ​('​aeusp.xls'​)
  
-d4[d4$sexo=='​M',​1:​2]+head(x)
  
-d4[d4$sexo=='​F',​4]+  Num    Comun Sexo Idade Ecivil X.Reproce X.Temposp X.Resid Trab Ttrab X.Itrab 
 +1   1 JdRaposo ​   2          ​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>​
  
-by(d4[,​1:​2],​d4$sexo,​function(x)x)+=== 30/04/2008 ===
  
-by(d4[,4],d4$sexo,​function(x)as.character(x))+Gerando 1000 amostras de tamanho n=20 de uma distribuição normal padrão  
 +<code R> 
 +rnorm(20m=70sd=10) 
 +ams <- matrix(rnorm(20*1000,​ m=70, sd=10), ncol=20) 
 +dim(ams) 
 +ams[1,] 
 +ams[2,]
 </​code>​ </​code>​
  
-Listas+Calculando o valor da estatística de interesse para a primeira e segunda amostra
 <code R> <code R>
-#Listas sao estruturas genericas e flexiveis que permitem armazenar +max(ams[1,​])/​quantile(ams[1,​],​ prob=0.75) 
-#diversos formatos em um unico objeto+unname(max(ams[1,​])/​quantile(ams[1,​],​ prob=0.75)) 
 +unname(max(ams[2,​])/​quantile(ams[2,​],​ prob=0.75)) 
 +</​code>​
  
-lis1 <- list(A = 1:10"CE 223", C = matrix(1:9,ncol = 3)) +Escrevendo uma função que calcula o valor da estatística de interesse e calculando novamente o valor para a primeira e segunda amostras. 
-lis1+<code R> 
 +T.est <- function(x) unname(max(x)/​quantile(xprob=0.75)) 
 +T.est(ams[1,]) 
 +T.est(ams[2,​]
 +</​code>​
  
-$A +Calculando valor da estatística de interesse agora para todas as amostras de uma só vez 
-[1]  1  2  3  4  5  6  7  8  9 10+<code R> 
 +ts <- apply(ams, ​1, T.est) 
 +length(ts) 
 +ts 
 +</​code> ​
  
-$B +Explorando os resultados: medidas resumo, grafico de densidade estimada e IC (95%) 
-[1] "CE 223" +<code R> 
-   +summary(ts) 
-$C +plot(density(ts)) 
-     [,1] [,2] [,3] +quantile(tsprob=c(0.0250.975)) 
-[1,]    1    4    7 +</​code> ​
-[2,]    2    5    8 +
-[3,]    3    6    9+
  
-#Varias funcoes do retornam listas+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>​
  
-d1+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>​
  
-lis2 lm (y ~ x, data=d1)+=== 07/05/2008 ===
  
-lis2+Exercicios sobre o uso do Latex.
  
-is.list(lis2)+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>​
  
-class(lis2)+Apos o preambulo coloque o titulo, autoria e data do artigo. 
 +<​code>​
  
-summary(lis2)+\Title{Título do Trabalho} 
 +\author{Nome do Autor} 
 +\date{\today} 
 +</​code>​
  
-anova(lis2)+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>​
  
-names(lis2)+Escreva os comandos Latex para as seguintes formulas matematicas:​ 
 +  * <​latex>​$E(X^2)=\int_{-\infty}^{\infty}x^2 f(x)dx$</​latex>​ 
 +  * <​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>​ 
 +  * <​latex>​$(a+b)^n = \sum_{k=0}^n \frac{n!}{k!(n-k)!} a^k b^{n-k}</​latex>​
  
-lis2$pred+Escreva os comandos do Latex para construir a seguinte matriz:
  
-lis2$residuals+<​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>​
  
-par(mfrow=c(2,2))+Escreva os comandos do Latex para montar as seguintes tabelas. Tente numerar as tabelascolocar um comentário e referenciar as tabelas no texto.
  
-plot(lis2)+<​latex>​ 
 +\begin{tabular}{ccc} 
 +\hline 
 +           &​masculino & feminino \\ 
 +\hline 
 +Não fumac  &​45 ​       & 16       \\ 
 +Fuma pouco &​28 ​       & 22       \\ 
 +\hline 
 +\end{tabular} 
 +</​latex>​
  
-#​Selecionando elementos de uma lista+<​latex>​ 
 +\begin{tabular}{|l|cc|} 
 +\hline 
 +           &​masculino & feminino \\ 
 +\hline\hline 
 +Não fuma   &​45 ​       & 16       \\ 
 +Fuma pouco &​28 ​       & 22       \\ 
 +\hline 
 +\end{tabular} 
 +</​latex>​
  
-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{hfig:​ist},​ na pagina \pageref{fig:​hist}. Note que a figura ficou rotacionada à esquerda. Podemos corrigir refazendo o arquivo .ps ou usando a opção "​angle"​.
  
 +<code R>
 +postscript('​histograma.ps',​horozontal=F)
 +hist(rnorm(1000))
 +dev.off()
 </​code>​ </​code>​
 +
 +<​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.
 +<​latex>​
 +\begin{figure}[h]
 +   ​\centerline{
 +   ​\subfigure[]{\includegraphics[width=10cm,​ height = 10cm]{histograma.ps}
 +   ​\label{fig:​hist1}}
 +   \hfil
 +   ​\subfigure[]{\includegraphics[width=5cm,​ height=5cm]{histograma.ps}
 +   ​\label{fig:​hist2}}
 +   }
 +   ​\caption{}
 +   ​\label{fig:​histogramas}
 +\end{figure}
 +</​code>​
 +
 +Fazendo referencia: Figuras \ref{fig:​histogramas},​ \ref{fig:​hist1} e \ref{fig:​hist2}.
 +
 +
 +
 +
 +
 +

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