#===============================================================================# SCRIPT DE ESTATÍSTICA BÁSICA NO R - PARA ESTATÍSTICA BÁSICA# Aula introdutória com explicações de cada comando#===============================================================================
#-------------------------------------------------------------------------------# PARTE 1: INTRODUÇÃO AO R - OBJETOS E OPERAÇÕES BÁSICAS#-------------------------------------------------------------------------------
# 1. Criando objetos (variáveis) no R# O símbolo '<-' é o operador de atribuição (atribui o valor da direita à esquerda)x <- 10 # Atribui o valor 10 à variável xy <- 5 # Atribui o valor 5 à variável y
# 2. Operações matemáticas básicassoma <- x + y # Adição: 10 + 5 = 15subtracao <- x - y # Subtração: 10 - 5 = 5multiplicacao <- x * y # Multiplicação: 10 * 5 = 50divisao <- x / y # Divisão: 10 / 5 = 2potencia <- x^2 # Potência: 10² = 100
# Mostrar os resultados (print é opcional - o R mostra automaticamente)somasubtracao
#-------------------------------------------------------------------------------# PARTE 2: CREANDO VETORES (DADOS AMOSTRALES)#-------------------------------------------------------------------------------
# 1. Função c() combina valores em um vetor# Exemplo: Tensão elétrica medida em 10 momentos (em Volts)tensao <- c(220.5, 219.8, 221.2, 220.0, 219.5, 220.8, 221.0, 220.3, 219.9, 220.7)
# 2. Another exemplo: Corrente elétrica (em Ampères)corrente <- c(5.2, 5.1, 5.3, 5.0, 5.2, 5.1, 5.4, 5.0, 5.2, 5.1)
# 3. Visualizar o vetortensao # Mostra todos os valores da tensãocorrente # Mostra todos os valores da corrente
# 4. Acessando elementos específicos do vetor# Vetores no R começam no índice 1 (não 0 como em algumas linguagens)tensao[1] # Primeiro elemento: 220.5tensao[5] # Quinto elemento: 219.5tensao[1:3] # Primeiros 3 elementos: 220.5, 219.8, 221.2tensao[c(2,4,6)] # Elementos 2, 4 e 6
# 5. Função length() - retorna o número de elementos do vetorn <- length(tensao) # n = 10 (número de observações)n # Mostra o valor de n
#-------------------------------------------------------------------------------# PARTE 3: ESTATÍSTICAS DESCRITIVAS BÁSICAS#-------------------------------------------------------------------------------
# 1. Média aritmética (função mean())# Fórmula: x̄ = Σxᵢ / nmedia_tensao <- mean(tensao)media_tensao # Média da tensão ≈ 220.38 V
media_corrente <- mean(corrente)media_corrente # Média da corrente ≈ 5.16 A
# 2. Mediana (função median())# Valor central quando os dados são ordenadosmediana_tensao <- median(tensao)mediana_tensao # Mediana da tensão ≈ 220.4 V
# 3. Desvio padrão (função sd())# Fórmula: s = √[Σ(xᵢ - x̄)² / (n-1)]# Mede a dispersão dos dados em relação à médiadesvio_tensao <- sd(tensao)desvio_tensao # Desvio padrão ≈ 0.79 V
desvio_corrente <- sd(corrente)desvio_corrente # Desvio padrão ≈ 0.12 A
# 4. Variância (função var())# Fórmula: s² = [Σ(xᵢ - x̄)² / (n-1)]# Desvio padrão elevado ao quadradovar_tensao <- var(tensao)var_tensao # Variância ≈ 0.62 V²
# 5. Mínimo e Máximomin_tensao <- min(tensao) # Valor mínimo: 219.5 Vmax_tensao <- max(tensao) # Valor máximo: 221.2 Vmin_tensaomax_tensao
# 6. Função summary() - estatísticas descritivas completas# Retorna: mínimo, mediana, média, máximo, 1º quartil, 3º quartilsummary(tensao)summary(corrente)
# 7. Função range() - retorna mínimo e máximorange(tensao) # [219.5, 221.2]
#-------------------------------------------------------------------------------# PARTE 4: MEDIAS DE DISPERSÃO E COEFICIENTE DE VARIAÇÃO#-------------------------------------------------------------------------------
# 1. Amplitude (diferença entre máximo e mínimo)amplitude <- max(tensao) - min(tensao)amplitude # 221.2 - 219.5 = 1.7 V
# 2. Coeficiente de Variação (CV)# Fórmula: CV = (s / x̄) × 100%# Mede a dispersão relativa em porcentagemcv_tensao <- (desvio_tensao / media_tensao) * 100cv_tensao # CV ≈ 0.36% (baixa variação)
cv_corrente <- (desvio_corrente / media_corrente) * 100cv_corrente # CV ≈ 2.33%
# Interpretação: CV < 5% considera baixa variabilidade
#-------------------------------------------------------------------------------# PARTE 5: QUIANTILES E QUIARTILS#-------------------------------------------------------------------------------
# 1. Função quantile() - calcula quantis# probs = probs (probabilidades) desejadasquartis <- quantile(tensao, probs = c(0.25, 0.5, 0.75))quartis # Mostra Q1, mediana (Q2), Q3
# 2. Acessando quartis específicosq1 <- quantile(tensao, probs = 0.25) # 1º quartil (25%)q2 <- quantile(tensao, probs = 0.50) # Mediana (50%)q3 <- quantile(tensao, probs = 0.75) # 3º quartil (75%)
# 3. Distância Interquartil (DIQ ou IQR)# Fórmula: DIQ = Q3 - Q1diq <- q3 - q1diq # Medida de dispersão robusta
#-------------------------------------------------------------------------------# PARTE 6: ORDENANDO E FILTRANDO DADOS#-------------------------------------------------------------------------------
# 1. Função sort() - ordena os dadostensao_ordenada <- sort(tensao)tensao_ordenada # Ordena da menor para a maior
# 2. Função order() - retorna índices de ordenaçãoindices <- order(tensao)indices # Posições ordenadas
# 3. Filtrando dados com operadores condicionais# Exemplo: valores acima de 220 Vtensao_acima_220 <- tensao[tensao > 220]tensao_acima_220 # Valores: 220.5, 221.2, 220.8, 221.0, 220.3, 220.7
# Exemplo: valores entre 219.8 e 220.5tensao_entre <- tensao[tensao >= 219.8 & tensao <= 220.5]tensao_entre
# 4. Função which() - retorna índices que satisfazem condiçãoindices_acima_220 <- which(tensao > 220)indices_acima_220 # Índices: 1, 3, 6, 7, 8, 10
#-------------------------------------------------------------------------------# PARTE 7: GERAÇÃO DE DADOS SIMULADOS (DISTRIBUIÇÕES)#-------------------------------------------------------------------------------
# 1. Distribuição Normal (útil para erros de medição)# função rnorm(n, mean, sd) - gera n valores aleatóriosset.seed(123) # Fixa seed para resultados reproduzíveiserros_medida <- rnorm(n = 50, mean = 0, sd = 0.5)erros_medida # 50 erros de medição simulados
mean(erros_medida) # Média ≈ 0sd(erros_medida) # Desvio ≈ 0.5
# 2. Distribuição Normal para tensões reaistensao_simulada <- rnorm(n = 100, mean = 220, sd = 1)summary(tensao_simulada)
# 3. Distribuição Uniforme (para variações aleatórias)variacao <- runif(n = 30, min = -1, max = 1)variacao
#-------------------------------------------------------------------------------# PARTE 8: CRIANDO GRÁFICOS BÁSICOS#-------------------------------------------------------------------------------
# 1. Histograma (função hist())# Mostra distribuição de frequências dos dadoshist(tensao, main = "Histograma da Tensão Elétrica", # Título xlab = "Tensão (V)", # Label do x ylab = "Frequência", # Label do y col = "lightblue", # Cor das barras border = "black", # Cor das bordas breaks = 5) # Número de classes
# 2. Gráfico de pontos (função plot())plot(tensao, main = "Tensão Elétrica ao Longo do Tempo", xlab = "Momento da Medição", ylab = "Tensão (V)", type = "b", # "b" = pontos + linhas col = "blue", pch = 16, # Tipo de ponto (16 = círculo) ylim = c(219, 222)) # Limite do y
# 3. Gráfico de dispersão entre duas variáveisplot(tensao, corrente, main = "Relação Tensão vs Corrente", xlab = "Tensão (V)", ylab = "Corrente (A)", col = "red", pch = 16)
# 4. Boxplot (função boxplot())# Mostra mediana, quartis e outliersboxplot(tensao, main = "Boxplot da Tensão Elétrica", ylab = "Tensão (V)", col = "lightgreen")
# Boxplot comparativoboxplot(list(Tensão = tensao, Corrente = corrente * 40), # Multiplica para escala main = "Comparação Tensão e Corrente", ylab = "Valor", col = c("lightblue", "lightred"))
#-------------------------------------------------------------------------------# PARTE 9: TESTE DE HIPÓTESE (TESTE t DE STUDENT)#-------------------------------------------------------------------------------
# Exemplo: Testar se média da tensão é 220 V (valor nominal)
# 1. Definir hipóteses# H₀: μ = 220 V (média populacional é 220 V)# H₁: μ ≠ 220 V (média populacional não é 220 V)
mu0 <- 220 # Valor hipotético da médiaalpha <- 0.05 # Nível de significância (5%)
# 2. Função t.test() - realiza teste t de Studentresultado_teste <- t.test(tensao, mu = mu0)
# 3. Visualizar resultado completoresultado_teste
# 4. Acessando componentes específicosresultado_teste$statistic # Estatística tresultado_teste$p.value # Valor presultado_teste$conf.int # Intervalo de confiançaresultado_teste$estimate # Média estimada
# 5. Decisão do testeif (resultado_teste$p.value < alpha) { decisão <- "REJEITAR H₀"} else { decisão <- "NÃO REJEITAR H₀"}decisão
#-------------------------------------------------------------------------------# PARTE 10: CORRELAÇÃO ENTRE VARIÁVELES#-------------------------------------------------------------------------------
# 1. Coeficiente de correlação de Pearson (função cor())# Fórmula: r = Σ[(xᵢ-x̄)(yᵢ-ȳ)] / √[Σ(xᵢ-x̄)² × Σ(yᵢ-ȳ)²]correlacao <- cor(tensao, corrente)correlacao # Correlação ≈ valor próximo de 0
# Interpretação:# r > 0: correlação positiva# r < 0: correlação negativa# r = 0: sem correlação# |r| > 0.7: forte correlação
# 2. Teste de correlação (função cor.test())teste_cor <- cor.test(tensao, corrente)teste_cor # Mostra r e valor p
#-------------------------------------------------------------------------------# PARTE 11: FUNÇÕES CUSTOMIZADAS NO R#-------------------------------------------------------------------------------
# 1. Criando uma função própria# Exemplo: Função para calcular coeficiente de variaçãocoef_variação <- function(x) { # x: vetor de dados # Retorna: coeficiente de variação em porcentagem media <- mean(x) # Calcula média desvio <- sd(x) # Calcula desvio padrão cv <- (desvio / media) * 100 # Fórmula do CV return(cv) # Retorna o resultado}
# 2. Usando a função customizadacv_calculado <- coef_variação(tensao)cv_calculado # Mesmo resultado da Parte 4
cv_calculado_corrente <- coef_variação(corrente)cv_calculado_corrente
# 3. Outra função: intervalo de confiança para médiaintervalo_confianca <- function(x, alpha = 0.05) { # x: vetor de dados # alpha: nível de significância # Retorna: intervalo de confiança para média n <- length(x) # Número de observações media <- mean(x) # Média amostral desvio <- sd(x) # Desvio padrão df <- n - 1 # Graus de liberdade t_crit <- qt(1 - alpha/2, df) # Valor crítico t margem <- t_crit * (desvio / sqrt(n)) # Margem de erro ic_inferior <- media - margem # Limite inferior ic_superior <- media + margem # Limite superior return(list(inferior = ic_inferior, superior = ic_superior, media = media))}
# 4. Usando a funçãoic_tensao <- intervalo_confianca(tensao, alpha = 0.05)ic_tensao # IC 95% para média da tensão
#-------------------------------------------------------------------------------# PARTE 12: EXPORTANDO RESULTADOS E RELATÓRIOS#-------------------------------------------------------------------------------
# 1. Criando um objeto com todas as estatísticasestatisticas_completa <- data.frame( Variavel = "Tensão", Media = mean(tensao), Mediana = median(tensao), Desvio_Padrao = sd(tensao), Variância = var(tensao), Minimo = min(tensao), Maximo = max(tensao), CV_percent = coef_variação(tensao), n = length(tensao))
# 2. Visualizar tabelaestatisticas_completa
# 3. Salvar em arquivo CSV (opcional)# write.csv(estatisticas_completa, "estatisticas_tensao.csv", row.names = FALSE)
#-------------------------------------------------------------------------------# PARTE 13: EXERCÍCIO PRÁTICO - APLICAÇÃO EM ENGENHARIA ELÉTRICA#-------------------------------------------------------------------------------
# Exercício: Analisar dados de potência elétrica# Potência P = V × I (tensão × corrente)
potencia <- tensao * corrente # Calcula potência para cada medida
# Estatísticas da potênciasummary(potencia)mean(potencia) # Potência média ≈ 1143 Wsd(potencia) # Desvio padrão
# Gráfico de potênciaplot(potencia, main = "Potência Elétrica ao Longo do Tempo", xlab = "Momento", ylab = "Potência (W)", type = "b", col = "green", pch = 16)
# Teste de hipótese: potência média é 1150 W?t.test(potencia, mu = 1150)
#-------------------------------------------------------------------------------# PARTE 14: COMANDOS ÚTELES PARA CONSULTA RÁPIDA#-------------------------------------------------------------------------------
# help(funcao) ou ?funcao - ajuda sobre função# ?mean # Ajuda sobre média# ?t.test # Ajuda sobre teste t
# ls() - lista objetos no ambiente# rm(objeto) - remove objeto# rm(x, y) # Remove x e y
# cat() - concatena e mostra textocat("Média da tensão:", mean(tensao), "V\n")
# print() - mostra valorprint(paste("Coeficiente de variação:", cv_tensao, "%"))
#-------------------------------------------------------------------------------# FINAL DO SCRIPT#-------------------------------------------------------------------------------
cat("\n===========================================================================\n")cat("SCRIPT COMPLETO DE ESTATÍSTICA BÁSICA NO R - TERMINADO\n")cat("===========================================================================\n")cat("Conceitos abordados:\n")cat("✓ Objetos e vetores\n")cat("✓ Estatísticas descritivas (média, mediana, desvio, variância)\n")cat("✓ Quantiles e quartis\n")cat("✓ Coeficiente de variação\n")cat("✓ Gráficos (histograma, plot, boxplot)\n")cat("✓ Teste de hipótese (t-test)\n")cat("✓ Correlação\n")cat("✓ Funções customizadas\n")cat("===========================================================================\n")