Introdução à Ciência de Dados

Análise e Exploratória de Dados

Prof. Washington Santos da Silva

IFMG - Campus Formiga

2 de junho de 2025

Diário de Bordo

O que vimos até hoje?

  • Aula 1 ✅

    • Introdução e Contextualização ✅
    • O que é Ciência de Dados? ✅
    • Papéis Profissionais na Área de Dados ✅
    • Áreas de Aplicações ✅
    • Habilidades Interpessoais e Analíticas ✅
    • Apresentação da Disciplina ✅
  • Aula 2 ✅

    • Metodologia CRISP-DM ✅

    • Tipos de Análise ✅

      • Descritiva ✅
      • Diagnóstica ✅
      • Preditiva ✅
      • Prescritiva ✅
    • Configurações: Git/GitHub ✅

  • Aula 3 ✅

    • Introdução ao RStudio ✅

      • Criação do seu Projeto RStudio da Disciplina ✅
  • Aula 4 ✅

    • Introdução ao Git e GitHub ✅

      • Criação do seu repositório do projeto RStudio da disciplina no GitHub ✅
  • Aula 5 ✅

    • Breve Revisão do IDE RStudio ✅

    • Introdução ao Sistema de Publicação Quarto ✅

    • Sessão Prática Guiada com Relatório 1 ✅

      • Execução dos comandos git essenciais ✅
  • Aula 6 ✅

    • Parte I ✅

      • O Relatório Junglivet e a Metodologia CRISP-DM ✅
      • Primeiro contato com a linguagem R por meio dos códigos do relatório ✅
    • Parte II ✅

      • Para alunos com projetos estruturados ✅
      • Atividade prática ✅
      • Para alunos com dificuldades técnicas ✅
      • Atendimento individualizado para estruturação de projetos ✅
  • Aula 7 ✅

    • Introdução ao sistema Quarto (continuação) ✅

      • Gerar relatório no formato pdf ✅
      • Gerar relatório no formato docx ✅
    • Introdução à Linguagem R (continuação) ✅

      • Conceitos: Variáveis e observações ✅
      • Estrutura tabular organizada de dados ✅
      • Tipos e classes de dados principais em R ✅
      • Estruturas de dados: vetores e data frames ✅
  • Aula 8 ✅

    • Início do estudo do pacote dplyr para manipulação de dados ✅

      • CRISP-DM: Fase 2 (Entendimento dos dados) e Fase 3 (Preparação dos dados) ✅
        de um projeto de análise ou ciência de dados ✅
      • O que é o dplyr? ✅
      • A Filosofia Tidy Data (Dados Organizados) ✅
      • Dados Organizados (Tidy Data) ✅
      • Por que usar o dplyr? ✅
      • Fluxo de trabalho com dplyr ✅
      • Boas Práticas com dplyr ✅
      • Função dplyr::select() ✅
      • Função dplyr::filter() ✅
  • Aula 9 ✅

    • Solução dos exercícios práticos sobre as funções select e filter ✅
    • Função dplyr::mutate() ✅
  • Aula 10 ✅

    • Soluções dos exercícios práticos sobre a função mutate ✅
    • funções dplyr::group_by(), dplyr::summarize() e dplyr::arrange() ✅
  • Aula 11 ✅

    • Metodologia CRISP-DM e Pacote dplyr ✅
    • Revisão sobre Dados Organizados (Tidy Data) ✅
    • Exemplos de Dados Desorganizados Comuns em Administração ✅
    • Pacote tidyr: Função pivot_longer ✅
  • Aula 12 ✅

    • Metodologia CRISP-DM e o tidyverse ✅
    • Dados Organizados: Potencializando Análises ✅
  • Aula 13 ✅

    • Avaliação 1 ✅
  • Aula 14 ✅

    • Tipos Básicos de joins do pacote dplyr ✅
  • Aula 15 ✅

    • Variáveis Aleatórias em Finanças ✅
    • Distribuições de Probabilidade ✅
    • Início: Distribuição Normal (ou Gaussiana) ✅
  • Aula 16 ✅

    • Distribuição Normal (ou Gaussiana) - Parte 2 ✅
    • Características da Distribuição de uma VA ✅
      • Valor Esperado (Média) ✅
  • Aula 17 ✅

    • Características da Distribuição de uma VA ✅

      • Variância e Desvio-Padrão ✅
      • Variância: Propriedades Básicas ✅
      • Aplicação: Valor-em-Risco (VaR) ✅
      • Assimetria e Curtose ✅
  • Aula 18 ✅

    • Características da Distribuição de uma VA ✅

      • Covariância e Correlação ✅
      • Fundamentos de Simulação de Monte Carlo ✅

