Parte I — Principais características e funcionalidades do ambiente R

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).

1. Estrutura e interface de trabalho

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:

  1. Editor/Script — escrever e executar código reprodutível.
  2. Console — saída imediata dos comandos.
  3. Ambiente/Histórico — objetos criados e histórico de comandos.
  4. Plots/Packages/Help/Files — gráficos, gestão de pacotes, ajuda e navegação de ficheiros.

2. Objetos e estruturas de dados

O R organiza informação em objetos. Os mais comuns são:

  • Vetores (um único tipo): c(1, 2, 3)
  • Matrizes (bidimensionais, um único tipo): matrix(1:6, nrow = 2)
  • Data frames (tabelas; colunas com tipos distintos): data.frame(nome = c("A","B"), idade = c(20,25))
  • Listas (coleções heterogéneas): list(a = 1:3, b = c("x","y"))
  • Fatores (categóricas com níveis): 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

3. Funções, ajuda e pacotes

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.

4. Visualização e análise estatística

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")

5. Boas práticas, vantagens e limitações

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.


Parte II — Análise estatística do conjunto de dados mtcars

Nesta 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.

1. Preparação e visão geral

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

2. Estatística descritiva

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")
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")
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")
Proporções por tipo de transmissão
Transmissão Proporção
Automática 0.59
Manual 0.41

3. Visualizações

3.1 Distribuição do consumo (mpg)

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.

3.2 Relação entre peso e consumo

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).

3.3 Consumo por tipo de transmissão

boxplot(mpg ~ am, data = mtcars,
        main = "Consumo por tipo de transmissão",
        xlab = "Transmissão", ylab = "mpg")

4. Correlações e associação

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)")
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.

5. Modelação: regressão linear simples

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 indica a proporção da variabilidade explicada pelo modelo.

Diagnóstico

plot(mod1, which = 1)

6. Conclusões

  • O consumo (mpg) apresenta variação substancial entre modelos.
  • Peso (wt) e potência (hp) estão associados a menor eficiência (correlações negativas).
  • Um modelo linear simples com wt explica parcela relevante da variação de mpg, suportando a relação negativa observada graficamente.
  • Futuro trabalho poderia incluir modelos múltiplos (por ex., mpg ~ wt + hp + cyl) e comparação entre transmissões via ANOVA.