Este tutorial é baseado nos exemplos do livro An Introduction to
Statistical Learning, de Gareth James, Daniela Witten, Trevor
Hastie e Rob Tibshirani (https://www.statlearning.com/). Nele, vamos introduzir
alguns comandos simples do R, afinal, a melhor maneira de
aprender uma nova linguagem de programação é testando seus comandos.
O R pode ser baixado em http://cran.r-project.org/. Recomendamos que você
execute o R dentro de um Ambiente de Desenvolvimento
Integrado (IDE, em inglês), como o RStudio, que
pode ser baixado gratuitamente em http://rstudio.com. O site do RStudio
também oferece uma versão em nuvem do R, que não requer a
instalação de nenhum software.
O R utiliza funções para realizar operações.
Para executar uma função chamada funcname, digitamos
funcname(input1, input2), onde os inputs (ou
argumentos) input1 e input2 indicam
ao R como executar a função. Uma função pode ter qualquer
número de argumentos.
Por exemplo, para criar um vetor de números, usamos a função
c() (de concatenar). Quaisquer números dentro dos
parênteses serão unidos. O comando a seguir instrui o R a
juntar os números 1, 3, 2 e 5, e a salvá-los como um vetor
chamado x. Quando digitamos x, ele nos devolve
o vetor:
x <- c(1, 3, 2, 5)
x
[1] 1 3 2 5
Observe que o > não faz parte do comando; ele é
impresso pelo R para indicar que está pronto para receber
outro comando. Também podemos salvar objetos usando = em
vez de <-:
x = c(1, 6, 2)
x
[1] 1 6 2
y = c(1, 4, 3)
Pressionar a tecla de seta para cima várias vezes exibirá os
comandos anteriores, que podem então ser editados. Isso é útil, já que
frequentemente desejamos repetir um comando semelhante. Além disso,
digitar ?funcname sempre fará com que o R abra
uma nova janela de ajuda com informações adicionais sobre a função
funcname().
Podemos instruir o R a somar dois conjuntos de números.
Ele então somará o primeiro número de x com o primeiro
número de y, e assim por diante. No entanto, x
e y devem ter o mesmo comprimento. Podemos verificar o
comprimento deles usando a função length():
length(x)
[1] 3
length(y)
[1] 3
x + y
[1] 2 10 5
A função ls() permite visualizar uma lista de todos os
objetos, como dados e funções, que salvamos até o momento. A função
rm() pode ser usada para deletar qualquer um desses objetos
que não desejamos mais manter:
ls()
[1] "x" "y"
rm(x, y)
ls()
character(0)
Também é possível remover todos os objetos de uma só vez:
rm(list = ls())
A função matrix() pode ser usada para criar uma matriz
de números. Antes de usarmos a função matrix(), podemos
aprender mais sobre ela utilizando ?matrix:
?matrix
starting httpd help server ... done
O arquivo de ajuda revela que a função matrix() recebe
vários parâmetros, mas por enquanto focaremos nos três primeiros: os
dados (as entradas na matriz), o número de linhas e o número de colunas.
Primeiro, criamos uma matriz simples:
x <- matrix(data = c(1, 2, 3, 4), nrow = 2, ncol = 2)
x
[,1] [,2]
[1,] 1 3
[2,] 2 4
Observe que poderíamos muito bem omitir a digitação de
data=, nrow= e ncol= no comando
matrix() acima: ou seja, poderíamos simplesmente
digitar:
x <- matrix(c(1, 2, 3, 4), 2, 2)
…e isso teria o mesmo efeito. No entanto, pode ser útil especificar
os nomes dos argumentos passados, já que, caso contrário, o
R assumirá que os argumentos da função são passados para a
função na mesma ordem que está descrita no arquivo de ajuda da função.
Como este exemplo ilustra, por padrão, o R cria matrizes
preenchendo as colunas sucessivamente. Alternativamente, a opção
byrow = TRUE pode ser usada para preencher a matriz na
ordem das linhas:
matrix(c(1, 2, 3, 4), 2, 2, byrow = TRUE)
[,1] [,2]
[1,] 1 2
[2,] 3 4
Observe que no comando acima não atribuímos a matriz a um valor, como
x. Nesse caso, a matriz é impressa na tela, mas não é salva
para cálculos futuros.
A função sqrt() retorna a raiz quadrada de cada elemento
de um vetor ou matriz. O comando x^2 eleva cada elemento de
x à potência de 2; quaisquer potências são
possíveis, incluindo potências fracionárias ou negativas.
sqrt(x)
[,1] [,2]
[1,] 1.000000 1.732051
[2,] 1.414214 2.000000
x^2
[,1] [,2]
[1,] 1 9
[2,] 4 16
A função rnorm() gera um vetor de variáveis normais
aleatórias, com o primeiro argumento n representando o
tamanho da amostra. Cada vez que chamamos essa função, obtemos uma
resposta diferente. Aqui, criamos dois conjuntos de números
correlacionados, x e y, e usamos a função
cor() para calcular a correlação entre eles:
x <- rnorm(50)
y <- x + rnorm(50, mean = 50, sd = 0.1)
cor(x, y)
[1] 0.9938037
Por padrão, o rnorm() cria variáveis aleatórias normais
padrão com média igual a \(0\) e desvio
padrão igual a \(1\). No entanto, a
média e o desvio padrão podem ser alterados utilizando os argumentos
mean e sd, como ilustrado acima. Às vezes,
queremos que nosso script reproduza o mesmo conjunto exato de
números aleatórios; para isso, podemos usar a função
set.seed(). A função set.seed() recebe um
argumento inteiro (arbitrário):
set.seed(1234)
rnorm(50)
[1] -1.20706575 0.27742924 1.08444118 -2.34569770 0.42912469 0.50605589
[7] -0.57473996 -0.54663186 -0.56445200 -0.89003783 -0.47719270 -0.99838644
[13] -0.77625389 0.06445882 0.95949406 -0.11028549 -0.51100951 -0.91119542
[19] -0.83717168 2.41583518 0.13408822 -0.49068590 -0.44054787 0.45958944
[25] -0.69372025 -1.44820491 0.57475572 -1.02365572 -0.01513830 -0.93594860
[31] 1.10229755 -0.47559308 -0.70944004 -0.50125806 -1.62909347 -1.16761926
[37] -2.18003965 -1.34099319 -0.29429386 -0.46589754 1.44949627 -1.06864272
[43] -0.85536463 -0.28062300 -0.99434008 -0.96851432 -1.10731819 -1.25198589
[49] -0.52382812 -0.49684996
Usaremos o set.seed() ao longo dos tutoriais sempre que
realizarmos cálculos envolvendo quantidades aleatórias. Em geral, isso
deve permitir que qualquer usuário reproduza os mesmos resultados dos
tutoriais. No entanto, à medida que novas versões do R (e
seus pacotes) se tornam disponíveis, pequenas discrepâncias podem
ocorrer.
As funções mean() e var() podem ser usadas
para calcular a média e a variância de um vetor de números. Aplicar
sqrt() à saída de var() fornecerá o desvio
padrão. Ou podemos simplesmente usar a função sd():
set.seed(3)
y <- rnorm(100)
mean(y)
[1] 0.01103557
var(y)
[1] 0.7328675
sqrt(var(y))
[1] 0.8560768
sd(y)
[1] 0.8560768
A função plot() é a forma básica de plotar dados no
R. Por exemplo, plot(x, y) gera um gráfico de
dispersão dos números em x contra os números em
y. Existem muitas opções adicionais que podem ser passadas
para a função plot(). Por exemplo, passar o argumento
xlab resultará em um rótulo no eixo \(x\). (Para obter mais informações sobre a
função plot(), digite ?plot.)
x <- rnorm(100)
y <- rnorm(100)
plot(x, y)
plot(x, y, xlab = "this is the x-axis",
ylab = "this is the y-axis",
main = "Plot of X vs Y")
Frequentemente, iremos querer salvar a saída de um gráfico no
R. O comando que usamos para fazer isso dependerá do tipo
de arquivo que gostaríamos de criar. Por exemplo, para criar um arquivo
PDF, usamos a função pdf(), e para criar um JPEG, usamos a
função jpeg():
pdf("Figure.pdf")
plot(x, y, col = "green")
dev.off()
png
2
A função dev.off() indica para o R que
terminamos de criar o gráfico. Alternativamente, podemos simplesmente
copiar a janela do gráfico e colá-la em um tipo de arquivo apropriado,
como um documento do Word (porém as vezes isso pode comprometer a
qualidade/resolução final da figura).
A função seq() pode ser usada para criar uma sequência
de números. Por exemplo, seq(a, b) cria um vetor de números
inteiros entre a e b. No entanto, existem
muitas outras opções, por exemplo: seq(0, 1, length = 10),
cria uma sequência de 10 números igualmente espaçados entre
0 e 1; digitar 3:11 é uma forma
abreviada de seq(3, 11) para argumentos inteiros; etc…
x <- seq(1, 10)
x
[1] 1 2 3 4 5 6 7 8 9 10
x <- 1:10
x
[1] 1 2 3 4 5 6 7 8 9 10
x <- seq(-pi, pi, length = 50)
Agora criaremos alguns gráficos mais sofisticados. A função
contour() gera um gráfico de contorno para
representar dados tridimensionais (como um mapa topográfico). Ela recebe
três argumentos:
x (a primeira dimensão),y (a segunda dimensão), ez
(a terceira dimensão) para cada par de coordenadas (x,
y).Assim como na função plot(), existem muitos outros
parâmetros que podem ser usados para ajustar o resultado da função
contour(). (Para saber mais sobre esses parâmetros,
consulte o arquivo de ajuda digitando ?contour.)
y <- x
f <- outer(x, y, function(x, y) cos(y) / (1 + x^2))
contour(x, y, f)
contour(x, y, f, nlevels = 45, add = T)
fa <- (f - t(f)) / 2
contour(x, y, fa, nlevels = 15)
A função image() funciona da mesma forma que a
contour(), exceto que ela gera um gráfico codificado por
cores, cujas cores dependem do valor de z. Isso é conhecido
como heatmap (mapa de calor). Alternativamente, a função
persp() pode ser usada para gerar um gráfico
tridimensional. Os argumentos theta e phi
controlam os ângulos de visualização do gráfico:
image(x, y, fa)
persp(x, y, fa)
persp(x, y, fa, theta = 30)
persp(x, y, fa, theta = 30, phi = 20)
persp(x, y, fa, theta = 30, phi = 70)
persp(x, y, fa, theta = 30, phi = 40)
Frequentemente desejamos examinar uma parte de um conjunto de dados.
Suponha que nossos dados estejam armazenados na matriz
A:
A <- matrix(1:16, 4, 4)
A
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
Digitar:
A[2, 3]
[1] 10
…irá selecionar o elemento correspondente à segunda linha e à
terceira coluna. O primeiro número após o símbolo de colchete
[ sempre se refere à linha, e o segundo número sempre se
refere à coluna. Também podemos selecionar várias linhas e colunas ao
mesmo tempo, fornecendo vetores como índices:
A[c(1, 3), c(2, 4)]
[,1] [,2]
[1,] 5 13
[2,] 7 15
A[1:3, 2:4]
[,1] [,2] [,3]
[1,] 5 9 13
[2,] 6 10 14
[3,] 7 11 15
A[1:2, ]
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
A[, 1:2]
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
Os dois últimos exemplos incluem nenhum índice para as
colunas ou nenhum índice para as linhas. Isso indica que o
R deve incluir todas as colunas ou todas
as linhas, respectivamente. O R trata uma única linha ou
coluna de uma matriz como um vetor:
A[1, ]
[1] 1 5 9 13
O uso de um sinal negativo - no índice indica ao
R para manter todas as linhas ou colunas, exceto aquelas
indicadas no índice:
A[-c(1, 3), ]
[,1] [,2] [,3] [,4]
[1,] 2 6 10 14
[2,] 4 8 12 16
A[-c(1, 3), -c(1, 3, 4)]
[1] 6 8
A função dim() retorna o número de linhas seguido pelo
número de colunas de uma matriz dada:
dim(A)
[1] 4 4
Para a maioria das análises, o primeiro passo envolve importar um
conjunto de dados para o R. Antes de tentar carregar um
conjunto de dados, devemos garantir que o R saiba procurar
os dados no diretório correto (Working Directory). Você pode
fazer isso manualmente no RStudio clicando em: “Session
-> Set Working Directory -> Choose Directory”
A função read.table() é uma das principais maneiras de
fazer isso (bem como a função read.csv). O arquivo de ajuda
?read.table() contém detalhes sobre como usar essa função.
Podemos usar a função write.table() para exportar dados
(bem como a função write.csv()).
Começamos carregando o conjunto de dados Auto usando
função read.table(). Esses dados fazem parte da biblioteca
(ou pacote) ISLR2, e podem ser carregados diretamente
acessando o link https://www.statlearning.com/s/Auto.data.
O comando a seguir carregará o arquivo chamado Auto.data no
R e o armazenará como um objeto chamado Auto,
em um formato denominado data frame. Depois que os dados forem
carregados, a função View() pode ser usada para
visualizá-los em uma janela semelhante a uma planilha. (Essa função pode
ser um pouco temperamental; se você tiver dificuldades para usá-la,
tente a função head().) A função head() também
pode ser usada para visualizar as primeiras linhas dos dados (remova o
# antes de rodar o script abaixo ou o
R interpretará a linha com View(Auto) como
comentário e ela será ignorada):
Auto <- read.table("https://www.statlearning.com/s/Auto.data")
# View(Auto)
head(Auto)
V1 V2 V3 V4 V5 V6 V7 V8
1 mpg cylinders displacement horsepower weight acceleration year origin
2 18.0 8 307.0 130.0 3504. 12.0 70 1
3 15.0 8 350.0 165.0 3693. 11.5 70 1
4 18.0 8 318.0 150.0 3436. 11.0 70 1
5 16.0 8 304.0 150.0 3433. 12.0 70 1
6 17.0 8 302.0 140.0 3449. 10.5 70 1
V9
1 name
2 chevrolet chevelle malibu
3 buick skylark 320
4 plymouth satellite
5 amc rebel sst
6 ford torino
Observe que o arquivo Auto.data é simplesmente um
arquivo de texto, que você poderia abrir alternativamente em seu
computador usando um editor de texto padrão. Muitas vezes, é uma boa
ideia visualizar um conjunto de dados usando um editor de texto ou outro
software, como o Excel, antes de carregá-lo no R.
Nesse caso, nosso conjunto de dados foi carregado corretamente, mas o
R poderia ter assumido que os nomes das variáveis fazem
parte dos dados e tê-los incluído na primeira linha do nosso data
frame Auto. Nesses casos, usar a opção
header = T (ou header = TRUE) na função
read.table() informa ao R que a primeira linha
do arquivo contém os nomes das variáveis, e o problema seria corrigido.
De forma semelhante, o argumento stringsAsFactors = T
informa ao R que qualquer variável que contenha caracteres
deve ser interpretada como uma variável qualitativa. A função
str() apresenta uma visão geral do nosso data
frame e suas variáveis:
Auto <- read.table("https://www.statlearning.com/s/Auto.data", header = T, stringsAsFactors = T)
str(Auto)
'data.frame': 397 obs. of 9 variables:
$ mpg : num 18 15 18 16 17 15 14 14 14 15 ...
$ cylinders : int 8 8 8 8 8 8 8 8 8 8 ...
$ displacement: num 307 350 318 304 302 429 454 440 455 390 ...
$ horsepower : Factor w/ 94 levels "?","100.0","102.0",..: 17 35 29 29 24 42 47 46 48 40 ...
$ weight : num 3504 3693 3436 3433 3449 ...
$ acceleration: num 12 11.5 11 12 10.5 10 9 8.5 10 8.5 ...
$ year : int 70 70 70 70 70 70 70 70 70 70 ...
$ origin : int 1 1 1 1 1 1 1 1 1 1 ...
$ name : Factor w/ 304 levels "amc ambassador brougham",..: 49 36 231 14 161 141 54 223 241 2 ...
De forma mais concisa, a função dim() nos informa que os
dados Auto têm 397 observações, ou linhas, e nove variáveis
(ou colunas). Existem várias maneiras de lidar com dados ausentes. Neste
caso, apenas cinco das linhas contêm observações ausentes, e por isso
escolhemos usar a função na.omit() para simplesmente
remover essas linhas:
Auto <- na.omit(Auto)
dim(Auto)
[1] 397 9
Uma vez que os dados são carregados corretamente, podemos usar a
função names() para verificar os nomes das variáveis:
names(Auto)
[1] "mpg" "cylinders" "displacement" "horsepower" "weight"
[6] "acceleration" "year" "origin" "name"
Podemos usar a função plot() para produzir gráficos
de dispersão das variáveis quantitativas. No entanto, simplesmente
digitar os nomes das variáveis gerará uma mensagem de erro, porque o
R não sabe que deve procurar essas variáveis no conjunto de
dados Auto:
plot(cylinders, mpg)
Error: object 'cylinders' not found
Para se referir a uma variável em um data frame, devemos
digitar o nome do conjunto de dados seguido pelo nome da variável,
unidos pelo símbolo $. Alternativamente, podemos usar a
função attach() para dizer ao R para tornar as
variáveis desse conjunto de dados disponíveis pelo nome (remova os
# antes de rodar o script abaixo ou o
R interpretará as linhas como comentários e elas
serão ignoradas). Importante: use a função
detach() quando terminar de análisar o conjunto de dados
associados à função attach().
plot(Auto$cylinders, Auto$mpg)
# attach(Auto)
# plot(cylinders, mpg)
# detach(Auto)
A variável cylinders é armazenada como um vetor
numérico, então o R a tratou como quantitativa. No
entanto, como há apenas um pequeno número de valores possíveis para
cylinders, pode-se preferir tratá-la como uma variável
qualitativa… A função as.factor() converte
variáveis quantitativas em variáveis qualitativas:
Auto$cylinders <- as.factor(Auto$cylinders)
Se a variável plotada no eixo \(x\)
for qualitativa, então boxplots serão automaticamente
produzidos pela função plot(). Como de costume, uma série
de opções pode ser especificada para personalizar os gráficos:
plot(Auto$cylinders, Auto$mpg)
plot(Auto$cylinders, Auto$mpg, col = "red")
plot(Auto$cylinders, Auto$mpg, col = "red", varwidth = T)
plot(Auto$cylinders, Auto$mpg, col = "red", varwidth = T,
horizontal = T)
plot(Auto$cylinders, Auto$mpg, col = "red", varwidth = T,
xlab = "cylinders", ylab = "MPG")
A função hist() pode ser usada para plotar um
histograma. Note que col = 2 tem o mesmo efeito
que col = "red":
hist(Auto$mpg)
hist(Auto$mpg, col = 2)
hist(Auto$mpg, col = 2, breaks = 15)
A função pairs() cria uma matriz de dispersão,
ou seja, um gráfico de dispersão para cada par de variáveis. Também
podemos produzir gráficos de dispersão para apenas um subconjunto das
variáveis:
pairs(Auto)
pairs(
~ mpg + displacement + horsepower + weight + acceleration,
data = Auto
)
Em conjunto com a função plot(), a função
identify() oferece um método interativo útil para
identificar o valor de uma variável específica para pontos em um
gráfico. Passamos três argumentos para a função identify():
a variável do eixo \(x\); a variável do
eixo \(y\); e a variável cujos valores
gostaríamos de ver impressos para cada ponto. Ao clicar em um ou mais
pontos no gráfico e pressionar a tecla Esc, o R
imprimirá os valores da variável de interesse. Os números impressos sob
a função identify() correspondem às linhas para os pontos
selecionados:
plot(Auto$horsepower, Auto$mpg)
identify(Auto$horsepower, Auto$mpg, Auto$name)
integer(0)
A função summary() produz um resumo numérico de cada
variável em um conjunto de dados específico:
summary(Auto)
mpg cylinders displacement horsepower weight
Min. : 9.00 3: 4 Min. : 68.0 150.0 : 22 Min. :1613
1st Qu.:17.50 4:203 1st Qu.:104.0 90.00 : 20 1st Qu.:2223
Median :23.00 5: 3 Median :146.0 88.00 : 19 Median :2800
Mean :23.52 6: 84 Mean :193.5 110.0 : 18 Mean :2970
3rd Qu.:29.00 8:103 3rd Qu.:262.0 100.0 : 17 3rd Qu.:3609
Max. :46.60 Max. :455.0 75.00 : 14 Max. :5140
(Other):287
acceleration year origin name
Min. : 8.00 Min. :70.00 Min. :1.000 ford pinto : 6
1st Qu.:13.80 1st Qu.:73.00 1st Qu.:1.000 amc matador : 5
Median :15.50 Median :76.00 Median :1.000 ford maverick : 5
Mean :15.56 Mean :75.99 Mean :1.574 toyota corolla: 5
3rd Qu.:17.10 3rd Qu.:79.00 3rd Qu.:2.000 amc gremlin : 4
Max. :24.80 Max. :82.00 Max. :3.000 amc hornet : 4
(Other) :368
Para variáveis qualitativas, como name, o R
listará o número de observações que pertencem a cada categoria. Também
podemos produzir um resumo de uma única variável:
summary(Auto$mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
9.00 17.50 23.00 23.52 29.00 46.60
Uma vez que terminamos de usar o R, digitamos
q() para fechá-lo ou sair. Ao sair do R, temos
a opção de salvar o workspace atual para que todos os objetos
(como conjuntos de dados) que criamos nesta sessão do R
fiquem disponíveis da próxima vez.
Antes de sair do R, podemos querer salvar um registro de
todos os comandos que digitamos na sessão mais recente; isso pode ser
feito utilizando a função savehistory(). Da próxima vez que
entrarmos no R, podemos carregar esse histórico usando a
função loadhistory(), se desejarmos.
Este exercício refere-se a um conjunto de dados sobre universidades
americanas chamado College.csv (ele pode ser baixado do site
https://www.statlearning.com/resources-second-edition na
seção Data Sets). Ele contém uma série de variáveis de
777 universidades e faculdades diferentes. As variáveis são:
Private: Indicador pública/privadaApps: Número de inscrições de alunos recebidasAccept: Número de alunos aceitosEnroll: Número de novos alunos matriculadosTop10perc: Novos alunos que ficaram entre os top 10%
melhores em suas classes durante o ensino médioTop25perc: Novos alunos que ficaram entre os top 25%
melhores em suas classes durante o ensino médioF.Undergrad: Número de alunos de graduação matriculados
em tempo integralP.Undergrad: Número de alunos de graduação matriculados
em meio períodoOutstate: Mensalidades de alunos de outros
estadosRoom.Board: Custos de hospedagem e alimentaçãoBooks: Custos estimados de livrosPersonal: Gastos pessoais estimadosPhD: Porcentagem de professores com Ph.D.Terminal: Porcentagem de professores com o nível mais
alto de qualificação em suas áreas de atuaçãoS.F.Ratio: Relação aluno/professorperc.alumni: Porcentagem de ex-alunos que doam dinheiro
à universidadeExpend: Gasto da universidade na educação de cada
alunoGrad.Rate: Taxa de graduação(a) Use a função read.csv() para ler os
dados no R. Certifique-se de que o diretório esteja
definido para o local correto onde o arquivo College.csv está
salvo. Associe os dados a um objeto (data frame) chamado
college.
(b) Examine os dados usando a função
View(). Você deve notar que a primeira coluna é apenas o
nome de cada universidade. Vamos assumir que não queremos que o
R trate esses nomes como “dados”, mas pode ser útil ter
esses nomes salvos para mais tarde… Tente os seguintes comandos (remova
os # antes de rodar o script abaixo ou o
R interpretará as linhas como comentários e elas
serão ignoradas):
# rownames(college) <- college[, 1]
# View(college)
Você deve ver que agora há uma coluna com o nome de cada
universidade. Isso significa que R deu a cada linha um nome
correspondente à cada universidade (note que esta não é uma coluna de
dados). No entanto, ainda precisamos eliminar a primeira coluna do
data frame onde os nomes estão armazenados:
# college <- college[, -1]
# View(college)
(c) Agora você deve ver que a primeira coluna de
dados é Private.
Use a função pairs() para produzir uma matriz de
gráfico de dispersão das primeiras dez colunas ou variáveis dos dados.
Lembre-se de que você pode fazer referência às dez primeiras colunas de
uma matriz A usando A[ ,1:10].
Use a função plot() para produzir boxplots
lado a lado de Outstate vs. Private.
Crie uma nova variável qualitativa chamada Elite
compartimentando a variável Top10perc. Vamos dividir as
universidades em dois grupos, com base na proporção
Top10perc exceder 50% (remova # do
script abaixo):
# Elite <- rep("No", nrow(college))
# Elite[college$Top10perc > 50] <- "Yes"
# Elite <- as.factor(Elite)
# college <- data.frame(college , Elite)
Existe uma forma mais fácil de compartimentar os dados utilizando a
função ifelse(). Pesquise como essa função funciona e
escreva um script em R utilizando-a para (re)criar
a variável Elite (você pode chamá-la de Elite2
se preferir, para poder compará-la com a original).
Use a função summary() para ver quantas
universidades de elite existem. Agora use a função plot()
para produzir boxplots lado a lado de Outstate
vs. Elite.
Use a função hist() para produzir alguns histogramas
com diferentes intervalos para algumas das variáveis quantitativas. Você
pode achar útil o comando par(mfrow = c(2, 2)): ele
dividirá a janela de plotagem em quatro regiões para que quatro gráficos
possam ser plotados simultaneamente. (Modificar os argumentos dessa
função dividirá a tela de outras maneiras.)
Continue explorando os dados: crie ao menos mais uma nova variável (que faça sentido) e um gráfico em que ela esteja presente.
Este exercício envolve o conjunto de dados Auto
(Auto.data) utilizado neste tutorial. Certifique-se de que
os valores ausentes foram removidos dos dados.
(a) Quais das variáveis são quantitativas e quais são qualitativas?
(b) Qual é o intervalo de cada variável
quantitativa? Você pode responder a isso usando a função
range().
(c) Qual é a média e o desvio padrão de cada variável quantitativa?
(d) Agora remova as observações entre as linhas 10 e 85. Escolha uma das variáveis quantitativas: qual é o intervalo, a média e o desvio padrão dessa variável baseando-se no subconjunto dos dados que permanecem?
(e) Usando o conjunto de dados completo, investigue as variáveis graficamente, usando gráficos de dispersão ou outras ferramentas de sua escolha. Crie alguns gráficos destacando as relações entre os variáveis.
(f) Suponha que desejamos prever o consumo de
combustível (mpg) com base em outras variáveis. Seus
gráficos sugerem que alguma variável pode ser particularmente útil para
prever mpg?
Este exercício envolve o conjunto de dados de habitação da cidade de
Boston que faz parte da biblioteca ISLR2 (você terá que
instalar essa biblioteca para poder acessá-lo). Para começar, carregue o
conjunto de dados (remova # do script abaixo):
library(ISLR2)
Attaching package: 'ISLR2'
The following object is masked _by_ '.GlobalEnv':
Auto
# Boston
Leia sobre esse conjunto de dados utilizando o comando
?Boston e responda as questões abaixo:
(a) Quantas linhas existem neste conjunto de dados? Quantas colunas? O que as linhas e colunas representam?
(b) Faça alguns gráficos de dispersão em pares dos preditores (variáveis) neste conjunto de dados.
(c) Algum dos preditores está associado/correlacionado à taxa de criminalidade per capita?
(d) Algum dos setores censitários de Boston parece ter taxas de criminalidade particularmente altas? Taxas de imposto altas? Proporção aluno-professor alta? Verifique os intervalos de valores de cada preditor.
(e) Quantos dos setores censitários neste conjunto de dados fazem fronteira com o rio Charles?
(f) Qual é a proporção média aluno-professor entre as cidades neste conjunto de dados?
(g) Qual setores censitários de Boston tem o menor valor médio de casas ocupadas pelo proprietário? Quais são os valores dos outros preditores para esses setores censitários e como esses valores se comparam aos intervalos de valores desses preditores?
(h) Nesse conjunto de dados, quantos setores censitários têm em média mais de sete cômodos por residência? E mais de oito cômodos?
Este é fim do nosso tutorial de introdução ao R. Se você
quiser saber mais, leia o livro Hands-On Programming with R,
disponível em https://rstudio-education.github.io/hopr/index.html