1. Apresentação do Capítulo

Neste curso serão explorados os fundamentos estatísticos no contexto da linguagem de programação R. O objetivo é capacitar os estudantes análises e visualização da informação, proporcionando uma compreensão e prática de conceitos essenciais para a análise exploratória de dados.

Ao longo do curso, teremos a oportunidade de compreender os diferentes tipos de dados, desde variáveis qualitativas ordinais e nominais até variáveis quantitativas discretas e contínuas.

A exploração das distribuições de frequências para variáveis qualitativas e quantitativas será guiada pela construção de tabelas apropriadas, enfatizando a relevância dos histogramas como ferramentas visuais para a interpretação das distribuições. Além disso, técnicas práticas para a manipulação de dados qualitativos em R serão abordadas.

A compreensão das medidas de tendência central, como média aritmética, mediana e moda, com uma ênfase particular na interpretação dessas métricas no contexto da análise estatística. A influência de valores extremos na média será destacada. Medidas separatrizes, como quartis, decis e percentis, serão exploradas. A construção e interpretação de boxplots para visualizar a distribuição dos dados e identificar outliers.

Ao final do curso, seremos guiados através das medidas de dispersão, incluindo o desvio médio absoluto, a variância e o desvio padrão.

1.1 Entendendo a Base de Dados

Este conjunto de dados fornece uma visão abrangente de vários fatores que afetam o desempenho do aluno nos exames. Inclui informações sobre hábitos de estudo, frequência, envolvimento dos pais e outros aspectos que influenciam o sucesso acadêmico.

Trata-se de uma base publica intitulada Student Performance Factors retirada do Kaggle, disponível no link https://www.kaggle.com/.

Descrições de colunas:

  • Hours_Studied: Número de horas gastas estudando por semana. Assiduidade Porcentagem de aulas frequentadas.
  • Parental_Involvement: Nível de envolvimento dos pais na educação do aluno (Baixo, Médio, Alto).
  • Access_to_Resources: Disponibilidade de recursos educacionais (Baixa, Média, Alta).
  • Extracurricular_Activities: Participação em atividades extracurriculares (Sim, Não).
  • Sleep_Hours: Número médio de horas de sono por noite.
  • Previous_Scores: Pontuações de exames anteriores.
  • Motivation_Level: Nível de motivação do aluno (Baixo, Médio, Alto).
  • Internet_Access: Disponibilidade de acesso à internet (Sim, Não).
  • Tutoring_Sessions: Número de sessões de tutoria assistidas por mês.
  • Family_Income: Nível de renda familiar (Baixo, Médio, Alto).
  • Teacher_Quality: Qualidade dos professores (Baixa, Média, Alta).
  • School_Type: Tipo de escola frequentada (Pública, Privada).
  • Peer_Influence: Influência dos pares no desempenho acadêmico (Positivo, Neutro, Negativo).
  • Physical_Activity: Número médio de horas de atividade física por semana.
  • Learning_Disabilities: Presença de dificuldades de aprendizagem (Sim, Não).
  • Parental_Education_Level: Maior nível de escolaridade dos pais (Ensino Médio, Faculdade, Pós-Graduação).
  • Distance_from_Home: Distância de casa para a escola (Perto, Moderado, Longe).
  • Gênero: Sexo do aluno (Masculino, Feminino).
  • Exam_Score: Nota do exame final.

2. Introdução aos Tipos de Dados

2.1 Variáveis Qualitativas Ordinais

Variáveis Qualitativas Ordinais: Uma Introdução com R

As variáveis qualitativas ordinais são características que podem ser categorizadas e ordenadas, mas cuja diferença entre as categorias não é uniforme. Ou seja, existe uma relação de ordem entre as categorias, mas a distância entre elas não é quantificável de maneira precisa. Vamos explorar essa categoria de variáveis com exemplos práticos e utilização da linguagem R.

Definição e Exemplos:

As variáveis qualitativas ordinais representam atributos com um grau intrínseco de ordenação. Por exemplo, níveis de satisfação, tamanhos de roupa (P, M, G), ou classificações de desempenho. Em R, podemos representar essas variáveis usando fatores, atribuindo níveis específicos às categorias.

# Exemplo: Níveis de satisfação
satisfacao <- c("Insatisfeito", "Satisfeito",  
                "Muito Satisfeito", "Satisfeito", "Insatisfeito")
satisfacao_ord <- factor(
  satisfacao, ordered = TRUE, 
                         levels = c("Insatisfeito", "Satisfeito", 
                                    "Muito Satisfeito"))

# Visualizando os níveis
print(satisfacao_ord)
## [1] Insatisfeito     Satisfeito       Muito Satisfeito Satisfeito      
## [5] Insatisfeito    
## Levels: Insatisfeito < Satisfeito < Muito Satisfeito

Representação Gráfica e Análise Exploratória:

A representação gráfica de variáveis qualitativas ordinais pode ser feita através de gráficos de barras ordenados. Vamos usar o pacote ggplot2 para criar um gráfico de barras com R.

# Instalar e carregar o pacote ggplot2 se ainda não estiver instalado
# install.packages("ggplot2")
library(ggplot2)

# Criar o gráfico de barras ordenadas
ggplot(data.frame(satisfacao = satisfacao_ord), 
       aes(x = satisfacao_ord)) +
  geom_bar(fill = "skyblue", color = "black") +
  labs(title = "Níveis de Satisfação", x = "Satisfação", 
       y = "Frequência") +
  theme_minimal()

Aplicações Práticas em Ciência de Dados:

