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

cursos:rlavras:sessao1 [2008/10/28 12:30]
cursos:rlavras:sessao1 [2008/10/28 12:30] (atual)
Linha 1: Linha 1:
 +====== Sessão 1: familiarizando-se com o R ======
 +
 +Esta é uma primeira sessão com o **R** visando dar aos participantes uma idéia geral da aparência e forma de operação do programa.\\
 +Os comandos abaixo motivam explicações sobre características básicas de linguagem e serão reproduzidos,​ comentados e discutidos com os participantes durante o curso.
 +
 +Vamos começar ​ gerando dois vetores ''​x''​ e ''​y'' ​ de coordenadas geradas a partir de números ​ pseudo-aleatórios ​
 +e depois inspecionar os valores gerados.
 +<​codeR>​
 +x <- rnorm(5)
 +x
 +print(x)
 +print(x, dig=3)
 +y <- rnorm(x)
 +y
 +args(rnorm)
 +</​code>​
 +No exemplo acima primeiro geramos um vetor ''​x''​ com 5 elementos.
 +Note que ao fazermos ''​y <- rnorm(x)'' ​ não especificamos o tamanho da amostra explicitamente como anteriormente mas estamos definindo um vetor ''​y''​ que tem o mesmo tamanho de ''​x'', ​ por isto ''​y''​ foi gerado com também 5 elementos.
 +Note que se voce tentar reproduzir este exemplo deve obter valores simulados diferentes dos mostrados aqui.
 +
 +Ao digitar o nome do objeto ''​x''​ os elementos deste objetos são 
 +exibidos. O comando ''​print(x)''​ também exibe os elementos do 
 +objeto porém é mais flexível pois oferece opções extras de visualização.
 +O comando ''​print(x,​ dig=3)''​ exibe este particular objeto ''​x''​
 +com no mínimo 3 dígitos significativos.
 +Para controlar o número de dígitos globalmente,​ isto é, 
 +para impressão de qualquer objeto, por exemplo com 4 dígitos, ​
 +usamos ''​options(digits=4)''​.
 +
 +Neste simples exemplo introduzimos várias idéias e conceitos:​\\ ​
 +//objeto//, //​atribuição de valores//, //​vetores//,​ //​impressão de objetos//, ​ //​função//,​ //​argumentos de funções//,​ //"​defaults"//, ​ //geração de números aleatórios//​ e //controle de semente//​.  ​
 +
 +Agora vamos colocar num gráfico os pontos gerado usando o comando
 +<code R>
 +plot(x,y)
 +</​code>​
 +Note que a janela gráfica se abrirá automaticamente e exibirá o gráfico.\\
 +Há muitas opções de controle e configuração da janela gráfica que são especidicadas usando-se a função ''​par()''​. ​
 +Algumas destas opções serão vistas ao longo deste material.
 +
 +A função ''​plot()''​ oferece através de seus argumentos várias opções para visualização dos gráficos.\\
 +As argumentos e básicos são mostrados a seguir.
 +<code R>
 +args(plot.default)
 +</​code>​
 +Para ilustração,​ no exemplo a seguir mostramos o uso do argumento ''​type''​.\\
 +Para facilitar esta ilustração vamos primeiro ordenar os valores de ''​x''​ e ''​y''​ na sequência crescente dos valores de ''​x''​.
 +<code R>
 +x <- sort(x)
 +y <- y[order(x)]
 +</​code>​
 +Nos comandos abaixo iniciamos dividindo a janela gráfica em oito partes e reduzindo as margens do gráfico.\\
 +A seguir produzimos diversos gráficos com diferentes opções para o argumento ''​type''​.\\
 +Ao final retornamos a configuração original de apenas um gráfico na janela gráfica. ​
 +<code R>
 +par(mfrow=c(4,​2),​ mar=c(2,​2,​0.3,​ 0.3), mgp=c(1.5, 0.6, 0))
 +plot(x, y, type="​l"​)
 +plot(x, y, type="​p"​)
 +plot(x, y, type="​o"​)
 +plot(x, y, type="​b"​)
 +plot(x, y, type="​h"​)
 +plot(x, y, type="​S"​)
 +plot(x, y, type="​s"​)
 +plot(x, y, type="​n"​)
 +par(mfrow=c(1,​1))
 +</​code> ​
 +
 +Um pouco mais sobre manipulação de vetores. \\
 +Note que os colchetes ''​[]''​ são usados para selecionar elementos e há funções para arredondar valores.
 +<code R>
 +x
 +x[1]
 +x[3]
 +x[2:4]
 +round(x, dig=1)
 +ceiling(x)
 +floor(x)
 +trunc(x)
 +</​code>​
 +
 +Os objetos existentes na área de trabalho pode ser listados usando a função ''​ls()''​ e objetos podem ser removidos
 +com a função ''​rm()''​. Nos comandos a seguir estamos verificando os objetos existentes na área de trabalho e
 +removendo objetos que julgamos não mais necessários.
 +<code R>
 +ls()
 +rm(x, y)
 +</​code>​
 +
 +A seguir vamos criar um vetor que chamaremos de ''​x'' ​ com uma sequência de números de 1 a 20.
 +Depois criamos um vetor ''​w''​ de pesos com os desvios padrões de cada observação.
 +Na sequência montamos um //​data-frame//​ de 3 colunas com variáveis que chamamos de  ''​x'',​ ''​y'' ​ e  ''​w''​. ​
 +Inspecionando o conteúdo do objeto criado digitando o seu nome.
 +A terminamos apagando objetos que não são mais necessários.
 +<code R>
 +x <- 1:20
 +x
 +w <- 1 + sqrt(x)/2
 +w
 +
 +dummy <- data.frame(x=x,​ y= x + rnorm(x)*w, w=w)
 +dummy
 +rm(x,w)
 +</​code>​
 +
 +Nos comandos a seguir estamos ajustando uma regressão linear simples de ''​y''​ em ''​x''​ e examinando os resultados.
 +Na sequência, uma vez que temos valores dos pesos, podemos fazer uma regressão ponderada e comparar os resultados.
 +<code R>
 +fm <- lm(y ~ x, data=dummy)
 +summary(fm)
 +fm1 <- lm(y ~ x, data=dummy, weight=1/​w^2)
 +summary(fm1)
 +</​code>​
 +
 +Gráficos de resíduos são produzidos com ''​plot()''​.
 +Como a função produz 4 gráficos dividiremos a tela gráfica,
 +<code R>
 +par(mfrow=c(2,​2))
 +plot(fm)
 +</​code> ​
 +
 +Note que o comando acima ''​par(mfrow=c(2,​2))''​
 +dividiu a janela gráfica em 4 partes para acomodar os 4 gráficos.
 +Para restaurar a configuração original usamos
 +<code R>
 +par(mfrow=c(1,​1))
 +</​code>​
 +
 +Tornando visíveis as colunas do data-frame.
 +<code R>
 +search()
 +attach(dummy)
 +search()
 +</​code>​
 +
 +Fazendo uma regressão local não-paramétrica,​ e visualizando o resultado. ​
 +Depois adicionamos a linha de regressão verdadeira (intercepto = 0 e inclinação = 1), a linha da regressão sem ponderação e a linha de regressão ponderada.
 +<code R>
 +lrf <- lowess(x, y)
 +plot(x, y)
 +lines(lrf, lty=3)
 +abline(coef(fm))
 +abline(coef(fm1),​ lty=2)
 +abline(0, 1, lwd=2)
 +legend(1,​20,​ c("​linear simples","​ponderada","​loess","​verdadeira"​),​ lty=c(1,​2,​3,​1),​ lwd=c(1,​1,​1,​2))
 +</​code>​
 +Ao final destas análises removemos o objeto ''​dummy''​ do caminho de procura.
 +
 +<code R>
 +detach()
 +</​code>​
 +
 +Agora vamos fazer um gráfico diagnóstico padrão para checar ajuste e pressupostos:​ o gráfico de resíduos por valores preditos e
 +gráfico de escores normais para checar assimetria, curtose e outliers (não muito útil aqui).
 +<code R>
 +par(mfrow=c(1,​2))
 +plot(fitted(fm),​ resid(fm),
 +     ​xlab="​Fitted values",​ ylab="​Residuals",​
 +     ​main="​Residuals vs Fitted"​)
 +qqnorm(resid(fm),​ main="​Residuals Rankit Plot")
 +</​code>​
 +
 +E ao final retornamos ao gráfico ​ padrão e  "​limpamos"​ novamente o //​workspace//,​ ou seja, apagando objetos. ​
 +<code R>
 +par(mfrow=c(1,​1))
 +rm(fm, fm1, lrf, dummy)
 +</​code>​
  

QR Code
QR Code cursos:rlavras:sessao1 (generated for current page)