Nesta Aula

Tópicos

  • Teoria da Probabilidade e Análise Estatística de Dados

  • CRISP-DM e Análise Exploratória de Dados

  • Análise Exploratória Numérica

    • Medidas de Posição (ou de Tendência Central)
    • Medidas de Variabilidade
    • Medidas de Correlação

Arquivo para esta Aula (17)

Instruções

  • Abra o RStudio e o seu Projeto da Disciplina

  • Crie a subpasta 11-relatorio dentro da pasta relatorios.

  • Acesse o site da disciplina e baixe o arquivo 11-relatorio.zip

  • Descompacte o arquivo, copie/recorte o arquivo 11-relatorio.qmd e cole dentro da subpasta 11-relatorio.

Diretrizes para Aulas Mais Produtivas

🔊 Mantenha conversas em volume baixo

⌨️ Código com método:

95% dos erros são evitáveis com:

  • Atenção na digitação
  • Respeitar a sequência lógica de etapas
  • Revisão antes de pedir ajuda

🤝 Inteligência colaborativa:

  • Compartilhe conhecimento
  • Resolva questões técnicas simples com colegas próximos
  • Reserve ao professor as dúvidas conceituais complexas

💪 Capacidade de Resolver Problemas

Cada erro resolvido é uma evolução da sua habilidade analítica

Teoria da Probabilidade e Análise Estatística de Dados

Por que Estudamos Probabilidade?

A Conexão Fundamental

O Problema: Fenômenos do mundo real são aleatórios e incertos

  • Retornos de investimentos
  • Vendas diárias
  • Tempo de atendimento ao cliente

A Solução: Modelos probabilísticos que capturam essa variabilidade

O Caminho:

  1. Coletar dados do fenômeno
  2. Explorar padrões e características (AED)
  3. Identificar uma distribuição de probabilidade adequada
  4. Usar o modelo para previsões e decisões

A AED é a ponte entre dados reais e modelos teóricos!

AED: Dos Dados ao Modelo Probabilístico

AED: Dos Dados ao Modelo Probabilístico

Insights da AED

  • Forma aproximadamente simétrica → Sugere normalidade
  • Média ≈ R$ 50.000, Desvio-padrão ≈ R$ 8.000
  • Modelo: Vendas \(\sim\) N(\(\mu\) \(\approx\) 50000, \(\sigma\) \(\approx\) 800)
  • Agora podemos calcular P(Vendas > 60000), VaR, etc.!

CRISP-DM e Análise Exploratória de Dados

Metodologia CRISP-DM

Fases da Metodologia CRISP-DM

CRISP-DM: Onde Estamos?

Contexto na Disciplina

Até agora, vocês já trabalharam com:

  • Fase 1 (Entendimento do Negócio): Relatório Junglivet
  • Fase 2 (Entendimento dos Dados): Exploração inicial com dplyr
  • Fase 3 (Preparação dos Dados): Limpeza e transformação com tidyverse

Neste módulo: Vamos nos aprofundar nas Fases 2 e 4, usando AED para:

  • Entender melhor os dados
  • Realizar análises descritivas completas
  • Preparar o terreno para modelagem futura

O que é Análise Exploratória de Dados?

Definição

A Análise Exploratória de Dados (AED) é uma abordagem para analisar conjuntos de dados com o objetivo de resumir suas características principais, frequentemente usando métodos visuais e estatísticos.

Filosofia da AED:

  • Deixar os dados “falarem por si mesmos”
  • Explorar antes de modelar
  • Questionar suposições iniciais
  • Identificar insights inesperados

Pioneiro: John Tukey (1977) - “Exploratory Data Analysis”

Objetivos da AED no CRISP-DM

Por que fazer AED?

CRISP-DM Fase 2: Entendimento dos Dados

  • Entender as propriedades dos dados (tipos das variáveis, escalas, distribuições)
  • dentificar erros e inconsistências
  • Encontrar padrões e relacionamentos

CRISP-DM Fase 4: Modelagem/Análise

  • Descrever fenômenos através de estatísticas e visualizações
  • Sugerir diagnósticos sobre causas
  • Identificar distribuições de probabilidade adequadas
  • Orientar estratégias de modelagem
  • Comunicar resultados de forma efetiva

AED nas Fases do CRISP-DM: Exemplos Práticos

Como a AED se Aplica

Fase 2: Entendimento dos Dados

  • Exemplo: No caso Junglivet, usamos AED para descobrir que o fornecedor de malte era o principal fator afetando a qualidade
  • Ferramentas: glimpse(), summary(), gráficos exploratórios

