Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
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> | ||