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:08]
ehlers
disciplinas:ce223:comandos2008 [2008/03/31 10:47]
ehlers
Linha 341: Linha 341:
  
 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 375: Linha 376:
  
 solve(mat, vec) solve(mat, vec)
-</​code>​ 
- 
-<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>​ </​code>​
  
Linha 446: Linha 420:
  
 is.factor(d2$lev) is.factor(d2$lev)
 +</​code>​
  
-Aplicando uma funcao a um Data Frame separando por fatores +Aplicando uma funcao a um Data Frame separando por fatores 
 +<code R>
 by(d2$Y, d2$lev, summary) by(d2$Y, d2$lev, summary)
 +</​code>​
  
-Criando um Data Frame a partir de todas as combinacoes de 2 fatores. +Criando um Data Frame a partir de todas as combinacoes de 2 fatores. 
 +<code R>
 d3 = expand.grid(1:​3,​ 4:5) d3 = expand.grid(1:​3,​ 4:5)
 d3 d3
  
 is.data.frame(d3) is.data.frame(d3)
 +</​code>​
  
-Adicionando colunas +Adicionando colunas 
 +<code R>
 d4 = data.frame(peso=rnorm(15,​65,​5),​altura=rnorm(15,​160,​10)) d4 = data.frame(peso=rnorm(15,​65,​5),​altura=rnorm(15,​160,​10))
 d4 d4
Linha 465: Linha 442:
 d4=cbind(d4,​sexo=c(rep('​M',​10),​rep('​F',​5))) d4=cbind(d4,​sexo=c(rep('​M',​10),​rep('​F',​5)))
 d4 d4
 +</​code>​
  
-Toda coluna que não seja composta exclusivamente de números é definida como um fator. +Toda coluna que não seja composta exclusivamente de números é definida como um fator. 
 +<code R>
 is.factor(d4$sexo) is.factor(d4$sexo)
 [1] TRUE [1] TRUE
Linha 505: Linha 483:
 Listas Listas
 <code R> <code R>
-#Listas sao estruturas genericas e flexiveis que permitem armazenar + 
-#diversos formatos em um unico objeto. ​+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 <- list(A = 1:10, B = "CE 223", C = matrix(1:​9,​ncol = 3))
Linha 522: Linha 501:
 [2,]    2    5    8 [2,]    2    5    8
 [3,]    3    6    9 [3,]    3    6    9
 +</​code>​
  
-#Varias funcoes do R retornam listas +Varias funcoes do R retornam listas 
 +<code R>
 d1 d1
  
Linha 548: Linha 528:
  
 plot(lis2) plot(lis2)
 +</​code>​
  
-#Selecionando elementos de uma lista +Selecionando elementos de uma lista 
 +<code R>
 lis1$A lis1$A
  
Linha 559: Linha 540:
 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>​ </​code>​
  

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