Fase 4: Modelagem - Análise Descritiva

  • Exemplo: Usar histogramas para verificar se retornos de ações seguem distribuição normal
  • Ferramentas: Medidas de posição e dispersão, testes de normalidade
  • Resultado: Decisões informadas sobre modelos apropriados

Análise Exploratória de Dados

Diretrizes

  • A Análise Exploratória de Dados (AED) não é um processo formal com um conjunto estrito de regras.

  • Durante as fases iniciais da AED, devemos nos sentir livres para investigar quaisquer ideias que surjam.

  • Algumas ideias irão gerar frutos, outras serão descartadas.

  • Na medida em que a exploração continua, devemos nos focar em algumas questões e áreas mais relevantes e produtivas.

Roteiro do Módulo

O que veremos neste módulo?

  1. Por que Estudamos Probabilidade?

  2. Conexão CRISP-DM ↔︎ AED

  3. Tipos de AED:

    • Análise numérica: medidas de posição, variabilidade e dependência
    • Análise gráfica: visualizações essenciais
  4. Prática com R:

    • Implementação das técnicas
    • Interpretação dos resultados
  5. Aplicações:

    • Casos reais em Administração
    • Preparação para modelagem

Medidas de Posição ou de Tendência Central

Medidas de Posição ou de Tendência Central

O que são Medidas de Posição?

  • As medidas de posição, também conhecidas como medidas de tendência central, fornecem um ponto central em torno do qual os dados de uma distribuição são agrupados.

  • Elas ajudam a entender o valor “típico” ou “central” de um conjunto de dados. As principais medidas de posição incluem:

  • Média amostral

  • Quantis:

    • quartis
    • decis
    • percentis

Média amostral

O que é a Média Amostral?

  • A média amostral é uma medida de posição que representa o valor médio dos dados.

  • Estimador:

\[ \bar{x} = \frac{\sum_{i=1}^{n} x_i }{n} \]

  • sendo \(\bar{x}\) é a média amostral, \(n\) o tamanho da amostra, e \(x_i\) são os valores observados.

Média amostral em R

Exemplo de cálculo da média em R

# Criando um vetor de dados
dados <- c(12, 15, 18, 22, 25, 28, 30, 35, 40, 42)

# Calculando a média
media <- mean(dados)
media
[1] 26.7
# Cálculo manual da média
media_manual <- sum(dados) / length(dados)
media_manual
[1] 26.7

Interpretação: O valor médio desta amostra é 26.7, representando o ponto de equilíbrio dos dados.

Quantis

O que são Quantis?

  • Um quantil é um valor em uma série de dados em ordem crescente abaixo do qual uma determinada porcentagem de dados reside.

  • por exemplo, um quantil de 50% (também chamado de mediana) é o ponto em que 50% dos valores ficam abaixo desse valor, e 50% acima.

  • Os quantis mais comuns sào os:

  • quartis;

  • decis, e;

  • percentis.

Quartis

O que são Quartis?

  • Quartis dividem os dados ordenados em quatro partes iguais.

  • Primeiro Quartil (Q1): 25% dos dados são menores ou iguais a esse valor e 75% dos dados são maiores.

  • Segundo Quartil (Q2), também conhecido como mediana: 50% dos dados são menores ou iguais a esse valor e 50% são maiores.

  • Terceiro Quartil (Q3): 75% dos dados são menores ou iguais a esse valor e 25% são maiores.

Decis

O que são Decis?

  • Decis dividem os dados ordenados em dez partes iguais.

  • Cada decil indica um percentual específico de dados que é menor ou igual a esse valor.

  • Por exemplo, O primeiro decil, denotado como D1, representa o valor abaixo do qual se encontram os 10% mais baixos de todos os dados num conjunto ordenado. Isso significa que, ao observar o conjunto de dados do menor para o maior, o valor correspondente ao D1 é tal que 10% dos valores são inferiores ou iguais a ele, enquanto os 90% restantes são superiores, e assim por diante.

Percentis

O que são Percentis?

  • Percentis dividem os dados ordenados em cem partes iguais.

  • Cada percentil representa um percentual específico da distribuição dos dados.

  • Por exemplo, o 25º percentil representa o valor abaixo do qual se encontram os 25% menores de todos os dados em um conjunto ordenado. Isso significa que, ao observar o conjunto de dados do menor para o maior, o valor correspondente ao p25 é tal que 25% dos valores são inferiores ou iguais a ele, enquanto os 75% restantes são superiores, e assim por diante.

Quantis em R

Exemplos de cálculo de quantis em R