Em Ciência de Dados, as variáveis qualitativas ordinais desempenham um papel em diversas análises. Por exemplo, vamos importar nosso DataSet e ver quais dos atributos são classificados como variáveis qualitativas ordinais.

# Importação da base de dados:
df <- read.csv("StudentPerformanceFactors.csv")

# Conhecendo o cabeçalho.e os atributos
head(df)
##   Hours_Studied Attendance Parental_Involvement Access_to_Resources
## 1            23         84                  Low                High
## 2            19         64                  Low              Medium
## 3            24         98               Medium              Medium
## 4            29         89                  Low              Medium
## 5            19         92               Medium              Medium
## 6            19         88               Medium              Medium
##   Extracurricular_Activities Sleep_Hours Previous_Scores Motivation_Level
## 1                         No           7              73              Low
## 2                         No           8              59              Low
## 3                        Yes           7              91           Medium
## 4                        Yes           8              98           Medium
## 5                        Yes           6              65           Medium
## 6                        Yes           8              89           Medium
##   Internet_Access Tutoring_Sessions Family_Income Teacher_Quality School_Type
## 1             Yes                 0           Low          Medium      Public
## 2             Yes                 2        Medium          Medium      Public
## 3             Yes                 2        Medium          Medium      Public
## 4             Yes                 1        Medium          Medium      Public
## 5             Yes                 3        Medium            High      Public
## 6             Yes                 3        Medium          Medium      Public
##   Peer_Influence Physical_Activity Learning_Disabilities
## 1       Positive                 3                    No
## 2       Negative                 4                    No
## 3        Neutral                 4                    No
## 4       Negative                 4                    No
## 5        Neutral                 4                    No
## 6       Positive                 3                    No
##   Parental_Education_Level Distance_from_Home Gender Exam_Score
## 1              High School               Near   Male         67
## 2                  College           Moderate Female         61
## 3             Postgraduate               Near   Male         74
## 4              High School           Moderate   Male         71
## 5                  College               Near Female         70
## 6             Postgraduate               Near   Male         71

Observamos que vários dos atributos são qualitativos ordinais, vamos utilizar o Family_Income para entender como os dados estão distribuídos. Primeiamente temos que entender como os dados são apresentados, desta forma, vamos utilizar o comando unique() para visualizarmos todos os níveis disponíveis.

unique(df$Family_Income)
## [1] "Low"    "Medium" "High"

Assim, temos os três níveis na ordem: Low < Medium < High, assim apresentamos:

# Criando o fator
Income_ord <- factor(
  df$Family_Income, 
  ordered = TRUE, 
  levels = c("Low", "Medium", "High"))

Agora vamos construir o gráfico e visualizar a informação:

ggplot(data.frame(Income = Income_ord), aes(x = Income_ord)) +
  geom_bar(fill = "skyblue", color = "black") +
  labs(title = "Níveis de Renda da Família", x = "Renda", y = "Frequência") +
  theme_minimal()

Essa breve introdução destaca a importância das variáveis qualitativas ordinais, o R, com sua versatilidade e poder estatístico, se torna uma ferramenta valiosa para realizar essas análises de forma eficiente e visualmente impactante.

2.2 Variáveis Qualitativas Nominais

As variáveis qualitativas nominais representam categorias que não possuem uma ordem intrínseca. Cada categoria é única e independente das outras. Exemplos comuns incluem cores, estados civis e tipos de animais. Vamos entender essas características e distinções com exemplos e utilização da linguagem R.

# Exemplo: Tipos de Animais
tipos_animais <- 
  c("Cachorro", "Gato", "Pássaro", "Peixe", "Cachorro", "Pássaro")
tipos_animais_nominal <- factor(tipos_animais)

# Visualizando os tipos de animais
print(tipos_animais_nominal)
## [1] Cachorro Gato     Pássaro  Peixe    Cachorro Pássaro 
## Levels: Cachorro Gato Pássaro Peixe

Analisando nosso DataSete:

Analiando nosso DataSet iremos analisar o atributo Extracurricular_Activities, abaixo iremos apresentar uma tabela com o condensado desta informação:

table(df$Extracurricular_Activities)
## 
##   No  Yes 
## 2669 3938

Outra maneira também é a apresentação desta informação de maneira percentual:

# Carregar pacotes necessários
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Calcular a frequência e o percentual de cada atividade extracurricular
df_pie <- df %>%
  count(Extracurricular_Activities) %>%
  mutate(Percent = n / sum(n) * 100)

