====== Exemplo 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.
x <- rnorm(5)
x
print(x)
print(x, dig=3)
y <- rnorm(x)
y
args(rnorm)
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
plot(x,y)
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.
args(plot.default)
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''.
x <- sort(x)
y <- y[order(x)]
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.
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))
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.
x
x[1]
x[3]
x[2:4]
round(x, dig=1)
ceiling(x)
floor(x)
trunc(x)
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.
ls()
rm(x, y)
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.
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)
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.
fm <- lm(y ~ x, data=dummy)
summary(fm)
fm1 <- lm(y ~ x, data=dummy, weight=1/w^2)
summary(fm1)
Gráficos de resíduos são produzidos com ''plot()''.
Como a função produz 4 gráficos dividiremos a tela gráfica,
par(mfrow=c(2,2))
plot(fm)
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
par(mfrow=c(1,1))
Tornando visíveis as colunas do data-frame.
search()
attach(dummy)
search()
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.
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))
Ao final destas análises removemos o objeto ''dummy'' do caminho de procura.
detach()
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).
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")
E ao final retornamos ao gráfico padrão e "limpamos" novamente o //workspace//, ou seja, apagando objetos.
par(mfrow=c(1,1))
rm(fm, fm1, lrf, dummy)