# Usando o mesmo vetor de dados
# Mediana (Q2)
mediana <- median(dados)
mediana
[1] 26.5
# Quartis
quartis <- quantile(dados, probs = c(0.25, 0.5, 0.75))
quartis
  25%   50%   75% 
19.00 26.50 33.75 
# Decis
decis <- quantile(dados, probs = seq(0.1, 0.9, by = 0.1))
decis
 10%  20%  30%  40%  50%  60%  70%  80%  90% 
14.7 17.4 20.8 23.8 26.5 28.8 31.5 36.0 40.2 
# Percentis
percentis <- quantile(dados, probs = c(0.05, 0.25, 0.5, 0.75, 0.95))
percentis
   5%   25%   50%   75%   95% 
13.35 19.00 26.50 33.75 41.10 

Observação: O segundo quartil (Q2) é igual à mediana.

Moda

O que é Moda?

  • O valor ou valores mais frequentes em um conjunto de dados.

  • Um conjunto de dados pode ser unimodal (uma moda), bimodal (duas modas), ou multimodal (várias modas).

Programação de Funções em R

O que é uma função em R?

  • Um bloco de código reutilizável que realiza uma tarefa específica
  • Recebe entradas (argumentos), processa e retorna saídas
  • Melhora a organização, legibilidade e manutenção do código
  • Evita repetição de código para tarefas frequentes

Estrutura Básica

Sintaxe para criar uma função:

nome_funcao <- function(argumentos) {
  # Corpo da função
  # Processamento dos argumentos
  return(resultado)  # Retorno da função
}

Componentes:

  1. nome_funcao: identificador da função
  2. function: palavra-chave para criação
  3. argumentos: entradas da função (separadas por vírgulas)
  4. corpo: operações realizadas
  5. return: valor devolvido (opcional)

Moda em R

Implementando uma função para calcular a moda:

calcular_moda <- function(x) {
  # 1. Cria tabela de frequências
  tab <- table(x)
  
  # 2. Identifica valor(es) com máxima frequência
  moda <- as.numeric(names(tab)[tab == max(tab)])
  
  # 3. Retorna o resultado
  return(moda)
}

Uso da função:

dados <- c(3, 5, 5, 7, 7, 7, 9)
calcular_moda(dados)  # Retorna 7
[1] 7

Exemplo Prático: Função Moda

Desmontando a função calcular_moda():

calcula_moda <- function(x) {
  # Passo 1: Cria uma tabela de frequências
  tab <- table(x)
  # Exemplo: para x = c(3,5,5,7,7,7,9)
  # tab fica:
  # 3 5 7 9 
  # 1 2 3 1

  # Passo 2: Identifica as modas
  moda <- as.numeric(names(tab)[tab == max(tab)])
  # Detalhamento:
  # a) max(tab)        → 3 (maior frequência)
  # b) tab == max(tab) → FALSE FALSE TRUE FALSE (quais posições têm freq máxima)
  # c) names(tab)      → c("3","5","7","9") (valores originais como texto)
  # d) [...]           → filtra apenas os nomes onde tab == max(tab) ("7")
  # e) as.numeric()    → converte texto para número (7)

  return(moda)
}

Fluxo de Execução:

  1. table(x) conta a frequência de cada valor
  2. max(tab) encontra a maior frequência
  3. tab == max(tab) cria um vetor lógico indicando quais valores têm frequência máxima
  4. names(tab)[...] extrai os nomes dos elementos com frequência máxima
  5. as.numeric() converte o resultado final para numérico

Casos Especiais

Cuidados no cálculo da moda:

# Dados sem moda (todos valores únicos)
 # retorna todos valores
calcular_moda(c(1,2,3,4,5)) 
[1] 1 2 3 4 5
# Dados multimodais
# retorna c(1,2)
calcular_moda(c(1,1,2,2,3))  
[1] 1 2
# Dados com NA
# precisa tratamento
calcular_moda(c(1,2,2,NA))   
[1] 2

Boas Práticas

Recomendações para criar funções:

  1. Nomes descritivos: calcular_media() é melhor que f()
  2. Comentários: Explique a lógica complexa
  3. Validação: Verifique inputs (ex: if(!is.numeric(x)) stop("Erro"))
  4. Escopo: Variáveis criadas dentro não existem fora
  5. Default: Argumentos opcionais com valores padrão
potencia <- function(x, expoente = 2) {
 x^expoente
}

Exercício

Cálculo e Interpretação de Medidas de Posição

Considere o seguinte conjunto de dados que representa as idades de clientes em uma loja:

