Sessão 1: familiarizando-se com o R

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.

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)