# Criar o gráfico de setores (pizza)
ggplot(df_pie, aes(x = "", 
                   y = Percent, 
                   fill = Extracurricular_Activities)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  labs(title = "Atividades Extracurriculares dos Alunos", 
       fill = "Atividades Extracurriculares") +  
  theme_minimal() +
  theme(axis.text = element_blank(), 
        axis.title = element_blank()) +
  geom_text(aes(label = paste0(round(Percent, 1), "%")), 
            position = position_stack(vjust = 0.5), 
            color = "white")

As variáveis qualitativas nominais desempenham um papel para apoio em diversas análises, e R oferece uma ampla gama de ferramentas para manipulação e visualização eficientes desses dados.

2.3 Variáveis Quantitativas Discretas

Variáveis quantitativas discretas representam contagens ou valores distintos e separados por unidades fixas. Ao contrário das variáveis contínuas, essas variáveis assumem valores inteiros específicos. Exemplos incluem o número de alunos em uma sala de aula, o número de carros em um estacionamento, etc.

# Exemplo: Número de Alunos em uma Sala de Aula
num_alunos <- c(30, 25, 28, 32, 31, 29, 30, 33, 27, 26)
num_alunos_discreto <- as.integer(num_alunos)

# Visualizando o número de alunos
print(num_alunos_discreto)
##  [1] 30 25 28 32 31 29 30 33 27 26

Aqui, temos o número de alunos em 10 salas de aula diferentes. A variável num_alunos_discreto representa uma variável quantitativa discreta, pois os valores são contagens inteiras e distintas.

Distribuição de Probabilidades:

Para entender a variabilidade dos dados, é útil examinar a distribuição de probabilidades associada a uma variável quantitativa discreta. Vamos usar um exemplo e calcular a distribuição de probabilidades.

# Exemplo: Distribuição de Probabilidades
# (Simulação de dados fictícios)
set.seed(789)
dados_discretos <- table(sample(num_alunos_discreto, 100, replace = TRUE))

# Calculando a distribuição de probabilidades
probabilidades <- prop.table(dados_discretos)
print(probabilidades)
## 
##   25   26   27   28   29   30   31   32   33 
## 0.13 0.08 0.10 0.08 0.10 0.18 0.10 0.12 0.11

Simulamos 100 observações do número de alunos em uma sala de aula e calculamos a distribuição de probabilidades associada. Isso nos dá uma ideia da probabilidade de ocorrer cada valor discreto.

A função sample() é usada para gerar uma amostra aleatória dos elementos de um vetor. O argumento replace determina se a amostragem é feita com reposição ou sem reposição.

  • Quando replace = TRUE, significa que a amostragem é feita com reposição. Isso significa que um mesmo elemento pode ser selecionado mais de uma vez para a amostra.
  • Quando replace = FALSE (ou se o argumento replace for omitido, já que FALSE é o valor padrão), a amostragem é feita sem reposição. Isso significa que cada elemento só pode ser selecionado uma vez para a amostra.

Análise de Dados Discretos utilizando R:

Além de calcular distribuições de probabilidades, R oferece diversas ferramentas para a análise de dados discretos. Podemos criar gráficos, calcular medidas de tendência central e dispersão, entre outros. Vamos analisar nosso dataSet e verificar como estão distribuídas os registros do atributo Sleep_Hours

# Gráfico de Barras
ggplot(df, aes(x = factor(df$Sleep_Hours))) +
  geom_bar(fill = "lightgreen", color = "black") +
  labs(title = "Distribuição do Número de Alunos", 
       x = "Número de horas dormidas", 
       y = "Frequência") +
  theme_minimal()
## Warning: Use of `df$Sleep_Hours` is discouraged. Use `Sleep_Hours` instead.

Criamos um gráfico de barras para visualizar a distribuição do número de horas que cada aluno dormiu. Cada barra representa a frequência de um valor específico.

A compreensão e análise de variáveis quantitativas discretas são cruciais em estatística, e a utilização do R facilita a exploração e interpretação desses dados de maneira eficaz e visualmente informativa.

2.3 Variáveis Quantitativas Contínuas

Variáveis quantitativas contínuas assumem valores em um intervalo contínuo e podem assumir qualquer valor dentro desse intervalo. Ao contrário das variáveis discretas, as variáveis contínuas podem assumir um número infinito de valores. Exemplos incluem altura, peso, temperatura, etc.

# Exemplo: Altura de Indivíduos
altura <- c(1.65, 1.78, 1.62, 1.80, 1.75, 1.68, 1.72, 1.68, 1.85, 1.70)
altura_continua <- as.numeric(altura)

# Visualizando a altura dos indivíduos
print(altura_continua)
##  [1] 1.65 1.78 1.62 1.80 1.75 1.68 1.72 1.68 1.85 1.70

Aqui, temos as alturas de 10 indivíduos. A variável altura_continua representa uma variável quantitativa contínua, pois pode assumir qualquer valor em um intervalo contínuo.

Função Densidade de Probabilidade:

Para variáveis contínuas, a função densidade de probabilidade (pdf) descreve a probabilidade relativa de um valor ocorrer. Vamos calcular a função densidade de probabilidade para o exemplo da altura.

# Exemplo: Função Densidade de Probabilidade
# (Simulação de dados fictícios)
set.seed(987)
dados_continuos <- density(rnorm(1000, mean = mean(altura_continua), 
                                 sd = sd(altura_continua)))

# Visualizando a função densidade de probabilidade
plot(dados_continuos, main = "Função Densidade de Probabilidade", 
     xlab = "Altura", col = "blue", lwd = 2)

Geramos dados fictícios com distribuição normal para simular a altura de uma população. A função densidade de probabilidade nos dá uma ideia da probabilidade relativa de diferentes valores de altura.

Gráficos e Análise Exploratória de Dados Contínuos com R:

R oferece ferramentas poderosas para visualização e análise de dados contínuos. Vamos criar um histograma para explorar a distribuição da altura.

# Gráfico de Histograma para Altura
hist(altura_continua, col = "lightblue", 
     main = "Histograma de Altura",
     xlab = "Altura", ylab = "Frequência")

Este histograma visualiza a distribuição da altura dos indivíduos. A altura é contínua, e o histograma fornece uma representação gráfica da frequência de diferentes intervalos de altura.

3. Distribuições de Frequência e Histogramas

3.1 Distribuição de Frequências para Variáveis Qualitativas

A construção de tabelas de frequência é uma maneira eficaz de resumir e organizar dados qualitativos. Vamos utilizar um exemplo prático para criar uma tabela de frequência para a variável qualitativa “Tipo de Fruta”.

# Exemplo: Tipos de Frutas
frutas <- c("Maçã", "Banana", "Laranja", "Maçã", "Banana", "Uva",
            "Laranja", "Uva", "Maçã", "Banana")
tabela_frutas <- table(frutas)

# Visualizando a tabela de frequência
print(tabela_frutas)
## frutas
##  Banana Laranja    Maçã     Uva 
##       3       2       3       2

Aqui, temos uma lista de tipos de frutas consumidas por 10 pessoas. A tabela de frequência tabela_frutas nos mostra quantas vezes cada tipo de fruta apareceu na lista.

Gráficos de Barras e Setores:

Gráficos de barras e setores são ferramentas visuais poderosas para representar a distribuição de frequências de variáveis qualitativas. Vamos criar gráficos para visualizar a distribuição dos tipos de frutas.

# Gráfico de Barras para Tipos de Frutas
ggplot(data.frame(Frutas = frutas), aes(x = Frutas)) +
  geom_bar(fill = "lightcoral", color = "black") +
  labs(title = "Distribuição de Tipos de Frutas", 
       x = "Tipo de Fruta", 
       y = "Frequência") +
  theme_minimal()

# Gráfico de Setores para Tipos de Frutas
ggplot(data.frame(Frutas = frutas), aes(x = "", fill = Frutas)) +
  geom_bar(width = 1) +
  coord_polar("y") +
  labs(title = "Distribuição de Tipos de Frutas", 
       fill = "Tipo de Fruta") +
  theme_minimal()

Os gráficos de barras mostram a distribuição de frequências de cada tipo de fruta. O gráfico de setores fornece uma visão proporcional da distribuição, indicando a participação percentual de cada tipo de fruta.

Manipulação de Dados Qualitativos em R:

A manipulação eficiente de dados qualitativos é crucial para realizar análises precisas. Vamos explorar a utilização de R para filtrar e contar valores específicos.

# Filtrando e Contando Valores Específicos
mais_comuns <- names(sort(table(frutas), decreasing = TRUE))[1:2]

# Visualizando os dois tipos de frutas mais comuns
print(paste("As frutas mais comuns são:", paste(mais_comuns, collapse = ", ")))
## [1] "As frutas mais comuns são: Banana, Maçã"

Aqui, identificamos as duas frutas mais comuns na lista, usando a função table para contar a frequência de cada tipo de fruta.

3.2 Distribuição de Frequências para Variáveis Quantitativas

Ao lidar com variáveis quantitativas, muitas vezes é útil agrupar os dados em intervalos de classe para simplificar a análise. Vamos considerar um exemplo prático de idades e agrupar esses dados em intervalos de classe.

# Exemplo: Idades de Indivíduos
idades <- c(25, 30, 35, 40, 42, 28, 31, 38, 45, 50, 32, 36, 41, 
            29, 39, 48, 26, 34, 37, 43)
intervalos_classe <- cut(idades, breaks = seq(25, 55, by = 5), 
                         include.lowest = TRUE)

# Visualizando os intervalos de classe
print(intervalos_classe)
##  [1] [25,30] [25,30] (30,35] (35,40] (40,45] [25,30] (30,35] (35,40] (40,45]
## [10] (45,50] (30,35] (35,40] (40,45] [25,30] (35,40] (45,50] [25,30] (30,35]
## [19] (35,40] (40,45]
## Levels: [25,30] (30,35] (35,40] (40,45] (45,50] (50,55]

Aqui, temos as idades de 20 indivíduos. Utilizamos a função cut para agrupar essas idades em intervalos de classe de 5 anos, começando em 25 anos.

Construção de Histogramas:

Os histogramas são gráficos valiosos para visualizar a distribuição de frequências em variáveis quantitativas. Vamos criar um histograma para as idades, usando os intervalos de classe definidos anteriormente.

# Histograma para Idades
hist(idades, breaks = seq(25, 55, by = 5), col = "lightblue", 
     main = "Histograma de Idades", xlab = "Idade", 
     ylab = "Frequência")

Este histograma visualiza a distribuição de idades em intervalos de classe. Cada barra representa a frequência de idades dentro de um intervalo específico.

Visualização e Interpretação de Distribuições com R:

R oferece diversas ferramentas para visualizar e interpretar distribuições de variáveis quantitativas. Vamos calcular medidas de resumo e criar um gráfico de caixa para as idades.

# Medidas de Resumo para Idades
mediana_idades <- median(idades)
media_idades <- mean(idades)

# Gráfico de Caixa para Idades
boxplot(idades, col = "lightgreen", 
        main = "Gráfico de Caixa para Idades", 
        ylab = "Idade")

# Visualizando as medidas de resumo
print(paste("Mediana: ", mediana_idades))
## [1] "Mediana:  36.5"
print(paste("Média: ", media_idades))
## [1] "Média:  36.45"

O gráfico de caixa destaca a dispersão das idades, enquanto as medidas de resumo (mediana e média) fornecem uma visão rápida do centro da distribuição.

3.3 Histogramas

Os histogramas são gráficos eficazes para visualizar a distribuição de frequências em variáveis quantitativas. Cada barra representa a frequência de observações em um intervalo específico. Vamos explorar um exemplo prático de alturas de estudantes e interpretar o histograma resultante.

# Exemplo: Alturas de Estudantes
alturas <- c(165, 175, 160, 180, 175, 168, 172, 168, 185, 170, 160, 
             165, 175, 182, 178, 160, 165, 172, 178, 160)
hist(alturas, col = "lightcoral", main = "Histograma de Alturas", 
     xlab = "Altura", ylab = "Frequência")

O histograma mostra a distribuição de alturas dos estudantes. Cada barra representa a frequência de alturas em um intervalo específico. Por exemplo, a barra mais alta indica que há mais estudantes com alturas nesse intervalo.

Aplicações Práticas em Análise Exploratória de Dados:

Os histogramas são fundamentais na análise exploratória de dados. Eles ajudam a identificar padrões, assimetrias e características importantes da distribuição dos dados. Vamos calcular algumas estatísticas resumo e explorar essas características no exemplo das alturas.

# Medidas de Resumo para Alturas
media_alturas <- mean(alturas)
mediana_alturas <- median(alturas)
desvio_padrao_alturas <- sd(alturas)

# Visualizando as medidas de resumo
print(paste("Média: ", media_alturas))
## [1] "Média:  170.65"
print(paste("Mediana: ", mediana_alturas))
## [1] "Mediana:  171"
print(paste("Desvio Padrão: ", desvio_padrao_alturas))
## [1] "Desvio Padrão:  7.79524146346245"

As medidas de resumo fornecem informações adicionais sobre a distribuição das alturas, como a média, mediana e desvio padrão. Isso nos ajuda a compreender melhor a centralidade e a dispersão dos dados.

Utilização de Bibliotecas Gráficas em R para Criar Histogramas:

R possui bibliotecas gráficas poderosas, como ggplot2, que oferecem maior personalização e flexibilidade na criação de gráficos. Vamos recriar o histograma das alturas usando ggplot2.

# Criando um Histograma com ggplot2
ggplot(data.frame(Alturas = alturas), aes(x = Alturas)) +
  geom_histogram(binwidth = 5, fill = "lightcoral", color = "black") +
  labs(title = "Histograma de Alturas (ggplot2)", x = "Altura", 
       y = "Frequência") +
  theme_minimal()

Este código utiliza o ggplot2 para criar um histograma mais personalizado. A função geom_histogram permite definir a largura dos intervalos de classe (binwidth) e outras opções estéticas.

4. Medidas de Tendência Central

4.1 Média Aritmética

A média aritmética é uma medida de tendência central que representa a soma dos valores de um conjunto dividida pelo número de elementos nesse conjunto. Matematicamente, a média é calculada pela fórmula:

\[\begin{equation} \bar{X} = \frac{1}{n} \sum_{i=1}^{n} X_i \end{equation}\]

onde \(\bar{X}\) é a média, \(n\) é o número de observações e \(X_i\) são os valores individuais no conjunto de dados.

Vamos calcular a média aritmética para um conjunto de notas de estudantes:

# Exemplo: Notas de Estudantes
notas <- c(75, 82, 90, 88, 95, 79, 83, 87, 92, 86)

# Calculando a Média Aritmética
media_notas <- mean(notas)
print(paste("Média das Notas: ", media_notas))
## [1] "Média das Notas:  85.7"

Aqui, temos um conjunto de notas de 10 estudantes. A função mean em R calcula automaticamente a média aritmética dessas notas.

Propriedades e Interpretação:

A média aritmética é influenciada por todos os valores no conjunto de dados. Algumas propriedades importantes incluem:

  • A média é sensível a valores extremos, pois eles afetam diretamente a soma.
  • A média pode não ser um valor presente nos dados originais.
  • É uma medida de tendência central que busca representar um valor típico no conjunto.

Implementação em R e Aplicação em Conjunto de Dados Reais:

Vamos agora utilizar a média aritmética em um conjunto de dados real, como o conjunto de dados iris, que contém informações sobre diferentes espécies de flores.

# Carregando o conjunto de dados iris
data(iris)

# Calculando a Média Aritmética para Comprimento da Pétala (Petal.Length)
media_petal_length <- mean(iris$Petal.Length)
print(paste("Média do Comprimento da Pétala: ", media_petal_length))
## [1] "Média do Comprimento da Pétala:  3.758"

Neste exemplo, utilizamos o conjunto de dados iris e calculamos a média aritmética do comprimento da pétala. Isso nos fornece um valor médio para essa característica específica nas diferentes espécies de flores.

4.2 Mediana

A mediana é outra medida de tendência central que representa o valor que separa a metade inferior da metade superior de um conjunto de dados ordenado. Para calcular a mediana, é necessário organizar os dados em ordem crescente ou decrescente e encontrar o valor do meio. A fórmula matemática para a mediana é:

\[\begin{equation} \text{Mediana} = \begin{cases} X_{\frac{n+1}{2}} & \text{se } n \text{ é ímpar} \\ \frac{1}{2} \left( X_{\frac{n}{2}} + X_{\frac{n}{2} + 1} \right) & \text{se } n \text{ é par} \end{cases} \end{equation}\]

onde \(X_i\) são os valores individuais no conjunto de dados ordenado.

Vamos calcular a mediana para um conjunto de dados:

# Exemplo: Alturas de Estudantes
alturas <- c(160, 165, 170, 175, 180, 185)

# Calculando a Mediana
mediana_alturas <- median(alturas)
print(paste("Mediana das Alturas: ", mediana_alturas))
## [1] "Mediana das Alturas:  172.5"

Aqui, temos um conjunto de alturas de estudantes. A função median em R calcula automaticamente a mediana dessas alturas.

Comparação com a Média:

A mediana é menos sensível a valores extremos do que a média. Enquanto a média é influenciada diretamente por todos os valores, a mediana é apenas afetada pelos valores do meio quando o conjunto está ordenado. Portanto, a mediana pode ser uma medida mais robusta em presença de outliers.

Uso de Funções Estatísticas em R para Calcular a Mediana:

R fornece funções estatísticas eficientes para calcular a mediana. Além da função median, outras funções como quantile também podem ser úteis em contextos mais amplos.

# Calculando a Mediana usando quantile
mediana_alturas_quantile <- quantile(alturas, 0.5)
print(paste("Mediana das Alturas (usando quantile): ",
            mediana_alturas_quantile))
## [1] "Mediana das Alturas (usando quantile):  172.5"

Neste exemplo, utilizamos a função quantile para calcular a mediana das alturas. A vantagem dessa abordagem é que ela também permite calcular outros quantis se necessário.

4.3 Moda

A moda é uma medida de tendência central que representa o valor que ocorre com mais frequência em um conjunto de dados. Um conjunto de dados pode ter uma moda (unimodal), mais de uma moda (multimodal), ou não ter moda se todos os valores ocorrerem com a mesma frequência. Não há uma fórmula matemática específica para calcular a moda, pois ela é determinada empiricamente pela observação dos dados.

Identificação de Modas em Conjuntos de Dados:

Vamos explorar um exemplo prático para identificar a moda em um conjunto de dados:

# Exemplo: Números Repetidos
numeros <- c(2, 5, 3, 5, 8, 2, 5, 7, 2, 5, 3)

# Identificando a Moda
moda_numeros <- table(numeros)
moda_numeros <- as.numeric(names(moda_numeros)[moda_numeros ==
                                                 max(moda_numeros)])

if (length(moda_numeros) == 1) {
  print(paste("A Moda é:", moda_numeros))
} else {
  print("O conjunto de dados é multimodal.")
}
## [1] "A Moda é: 5"

Aqui, temos um conjunto de números. A função table conta a frequência de cada número, e a moda é identificada como o número ou os números com maior frequência.

Manipulação de Dados Modais em R:

R oferece funções úteis para lidar com dados modais. Se um conjunto de dados for multimodal, você pode querer extrair todas as modas.

# Exemplo: Conjunto de Dados Multimodal
dados_multimodais <- c(3, 5, 2, 3, 7, 5, 2, 3, 5, 7)

# Identificando Todas as Modas
modas_multimodais <- table(dados_multimodais)
modas_multimodais <- as.numeric(names(modas_multimodais)[
  modas_multimodais == max(modas_multimodais)])

if (length(modas_multimodais) == 1) {
  print(paste("A Moda é:", modas_multimodais))
} else {
  print(paste("As Modas são:", paste(modas_multimodais, collapse = ", ")))
}
## [1] "As Modas são: 3, 5"

Neste caso, o conjunto de dados é multimodal. A função table e a manipulação de índices são usadas para identificar todas as modas.

5. Medidas Separatrizes e Box-plots

5.1 Quartis, Decis e Percentis

Compreensão de Quartis, Decis e Percentis:

Quartis, decis e percentis são medidas estatísticas que dividem um conjunto de dados em partes específicas. O quartil divide os dados em quatro partes iguais, o decis em dez partes, e o percentil em cem partes. Eles são úteis para entender a distribuição dos dados e identificar valores atípicos.

Interpretação e Aplicação em Análise Estatística:

  • Quartis: Q1 (primeiro quartil) é o valor abaixo do qual 25% dos dados estão localizados, Q2 (segundo quartil) é a mediana, e Q3 (terceiro quartil) é o valor abaixo do qual 75% dos dados estão localizados.

  • Decis: D1, D2, …, D9 dividem os dados em 10 partes iguais, cada decis representa 10% dos dados.

  • Percentis: P1, P2, …, P99 dividem os dados em 100 partes iguais, cada percentil representa 1% dos dados.

Cálculo e Visualização Utilizando R:

Vamos calcular e visualizar quartis, decis e percentis para um conjunto de dados:

# Exemplo: Idades de Estudantes
idades_estudantes <- 
  c(18, 20, 22, 25, 27, 30, 32, 35, 38, 40, 45, 50, 55, 60)

# Calculando Quartis, Decis e Percentis
quartis <- quantile(idades_estudantes, c(0.25, 0.5, 0.75))
decis <- quantile(idades_estudantes, seq(0.1, 0.9, by = 0.1))
percentis <- quantile(idades_estudantes, seq(0.01, 0.99, by = 0.01))

# Visualizando os Resultados
print("Quartis:")
## [1] "Quartis:"
print(quartis)
##   25%   50%   75% 
## 25.50 33.50 43.75
print("Decis:")
## [1] "Decis:"
print(decis)
##  10%  20%  30%  40%  50%  60%  70%  80%  90% 
## 20.6 23.8 26.8 30.4 33.5 37.4 40.5 47.0 53.5
print("Percentis:")
## [1] "Percentis:"
print(percentis)
##    1%    2%    3%    4%    5%    6%    7%    8%    9%   10%   11%   12%   13% 
## 18.26 18.52 18.78 19.04 19.30 19.56 19.82 20.08 20.34 20.60 20.86 21.12 21.38 
##   14%   15%   16%   17%   18%   19%   20%   21%   22%   23%   24%   25%   26% 
## 21.64 21.90 22.24 22.63 23.02 23.41 23.80 24.19 24.58 24.97 25.24 25.50 25.76 
##   27%   28%   29%   30%   31%   32%   33%   34%   35%   36%   37%   38%   39% 
## 26.02 26.28 26.54 26.80 27.09 27.48 27.87 28.26 28.65 29.04 29.43 29.82 30.14 
##   40%   41%   42%   43%   44%   45%   46%   47%   48%   49%   50%   51%   52% 
## 30.40 30.66 30.92 31.18 31.44 31.70 31.96 32.33 32.72 33.11 33.50 33.89 34.28 
##   53%   54%   55%   56%   57%   58%   59%   60%   61%   62%   63%   64%   65% 
## 34.67 35.06 35.45 35.84 36.23 36.62 37.01 37.40 37.79 38.12 38.38 38.64 38.90 
##   66%   67%   68%   69%   70%   71%   72%   73%   74%   75%   76%   77%   78% 
## 39.16 39.42 39.68 39.94 40.50 41.15 41.80 42.45 43.10 43.75 44.40 45.05 45.70 
##   79%   80%   81%   82%   83%   84%   85%   86%   87%   88%   89%   90%   91% 
## 46.35 47.00 47.65 48.30 48.95 49.60 50.25 50.90 51.55 52.20 52.85 53.50 54.15 
##   92%   93%   94%   95%   96%   97%   98%   99% 
## 54.80 55.45 56.10 56.75 57.40 58.05 58.70 59.35
# Gráfico de Boxplot para Visualizar Quartis
boxplot(idades_estudantes, col = "lightblue", 
        main = "Boxplot - Quartis", 
        ylab = "Idade")

Aqui, utilizamos a função quantile para calcular os quartis, decis e percentis das idades dos estudantes. O gráfico de boxplot oferece uma representação visual dos quartis.

5.2 Box-plots

Construção e Interpretação de Box-Plots:

O box-plot, ou gráfico de caixa, é uma representação visual que destaca a distribuição estatística de um conjunto de dados. Ele é composto por uma caixa que representa os quartis e uma linha que indica a mediana. Os “bigodes” estendem-se até os valores extremos dentro de uma determinada distância interquartil. Outliers são frequentemente identificados como pontos fora dos bigodes.

Vamos criar e interpretar um box-plot para um conjunto de dados de alturas de estudantes:

# Exemplo: Alturas de Estudantes
alturas_estudantes <- c(160, 165, 170, 175, 180, 185, 200)

# Criando um Box-Plot
boxplot(alturas_estudantes, col = "lightgreen",
        main = "Box-Plot - Alturas", 
        ylab = "Altura")

O box-plot representa a distribuição das alturas dos estudantes. A caixa representa os quartis, a linha interna é a mediana, e os “bigodes” indicam a dispersão dos dados.

Identificação de Outliers:

Outliers são pontos fora dos bigodes do box-plot e podem indicar valores extremos ou erros nos dados. Vamos identificar outliers em um conjunto de dados:

# Exemplo: Identificação de Outliers
dados_com_outliers <- c(15, 20, 25, 30, 35, 200)

# Criando um Box-Plot com Identificação de Outliers
boxplot(dados_com_outliers, col = "lightcoral", 
        main = "Box-Plot com Outliers",
        ylab = "Valor")

Neste caso, o valor 200 é um outlier evidente, destacado fora dos bigodes do box-plot.

Utilização de Funções em R para Criar Box-Plots:

R oferece funções específicas para criar box-plots, proporcionando maior controle sobre a visualização.

# Criando um Box-Plot com ggplot2
# Instalar e carregar o pacote ggplot2 se ainda não estiver instalado
# install.packages("ggplot2")
library(ggplot2)

# Criando um Box-Plot com ggplot2
ggplot(data.frame(Alturas = alturas_estudantes), aes(y = Alturas)) +
  geom_boxplot(fill = "lightgreen") +
  labs(title = "Box-Plot com ggplot2 - Alturas", y = "Altura") +
  theme_minimal()

O código utiliza a biblioteca ggplot2 para criar um box-plot mais personalizado. Isso oferece mais flexibilidade na customização do gráfico.

Os box-plots são ferramentas eficazes para visualizar a distribuição, centralidade e dispersão dos dados. R oferece diversas opções para criar box-plots, permitindo uma análise mais aprofundada e uma apresentação visual mais personalizada.

6. Medidas de Dispersão

6.1 Desvio Médio Absoluto

Cálculo e Interpretação:

O desvio médio absoluto (DMA) é uma medida de dispersão que quantifica a média das distâncias entre cada ponto de dados e a média do conjunto. O cálculo do DMA é dado pela fórmula:

\[\begin{equation} DMA = \frac{1}{n} \sum_{i=1}^{n} |X_i - \bar{X}| \end{equation}\]

onde \(DMA\) é o desvio médio absoluto, \(n\) é o número de observações, \(X_i\) é cada valor individual e \(\bar{X}\) é a média.

Vamos calcular o DMA para um conjunto de dados:

# Exemplo: Alturas de Estudantes
alturas_estudantes <- c(160, 165, 170, 175, 180)

# Calculando o Desvio Médio Absoluto
media_alturas <- mean(alturas_estudantes)
dma_alturas <- mean(abs(alturas_estudantes - media_alturas))

print(paste("Desvio Médio Absoluto das Alturas: ", dma_alturas))
## [1] "Desvio Médio Absoluto das Alturas:  6"

Aqui, calculamos o desvio médio absoluto das alturas dos estudantes em relação à média.

Comparação com Outras Medidas de Dispersão:

O DMA é uma medida de dispersão robusta, pois considera todas as observações. Comparado com a variância e o desvio padrão, o DMA é menos sensível a valores extremos, tornando-o uma opção preferida em algumas situações.

# Exemplo: Comparação com Variância e Desvio Padrão
var_alturas <- var(alturas_estudantes)
sd_alturas <- sd(alturas_estudantes)

print(paste("Variância das Alturas: ", var_alturas))
## [1] "Variância das Alturas:  62.5"
print(paste("Desvio Padrão das Alturas: ", sd_alturas))
## [1] "Desvio Padrão das Alturas:  7.90569415042095"

Calculamos a variância e o desvio padrão das alturas dos estudantes. A comparação destas medidas com o DMA destaca as diferenças em termos de sensibilidade a outliers.

Aplicações Práticas em Ciência de Dados com R:

O DMA é comumente utilizado em ciência de dados para avaliar a dispersão dos dados, especialmente quando a presença de outliers é uma preocupação. Vamos considerar um exemplo prático usando um conjunto de dados de salários:

# Exemplo: Salários de Funcionários
salarios <- c(40000, 45000, 48000, 50000, 55000, 80000, 120000)

# Calculando o Desvio Médio Absoluto
media_salarios <- mean(salarios)
dma_salarios <- mean(abs(salarios - media_salarios))

print(paste("Desvio Médio Absoluto dos Salários: ", dma_salarios))
## [1] "Desvio Médio Absoluto dos Salários:  21387.7551020408"

Neste exemplo, calculamos o DMA dos salários dos funcionários, proporcionando uma medida robusta da dispersão salarial.

6.2 Variância (Populacional e Amostral)

Conceito de Variância:

A variância é uma medida de dispersão que quantifica a extensão na qual cada ponto de dados em um conjunto se desvia da média desse conjunto. A variância populacional (\(\sigma^2\)) é calculada pela fórmula:

\[\begin{equation} \sigma^2 = \frac{1}{N} \sum_{i=1}^{N} (X_i - \mu)^2 \end{equation}\]

onde \(N\) é o tamanho da população, \(X_i\) são os valores individuais e \(\mu\) é a média.

A variância amostral (\(s^2\)) é uma estimativa da variância populacional e é calculada de maneira ligeiramente diferente:

\[\begin{equation} s^2 = \frac{1}{n-1} \sum_{i=1}^{n} (X_i - \bar{X})^2 \end{equation}\]

onde \(n\) é o tamanho da amostra e \(\bar{X}\) é a média amostral.

Diferença entre Variância Populacional e Amostral:

A principal diferença entre a variância populacional e amostral está no denominador. A variância populacional divide pela população total (\(N\)), enquanto a variância amostral divide pela amostra menos um (\(n-1\)). Essa diferença é conhecida como correção de Bessel e ajuda a corrigir o viés na estimativa da variância amostral.

Implementação em R e Análise de Resultados:

Vamos calcular a variância populacional e amostral para um conjunto de dados:

# Exemplo: Alturas de Estudantes
alturas_estudantes <- c(160, 165, 170, 175, 180)

# Calculando a Variância Populacional
var_pop_alturas <- var(alturas_estudantes)

# Calculando a Variância Amostral
var_amostral_alturas <- var(alturas_estudantes, na.rm = FALSE)

print(paste("Variância Populacional das Alturas: ", var_pop_alturas))
## [1] "Variância Populacional das Alturas:  62.5"
print(paste("Variância Amostral das Alturas: ", var_amostral_alturas))
## [1] "Variância Amostral das Alturas:  62.5"

Neste exemplo, calculamos a variância populacional e amostral das alturas dos estudantes usando a função var em R.

6.3 Desvio Padrão

Definição e Interpretação:

O desvio padrão é uma medida de dispersão que representa a média das distâncias entre cada ponto de dados e a média do conjunto. O desvio padrão populacional (\(\sigma\)) é a raiz quadrada da variância populacional e é dado pela fórmula:

\[\begin{equation} \sigma = \sqrt{\sigma^2} = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (X_i - \mu)^2} \end{equation}\]