idades <- c(23, 25, 28, 28, 32, 35, 36, 38, 40, 42, 45, 47, 50, 52, 55, 60, 65)
  1. Calcule a idade média dos clientes
  2. Determine a idade mediana e compare com a idade média
  3. Encontre o primeiro e terceiro quartis
  4. Identifique o percentil 90
  5. Verifique se há moda nos dados

Discussão: O que as medidas de posição revelam sobre a distribuição das idades?

Solução do Exercício

Resposta

# 1. idade média
mean(idades)
[1] 41.235294
# 2. idade mediana
median(idades)
[1] 40
# 3. Quartis: 
quantile(idades, probs = c(0.25, 0.5, 0.75))
25% 50% 75% 
 32  40  50 
# 4. Percentil 90
quantile(idades, probs = c(0.1, 0.3, 0.4, 0.8, 0.9))
 10%  30%  40%  80%  90% 
26.8 34.4 36.8 51.6 57.0 
# 5. Moda
calcular_moda(idades)
[1] 28

Interpretação:

  • A média (41.23529412) e mediana (40) são próximas, sugerindo distribuição simétrica

  • O primeiro quartil (32) indica que 25% dos clientes têm até esta idade

  • O percentil 90 (57) indica que 90% dos clientes têm até esta idade

  • moda = 28 (idade mais frequente entre os clientes)

Medidas de Variabialidade/Variação

Variância

O que é Variância?

A variância (\(s^2\)) mede o quão dispersos os valores de um conjunto de dados estão em relação à média.

  • Estimador:

\[ s^2 = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})^2 \] sendo \(\sigma^2\) a variância, \(x_i\) os valores observados, \(\bar{x}\) é a média amostral dos dado e \(n\) é o número total de observações.

  • A variância é sensível a valores extremos ou outliers.

Variância em R

Cálculo da variância com var()

dados <- c(12, 15, 18, 22, 25, 28, 30, 35, 40, 42)

# Variância amostral (divisor n-1)
variancia <- var(dados)
variancia
[1] 105.12222
# Comparação com fórmula manual
n <- length(dados)
sum((dados - mean(dados))^2) / (n-1)
[1] 105.12222

Interpretação: A variância de 105.12 unidades² quantifica o desvio quadrático médio.

Desvio-Padrão

O que é Desvio-Padrão?

O desvio-padrão (\(s\)) é a raiz quadrada da variância, fornecendo uma medida de dispersão em unidades originais dos dados.

  • Estimador:

\[ s = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})^2} \]

  • O desvio-padrão, como a variância, é sensível a valores extremos ou outliers.

Desvio-Padrão em R

Cálculo com sd()

desvio_padrao <- sd(dados)
desvio_padrao
[1] 10.252913
# Comparação com fórmula manual
sqrt(var(dados)) == sd(dados)
[1] TRUE

Dica: Use round(sd(dados), 2) para limitar casas decimais em relatórios.

Amplitude

O que é Amplitude?

  • A amplitude representa a distância entre o valor máximo e o valor mínimo de um conjunto de dados.

\[ amplitude = máximo - mínimo \]

  • Como depende apenas dos valores extremos do conjunto de dados, a amplitude é altamente sensível a outliers.

  • A amplitude não leva em conta como os dados estão distribuídos entre os valores extremos. Por essa razão, ela pode não ser uma medida adequada da variabilidade total do conjunto de dados, especialmente em distribuições com valores extremos ou outliers.

Amplitude em R

Cálculo com range() e diff()

amplitude <- diff(range(dados))
amplitude
[1] 30
# Equivalente a:
max(dados) - min(dados)
[1] 30

Aplicação: Amplitude de 30 unidades mostra a distância entre valores extremos.

Intervalo Interquartil (IQR)

O que é o Intervalo Interquartil (IQR)?

O IQR é a diferença entre o terceiro quartil (Q3) e o primeiro quartil (Q1), indicando a dispersão da metade central dos dados.

  • Fórmula:

\[ IQR = Q3 - Q1 \]

  • É uma medida robusta (a valores extremos ou outliers) de variabilidade.

Intervalo Interquartil (IQR) em R

Cálculo com IQR()

iqr_valor <- IQR(dados)
iqr_valor
[1] 14.75
# Verificando quartis
quantile(dados, c(0.25, 0.75))
  25%   75% 
19.00 33.75 

Vantagem: IQR de 14.75 é robusto a outliers, diferentemente da amplitude.

Coeficiente de Variação

