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:20]
paulojus
disciplinas:ce223:comandos2008 [2008/05/07 12:07]
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(3,2,3))+array(freqs,​ dim=c(2,3,3)) 
 +, , 1
  
-nomes = list(c('​PR'​,'​SC'​,'​RS'​)c('​M'​,'​F'​)c('nao fuma','​fuma pouco','​fuma muito'​))+     [,1] [,2] [,3] 
 +[1,]   ​45 ​  ​21 ​  40 
 +[2,]   ​16 ​  ​33 ​  45
  
-hf = array(freqs,​ dim=c(3,2,3), dimnames=nomes)+, , 2 
 + 
 +     [,1] [,2] [,3] 
 +[1,]   ​28 ​  ​34 ​  50 
 +[2,]   ​22 ​  ​21 ​  37 
 + 
 +, , 3 
 + 
 +     [,1] [,2] [,3] 
 +[1,]   ​37 ​  ​56 ​  85 
 +[2,]   ​15 ​  ​30 ​  29 
 + 
 +# Cada matrix 2x3 contem as contagens por sexo (linhas) e estado (colunas).  
 +# A ultima dimensao refere-se ao habito de fumar. 
 + 
 +nomes = list(c('​M','​F'​),​c('​PR','​SC','​RS'​),​c('​nao fuma','​fuma pouco','​fuma muito'​)) 
 + 
 +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 480: Linha 519:
 by(d4[,​4],​d4$sexo,​function(x)as.character(x)) by(d4[,​4],​d4$sexo,​function(x)as.character(x))
 </​code>​ </​code>​
 +
 +
  
 Listas Listas
Linha 556: Linha 597:
 </​code>​ </​code>​
  
-Vamosagora ​visualizar a distribuição de interesse de diferentes formas: pelo hiostograma ​das simulações e,+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. uma forma alternativa (e mais interessante!!!) utilizando estimação de densidades.
 <code R> <code R>
Linha 566: Linha 607:
 </​code> ​ </​code> ​
  
-Note que que funçãos ​podem retornar resultados e/ou gráficos. A função ''​hist()''​ é um exemplo de função que retorna ambos.+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> <code R>
-hy<- hist(Y)+hy <- hist(Y)
 hy hy
 class(hy) class(hy)
Linha 575: Linha 616:
 </​code>​ </​code>​
  
-Criando uma função-- um exemplo. ​Vamosencapsular ​todo o procedimento acima em uma função. Isto pode +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 ​mias rápida e eficiente ​ quando o procedimento deve ser repetido várias vezes.+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''​). (o equivalente a construir ''​macros''​).
 <code R> <code R>
Linha 595: Linha 636:
 </​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 613: Linha 654:
 </​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 637: Linha 678:
 </​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>​ </​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>​
 +
 +
 +==== Semana 7 ====
 +
 +=== 07/04/2008 e 09/04/2008 ===
 +
 +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
 +
 +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>
 +
 +read.table('​nome do arquivo',​ header=T, sep=','​)
 +
 +# ou
 +
 +read.csv('​nome do arquivo',​ header=T)
 +</​code>​
 +
 +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)
 +
 +x = read.xls ('​aeusp.xls'​)
 +
 +head(x)
 +
 +  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>​
 +
 +=== 30/04/2008 ===
 +
 +Gerando 1000 amostras de tamanho n=20 de uma ormal 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>​
 +
 +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>​
 +
 +Escrevendo uma função que calcula o valor da estatística de interesse e calculando ovamente o valor para a primeira e segunda amostras.
 +</code R>
 +T.est <- function(x) unname(max(x)/​quantile(x,​ prob=0.75))
 +T.est(ams[1,​])
 +T.est(ams[2,​])
 +</​code>​
 +
 +Calculando valor da estatística de interesse agora para todas as amostras de uma só vez
 +<code R>
 +ts <- apply(ams, 1, T.est)
 +length(ts)
 +ts
 +</​code> ​
 +
 +Explorando os resultados: medidas resumo, grafico de densidade estimada e IC (95%)
 +<code R>
 +summary(ts)
 +plot(density(ts))
 +quantile(ts,​ prob=c(0.025,​ 0.975))
 +</​code> ​
 +
 +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>​
 +
 +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>​
 +
 +=== 07/05/2008 ===
 +
 +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>​$X(a+b)^n = \sum_{k=0}^n \frac{n!}{k!(n-k)!} a^k b^{n-k}</​latex>​
 +
 +Escreva os comandos do Latex para montar a seguinte tabela:
 +
 +<​latex>​
 +\begin{tabular}{ccc}
 +\hline
 +           &​masculino & feminino \\
 +Não fumac  &​45 ​       & 16       \\
 +Fuma pouco &​28 ​       & 22       \\
 +\hline
 +\end{tabular}
 +</​latex>​
 +
 +<​latex>​
 +\begin{tabular}{|l|cc|}
 +\hline\hline
 +           &​masculino & feminino \\
 +Não fuma   &​45 ​       & 16       \\
 +Fuma pouco &​28 ​       & 22       \\
 +\hline
 +\end{tabular}
 +</​latex>​
 +
 +
  

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