O R é uma linguagem e um ambiente de programação focado em estatística, análise de dados e visualização gráfica. Criado por Ross Ihaka e Robert Gentleman na década de 1990, o R é gratuito e open source, mantido pela comunidade e distribuído principalmente através do CRAN (Comprehensive R Archive Network).
O R pode ser utilizado de forma direta no console ou, de modo mais produtivo, através do RStudio, um IDE (ambiente de desenvolvimento integrado) que organiza o fluxo de trabalho em quatro painéis:
O R organiza informação em objetos. Os mais comuns são:
c(1, 2, 3)matrix(1:6, nrow = 2)data.frame(nome = c("A","B"), idade = c(20,25))list(a = 1:3, b = c("x","y"))factor(c("M","F","M"))Exemplo:
x <- c(1, 2, 3, 4)
df <- data.frame(nome = c("Ana","Bruno"), idade = c(21, 25))
str(df)
'data.frame': 2 obs. of 2 variables:
$ nome : chr "Ana" "Bruno"
$ idade: num 21 25
O R inclui funções estatísticas de base (por ex.,
mean(), sd(), summary()). Para
expandir funcionalidades, usam‑se pacotes do CRAN.
# Instalação (apenas uma vez):
# install.packages("ggplot2")
# Carregamento (em cada sessão):
library(ggplot2)
Para ajuda: mean, help("lm") ou o separador
Help no RStudio.
O R cria gráficos base de forma simples:
set.seed(123)
amostra <- rnorm(200)
hist(amostra, main = "Histograma de uma amostra normal", xlab = "Valores")
Com ggplot2 (sintaxe declarativa):
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
geom_point() +
theme_minimal() +
labs(title = "Dispersão de sépalas no conjunto iris")
Boas práticas: usar R Markdown, versionamento (git),
scripts modulados, e definição de seed para
reprodutibilidade.
Vantagens: gratuito, extensível, vocacionado para
estatística, enorme ecossistema de pacotes, comunidade ativa.
Limitações: curva de aprendizagem inicial e necessidade
de gestão de dependências/pacotes e LaTeX para PDF.
Conclusão: O R integra programação, estatística e comunicação científica, sendo uma ferramenta central para análises rigorosas e reprodutíveis.
mtcarsNesta parte analisamos o conjunto
mtcars (32 automóveis; variáveis de
desempenho, consumo e caraterísticas do motor). O objetivo é descrever o
comportamento do consumo (mpg) e explorar relações com
outras variáveis, justificando os métodos utilizados.
data(mtcars)
# Converter variáveis binárias/inteiras relevantes para fator (interpretação categórica)
mtcars$am <- factor(mtcars$am, labels = c("Automática", "Manual"))
mtcars$vs <- factor(mtcars$vs, labels = c("V", "Em linha"))
mtcars$cyl <- factor(mtcars$cyl)
mtcars$gear <- factor(mtcars$gear)
mtcars$carb <- factor(mtcars$carb)
# Primeiras linhas
head(mtcars)
Descrição das variáveis principais:
| Variável | Descrição |
|---|---|
| mpg | Milhas por galão (eficiência de combustível) |
| cyl | Número de cilindros |
| disp | Cilindrada (pol³) |
| hp | Potência (hp) |
| drat | Relação do eixo traseiro |
| wt | Peso (1000 lbs) |
| qsec | Tempo de 1/4 de milha (s) |
| vs | Tipo de motor (V / Em linha) |
| am | Transmissão (Automática / Manual) |
| gear | Número de mudanças |
| carb | Nº de carburadores |
Apresentamos estatísticas de tendência central e dispersão para variáveis numéricas, e frequências para as categóricas.
num_vars <- c("mpg","disp","hp","drat","wt","qsec")
desc_num <- data.frame(variavel = num_vars,
media = sapply(mtcars[num_vars], mean),
mediana = sapply(mtcars[num_vars], median),
sd = sapply(mtcars[num_vars], sd),
min = sapply(mtcars[num_vars], min),
max = sapply(mtcars[num_vars], max))
knitr::kable(desc_num, digits = 2, caption = "Resumo descritivo das variáveis numéricas")
| variavel | media | mediana | sd | min | max | |
|---|---|---|---|---|---|---|
| mpg | mpg | 20.09 | 19.20 | 6.03 | 10.40 | 33.90 |
| disp | disp | 230.72 | 196.30 | 123.94 | 71.10 | 472.00 |
| hp | hp | 146.69 | 123.00 | 68.56 | 52.00 | 335.00 |
| drat | drat | 3.60 | 3.70 | 0.53 | 2.76 | 4.93 |
| wt | wt | 3.22 | 3.33 | 0.98 | 1.51 | 5.42 |
| qsec | qsec | 17.85 | 17.71 | 1.79 | 14.50 | 22.90 |
# Tabelas de frequência para categóricas
tab_cyl <- prop.table(table(mtcars$cyl))
tab_am <- prop.table(table(mtcars$am))
knitr::kable(as.data.frame(tab_cyl), col.names = c("cyl","Proporção"), digits = 2, caption = "Proporções por nº de cilindros")
| cyl | Proporção |
|---|---|
| 4 | 0.34 |
| 6 | 0.22 |
| 8 | 0.44 |
knitr::kable(as.data.frame(tab_am), col.names = c("Transmissão","Proporção"), digits = 2, caption = "Proporções por tipo de transmissão")
| Transmissão | Proporção |
|---|---|
| Automática | 0.59 |
| Manual | 0.41 |
hist(mtcars$mpg, main = "Distribuição do consumo (mpg)", xlab = "mpg")
boxplot(mtcars$mpg, horizontal = TRUE, main = "Boxplot do consumo (mpg)", xlab = "mpg")
Interpretação: a distribuição de mpg é
moderadamente assimétrica; o boxplot permite identificar possíveis
valores afastados.
plot(mtcars$wt, mtcars$mpg,
main = "Peso (wt) vs Consumo (mpg)",
xlab = "Peso (1000 lbs)", ylab = "mpg", pch = 19)
abline(lm(mpg ~ wt, data = mtcars), lwd = 2)
Observação: relação negativa —
veículos mais pesados tendem a apresentar menor mpg (menos
eficiente).
boxplot(mpg ~ am, data = mtcars,
main = "Consumo por tipo de transmissão",
xlab = "Transmissão", ylab = "mpg")
num_sel <- c("mpg","disp","hp","wt","qsec","drat")
M <- cor(mtcars[, num_sel])
knitr::kable(round(M, 2), caption = "Matriz de correlação (variáveis numéricas)")
| mpg | disp | hp | wt | qsec | drat | |
|---|---|---|---|---|---|---|
| mpg | 1.00 | -0.85 | -0.78 | -0.87 | 0.42 | 0.68 |
| disp | -0.85 | 1.00 | 0.79 | 0.89 | -0.43 | -0.71 |
| hp | -0.78 | 0.79 | 1.00 | 0.66 | -0.71 | -0.45 |
| wt | -0.87 | 0.89 | 0.66 | 1.00 | -0.17 | -0.71 |
| qsec | 0.42 | -0.43 | -0.71 | -0.17 | 1.00 | 0.09 |
| drat | 0.68 | -0.71 | -0.45 | -0.71 | 0.09 | 1.00 |
Observação: mpg correlaciona-se
negativamente com wt e hp, sugerindo que
peso e potência mais elevados estão
associados a menor eficiência.
Modelo para explicar mpg por wt:
mod1 <- lm(mpg ~ wt, data = mtcars)
summary(mod1)
Call:
lm(formula = mpg ~ wt, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-4.5432 -2.3647 -0.1252 1.4096 6.8727
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 37.2851 1.8776 19.858 < 2e-16 ***
wt -5.3445 0.5591 -9.559 1.29e-10 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.046 on 30 degrees of freedom
Multiple R-squared: 0.7528, Adjusted R-squared: 0.7446
F-statistic: 91.38 on 1 and 30 DF, p-value: 1.294e-10
Interpretação: o coeficiente de wt é
negativo e estatisticamente significativo. Em média, um aumento de
1000 lbs está associado a uma redução
de mpg. O R² indica a proporção da variabilidade explicada
pelo modelo.
plot(mod1, which = 1)
mpg) apresenta variação substancial entre
modelos.wt) e potência
(hp) estão associados a menor
eficiência (correlações negativas).wt explica parcela
relevante da variação de mpg, suportando a relação negativa
observada graficamente.mpg ~ wt + hp + cyl) e comparação entre transmissões via
ANOVA.