O que é o Coeficiente de Variação (CV)?

  • O coeficiente de variação (CV) é uma medida estatística que descreve a proporção do desvio-padrão em relação à média.

  • É utilizado para comparar a variabilidade entre distribuições com médias diferentes, tornando-se uma ferramenta valiosa para avaliar a consistência de dados.

  • Por ser uma medida relativa, permite comparações entre conjuntos de dados que possuem unidades de medida ou escalas distintas.

  • O coeficiente de variação é calculado pela fórmula:

\[ CV = \left( \frac{s}{\bar{x}} \right) \times 100\% \]

sendo:

  • \(s\) o desvio-padrão amostral dos dados,
  • \(\bar{x}\) representa a média amostral dos dados,
  • O resultado é geralmente expresso em porcentagem.

Aplicação:

  • Um CV baixo indica que os dados estão relativamente próximos da média, sugerindo menor dispersão.

  • Um CV alto indica que os dados estão mais dispersos em relação à média, sugerindo maior variabilidade.

  • É particularmente útil em pesquisas científicas, financeiras e de mercado, para comparar a variabilidade de diferentes variáveis.

Coeficiente de Variação em R

Implementando uma função para CV

cv <- function(x, na.rm = FALSE) {

  # 1. tratamento de valores ausentes (NAs)
  if(na.rm) x <- x[!is.na(x)]
  
  # 2. Verifica se o vetor está vazio 
  # após a remoção de NAs
  if(length(x) == 0) return(NA)
  
  # 3. Cálculo do desvio padrão:
  desvio <- sd(x, na.rm = na.rm)
  
  # 4. Cálculo da média:
  media <- mean(x, na.rm = na.rm)
  
  # 5. Cálculo final do CV:
  (desvio / media) * 100
}

# Exemplo de uso com dados contendo NA
dados_com_na <- c(dados, NA)

# Retorna NA (comportamento conservador)
cv(dados_com_na)
[1] NA
# Ignora NA e calcula com os demais valores
cv(dados_com_na, na.rm = TRUE)  
[1] 38.400423
  • Nota sobre na.rm = FALSE: Seguimos o padrão do R para forçar tratamento explícito de valores ausentes. Use na.rm = TRUE quando apropriado para seu contexto.

  • Interpretação: CV de 38.4% indica a variabilidade relativa à média.

Coeficiente de Variação em R

Código Comentado

cv <- function(x, na.rm = FALSE) {
  # COMANDO 1: TRATAMENTO DE VALORES AUSENTES (NAs)
  # ------------------------------------------------------------
  # Este comando faz duas coisas importantes:
  # 1. Verifica se o parâmetro na.rm está TRUE (usuário quer remover NAs)
  # 2. Se sim, filtra o vetor x mantendo apenas valores não-NA
  # 
  # Como funciona:
  # - !is.na(x) cria um vetor lógico (TRUE/FALSE) indicando valores não-NA
  # - x[!is.na(x)] usa esse vetor para filtrar apenas os valores TRUE
  # - O resultado é atribuído de volta a x, substituindo o vetor original
  # 
  # Exemplo:
  # Se x = c(1, 2, NA, 4) e na.rm = TRUE:
  # !is.na(x) → c(TRUE, TRUE, FALSE, TRUE)
  # x[!is.na(x)] → c(1, 2, 4)
  if(na.rm) x <- x[!is.na(x)]
  
  # COMANDO 2: VERIFICAÇÃO DE VETOR VAZIO
  # ------------------------------------------------------------
  # Este comando previne erros quando:
  # - O vetor original já estava vazio, OU
  # - Todos os valores eram NA e na.rm = TRUE
  #
  # Por que é importante:
  # - sd() e mean() dariam erro com vetores vazios
  # - Melhor retornar NA (valor ausente) que causar erro na função
  #
  # length(x) conta quantos elementos tem no vetor:
  # - Se for 0, a condição é TRUE e retorna NA
  # - Se for >0, continua o cálculo normalmente
  if(length(x) == 0) return(NA)
  
  # 3. Cálculo do desvio padrão:
  desvio <- sd(x, na.rm = na.rm)
  
  # 4. Cálculo da média:
  media <- mean(x, na.rm = na.rm)
  
  # 5. Cálculo final do CV:
  (desvio / media) * 100
}

Exercício

Análise da Variabilidade

Uma empresa de tecnologia está analisando o desempenho (em R$ mil) de duas equipes de vendas em 2023:

# Metodologia tradicional de vendas
equipe_A <- c(85, 92, 78, 110, 95, 105, 115, 98, 102, 250)