onde \(N\) é o tamanho da população, \(X_i\) são os valores individuais e \(\mu\) é a média.

O desvio padrão amostral (\(s\)) é a raiz quadrada da variância amostral e é calculado de maneira semelhante:

\[\begin{equation} s = \sqrt{s^2} = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (X_i - \bar{X})^2} \end{equation}\]

onde \(n\) é o tamanho da amostra e \(\bar{X}\) é a média amostral.

Relação com a Variância:

O desvio padrão é simplesmente a raiz quadrada da variância. Enquanto a variância fornece uma medida de dispersão em termos de unidades ao quadrado, o desvio padrão é expresso na mesma unidade que os dados originais, tornando-o mais facilmente interpretável.

Utilização de Funções em R para Calcular o Desvio Padrão:

Vamos calcular o desvio padrão populacional e amostral para um conjunto de dados:

# Exemplo: Alturas de Estudantes
alturas_estudantes <- c(160, 165, 170, 175, 180)

# Calculando o Desvio Padrão Populacional
desvio_padrao_pop_alturas <- sd(alturas_estudantes)

# Calculando o Desvio Padrão Amostral
desvio_padrao_amostral_alturas <- sd(alturas_estudantes, 
                                     na.rm = FALSE)

print(paste("Desvio Padrão Populacional das Alturas: ",
            desvio_padrao_pop_alturas))
## [1] "Desvio Padrão Populacional das Alturas:  7.90569415042095"
print(paste("Desvio Padrão Amostral das Alturas: ",
            desvio_padrao_amostral_alturas))
## [1] "Desvio Padrão Amostral das Alturas:  7.90569415042095"

Neste exemplo, utilizamos a função sd em R para calcular o desvio padrão populacional e amostral das alturas dos estudantes.

7 Exercício

Como exercício do capítulo você deve ir ao site https://www.kaggle.com/datasets excolher um dataset do repositório, baixar o aquivo em .csv e fazer as análises apresentadas nesta unidade. Como formato de apresentação você deverá fazer um dashboard com essas infomrações, para tal use o pacote do flexdashboard do próprio R.