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/03/26 23:11]
paulojus
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 377: Linha 378:
 </​code>​ </​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>​ 
- 
-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 ==== 
 === 19/03/2008 === === 19/03/2008 ===
 Data frames Data frames
Linha 718: 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 737: 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 777: 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 794: 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 820: Linha 528:
  
 plot(lis2) plot(lis2)
 +</​code>​
  
-#Selecionando elementos de uma lista +Selecionando elementos de uma lista 
 +<code R>
 lis1$A lis1$A
  
Linha 832: Linha 541:
  
 </​code>​ </​code>​
 +
 +==== Semana 5 ====
 +
 +=== 24/03/2008 ===
 +
 +<code R>
 +N<- rpois(10000,​ lambda=15)
 +Pr<- rexp(10000, rate=1/​50000)
 +Y<- N*Pr
 +q99 <- quantile(Y, prob=0.99)
 +hist(Y)
 +
 +
 +hist(Y, prob=T)
 +lines(density(Y))
 +plot(density(Y))
 +abline(v=q99)
 +
 +
 +hy<- hist(Y)
 +hy
 +class(hy)
 +plot(hy)
 +hist
 +</​code>​
 +
 +Criando função:
 +
 +<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>​
 +
 +=== 24/03/2008 ===
 +Exercício proposto no material do cursoe 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 cem casosonde asolução analítica não é disponível.
 +<​code>​
 +optimize(mf,​ c(min(x), max(x)), maximum=T, y=x)
 +</​code>​
 +

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