# Nova metodologia de vendas
equipe_B <- c(120, 115, 125, 118, 122, 130, 115, 120, 125, 122) 
  1. Calcule para cada equipe:

    • Variância e desvio-padrão
    • Amplitude e IQR
    • Coeficiente de variação
  2. Compare os resultados e responda:

    • Qual equipe tem desempenho mais consistente?
    • O outlier na Equipe A afeta quais medidas?
    • Se você fosse o gestor, qual métrica usaria para avaliar a equipe mais estável?

Contexto: A Equipe B utiliza uma nova metodologia de vendas

Solução do Exercício

Resultados

  • Equipe A:
# cria df para exibir resultados
data.frame(
  Medida = c("Variância", "Desvio-Padrão", "Amplitude", "IQR", "CV"),
  Valor = c(round(var(equipe_A), 2), 
           round(sd(equipe_A), 2),
           diff(range(equipe_A)),
           IQR(equipe_A),
           paste0(round(cv(equipe_A), 2), "%"))
)
         Medida   Valor
1     Variância 2440.67
2 Desvio-Padrão    49.4
3     Amplitude     172
4           IQR      16
5            CV  43.72%
  • Equipe B:
# cria df para exibir resultados
data.frame(
  Medida = c("Variância", "Desvio-Padrão", "Amplitude", "IQR", "CV"),
  Valor = c(round(var(equipe_B), 2), 
           round(sd(equipe_B), 2),
           diff(range(equipe_B)),
           IQR(equipe_B),
           paste0(round(cv(equipe_B), 2), "%"))
)
         Medida Valor
1     Variância 21.96
2 Desvio-Padrão  4.69
3     Amplitude    15
4           IQR  5.75
5            CV 3.87%

Análise Gerencial:

  1. Consistência: Equipe B tem menor CV (3.87% vs 43.72%), indicando maior estabilidade no desempenho.

  2. Impacto do Outlier: Afeta fortemente a variância, o desvio-padrão,
    a amplitude e o cv, tornando essas medidas menos representativas.

  3. Métrica Recomendada: IQR, por ser robusta a valores extremos.

  4. Tomada de Decisão: A nova metodologia (Equipe B) produz resultados mais previsíveis.

Medidas de Correlação

Relacionamentos entre Variáveis

Por que estudar correlação?

No mundo dos negócios, raramente as variáveis operam isoladamente:

  • Vendas e investimento em marketing
  • Satisfação do cliente e tempo de resposta ao atendimento
  • Produtividade e horas de treinamento
  • Inadimplência e score de crédito

Questões fundamentais:

  1. Existe relação entre estas variáveis?
  2. Qual a intensidade desta relação?
  3. Em que direção se movem (mesma direção ou opostas)?

A análise de correlação nos ajuda a quantificar e entender estas relações, sendo fundamental para:

  • Tomada de decisões baseadas em dados
  • Identificação de padrões e tendências
  • Construção de modelos preditivos
  • Gestão de riscos

Covariância e Correlação

O que são Covariância e Correlação?

  • A covariância mede a relação linear entre duas variáveis, indicando
    a direção da relação linear entre duas variáveis.

  • A correlação é uma medida padronizada da covariância, variando de -1 a 1, e indica a direção e a força da relação linear entre duas variáveis.

  • Ambas são usadas para entender como duas variáveis covariam

  • Estimador da covariância

\[ s_{xy} = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y}) \]

  • Estimador da correlação de Pearson

\[ r_{xy} = \frac{s_{xy}}{s_x s_y} = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2 \sum_{i=1}^{n}(y_i - \bar{y})^2}} \]

Sendo:

  • \(s_{xy}\): a covariância entre x e y
  • \(s_x\), \(s_y\): os desvios-padrão
  • \(\bar{x}\), \(\bar{y}\): as médias amostrais
  • \(n\): o tamanho da amostra

Covariância e Correlação em R

Exemplo básico

# Dados de exemplo: Investimento em Marketing vs Vendas
marketing <- c(10, 15, 12, 8, 20)
vendas <- c(25, 30, 28, 20, 40)

# Covariância
cov(marketing, vendas)
[1] 34.25
# Correlação
cor(marketing, vendas)
[1] 0.98641338
# Matriz de correlação para múltiplas variáveis
dados <- data.frame(marketing, vendas)
cor(dados)
           marketing     vendas
marketing 1.00000000 0.98641338
vendas    0.98641338 1.00000000

Exercício 1:

Análise de Performance

Uma empresa de consultoria deseja entender a relação entre diferentes métricas de performance de seus consultores. Os dados abaixo representam 12 consultores selecionados aleatoriamente:

