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/26 23:11]
paulojus
disciplinas:ce223:comandos2008 [2008/04/09 10:22]
ehlers
Linha 545: Linha 545:
  
 === 24/03/2008 === === 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> <code R>
 N<- rpois(10000,​ lambda=15) N<- rpois(10000,​ lambda=15)
Linha 551: Linha 554:
 Y<- N*Pr Y<- N*Pr
 q99 <- quantile(Y, prob=0.99) q99 <- quantile(Y, prob=0.99)
-hist(Y) +</​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) hist(Y, prob=T)
 lines(density(Y)) lines(density(Y))
 plot(density(Y)) plot(density(Y))
 abline(v=q99) 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. 
-hy<- hist(Y)+<code R> 
 +hy <- hist(Y)
 hy hy
 class(hy) class(hy)
Linha 567: Linha 575:
 </​code>​ </​code>​
  
-Criando função: +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> <code R>
 mf<- function(n,​lam,​r,​q){ mf<- function(n,​lam,​r,​q){
-N<​-rpois(n,​lambda=lam) +  ​N<​-rpois(n,​lambda=lam) 
-Pr<​-rexp(n,​rate=r) +  Pr<​-rexp(n,​rate=r) 
-Y<​-N*Pr +  Y<​-N*Pr 
-qq <- quantile(Y,​prob=q) +  qq <- quantile(Y,​prob=q) 
-hist(Y,​prob=T) +  hist(Y,​prob=T) 
-lines(density(Y)) +  lines(density(Y)) 
-abline(v=qq) +  abline(v=qq) 
-text("​topright",​ paste("​quantil",​ q, "​=",​ qq)) +  text("​topright",​ paste("​quantil",​ q, "​=",​ qq)) 
-return(invisible(qq))+  return(invisible(qq))
 } }
- 
 mf(10000, 15, 1/50000, 0.99) mf(10000, 15, 1/50000, 0.99)
-resp<- mf(10000,​15,​ 1/50000, 0.99)+resp <- mf(10000,​15,​ 1/50000, 0.99)
 resp resp
 </​code>​ </​code>​
  
-=== 24/03/2008 === +=== 26/03/2008 === 
-Exercício proposto no material do cursoe ​extensões discutidas em aula.+Exercício proposto no material do curso e extensões discutidas em aula.
  
 Calculando o valor da expressão Calculando o valor da expressão
Linha 605: Linha 613:
 </​code>​ </​code>​
  
-Noque que está éa expressão da log-verossimilhanca para uma a.a. de uma distribuição de Poisson+Noque que está é a expressão da log-verossimilhanca para uma a.a. de uma distribuição de Poisson
 <code R> <code R>
 mf(y=x, lam=11) mf(y=x, lam=11)
Linha 629: Linha 637:
 </​code>​ </​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.+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>​ <​code>​
 optimize(mf,​ c(min(x), max(x)), maximum=T, y=x) 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>​ </​code>​
  

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