# Dados reais de uma empresa de consultoria
dados_consultoria <- data.frame(
  consultor = 1:12,
  horas_treinamento = c(20, 35, 15, 40, 25, 10, 30, 45, 18, 28, 38, 22),
  satisfacao_cliente = c(7.2, 8.5, 6.8, 9.1, 7.8, 6.2, 8.2, 9.3, 7.0, 8.0, 8.8, 7.5),
  faturamento_mensal = c(45, 68, 38, 85, 52, 32, 62, 92, 42, 58, 75, 48)
)

# Exibir primeiras linhas
head(dados_consultoria, 5)
  consultor horas_treinamento satisfacao_cliente faturamento_mensal
1         1                20                7.2                 45
2         2                35                8.5                 68
3         3                15                6.8                 38
4         4                40                9.1                 85
5         5                25                7.8                 52

Tarefas:

  1. Crie uma matriz de gráficos de dispersão (scatterplot matrix) para visualizar todas as relações simultaneamente.

  2. Calcule e interprete a matriz de correlação completa.

  3. Identifique qual relação é mais forte e discuta as implicações gerenciais.

  4. A empresa planeja investir R$ 50.000 em treinamento. Com base na análise, este investimento se justifica? Explique.

  5. Reflexão crítica: Se encontrarmos alta correlação entre treinamento e faturamento, podemos afirmar que treinar mais causará maior faturamento? Justifique.

Solução do Exercício

1. Visualização das Relações

# Matriz de gráficos de dispersão
pairs(dados_consultoria[, -1], 
      main = "Matriz de Dispersão - Métricas de Performance",
      pch = 19, 
      col = "darkblue",
      cex = 1.2)

2. Matriz de Correlação

# Calcular correlações
matriz_cor <- cor(dados_consultoria[, -1])
round(matriz_cor, 3)
                   horas_treinamento satisfacao_cliente faturamento_mensal
horas_treinamento              1.000              0.995              0.991
satisfacao_cliente             0.995              1.000              0.982
faturamento_mensal             0.991              0.982              1.000

3. Análise das Relações

# Correlação entre horas de treinamento e faturamento
cor_treinamento_faturamento <- cor(dados_consultoria$horas_treinamento, 
                                   dados_consultoria$faturamento_mensal)
# exibir correlação
cor_treinamento_faturamento
[1] 0.99069893
# Correlação entre horas de treinamento e satisfação do cliente
cor_treinamento_satisfacao <- cor(dados_consultoria$horas_treinamento, 
                                  dados_consultoria$satisfacao_cliente)
# exibir correlação
cor_treinamento_satisfacao 
[1] 0.99536216

Interpretação:

  • Ambas as correlações são positivas e fortes:

    • 0.991 entre horas de treinamento e faturamento mensal

    • 0.995 entre horas de treinamento e satisfação do cliente

  • Correlação muito forte e positiva: consultores com mais horas de treinamento tendem a gerar maior faturamento

  • A satisfação do cliente também está positivamente correlacionada com ambas as métricas

4. Decisão de Investimento

Com base na correlação de 0.991:

  • Recomendação: O investimento em treinamento se justifica, pois consultores mais treinados tendem a gerar maior faturamento e satisfação do cliente, pelas estimativas dos coeficientes de correlação.

5. Reflexão sobre Causalidade

ATENÇÃO: Correlação ≠ Causalidade!

Possíveis explicações alternativas:

  1. Seleção: Consultores mais motivados buscam mais treinamento E trabalham mais

  2. Confundimento: Consultores seniores têm acesso a mais treinamento E clientes maiores

  3. Causalidade reversa: Alto faturamento permite investir em mais treinamento

Conclusão: Para estabelecer causalidade, seria necessário um experimento controlado ou análise mais sofisticada.

Bibliografia Recomendada

Análise Exploratória de Dados

Atualizando os Repositórios

Instruções

  1. No terminal do RStudio, verifique quais arquivos/pastas foram modificados ou criados com:
git status
  1. Você pode adicionar todos os arquivos de uma vez com:
git add .
  1. Execute git status novamente para confirmar que todos os arquivos foram adicionados (aparecerão em verde sob “Changes to be committed”):
git status
  1. Se tudo estiver em verde, faça um commit com uma mensagem descritiva:
git commit -m "atualizacoes aula 19"
  1. Se algum arquivo ou pasta ainda aparecer em vermelho após o segundo git status, adicione as pastas/arquivos um por um:
git add relatorios/04-relatorio/04-relatorio.qmd
  1. Execute git status novamente e faça o commit quando todos os arquivos estiverem em verde:
git commit -m "atualizacoes aula 19"
  1. Envie o repositório local atualizado para o GitHub:
git push origin main

Referências