Primeira parte

Criação do dataset dos dados fornecidos, estatísticas descritivas e desvio padrão de cada variável

dados <- data.frame(
  Temperatura   = c(24, 27, 30, 31, 34, 35, 38, 40, 42, 45),
  Consumo       = c(80, 82, 84, 101, 110, 115, 140, 142, 156, 157),
  Custo_Energia = c(2490, 2550, 2610, 3170, 3890, 4290, 6390, 6441, 7155, 7206)
)

print(summary(dados))
##   Temperatura       Consumo       Custo_Energia 
##  Min.   :24.00   Min.   : 80.00   Min.   :2490  
##  1st Qu.:30.25   1st Qu.: 88.25   1st Qu.:2750  
##  Median :34.50   Median :112.50   Median :4090  
##  Mean   :34.60   Mean   :116.70   Mean   :4619  
##  3rd Qu.:39.50   3rd Qu.:141.50   3rd Qu.:6428  
##  Max.   :45.00   Max.   :157.00   Max.   :7206
print(sapply(dados, sd))
##   Temperatura       Consumo Custo_Energia 
##      6.736303     30.306032   1976.775028

Segunda Parte Matriz de correlação

matriz_cor <- cor(dados, method = "pearson")
print(round(matriz_cor, 4))
##               Temperatura Consumo Custo_Energia
## Temperatura        1.0000  0.9736        0.9561
## Consumo            0.9736  1.0000        0.9924
## Custo_Energia      0.9561  0.9924        1.0000
print(cor.test(dados$Temperatura, dados$Consumo))
## 
##  Pearson's product-moment correlation
## 
## data:  dados$Temperatura and dados$Consumo
## t = 12.058, df = 8, p-value = 2.067e-06
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8887223 0.9939319
## sample estimates:
##       cor 
## 0.9735732
print(cor.test(dados$Temperatura, dados$Custo_Energia))
## 
##  Pearson's product-moment correlation
## 
## data:  dados$Temperatura and dados$Custo_Energia
## t = 9.2307, df = 8, p-value = 1.538e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8203393 0.9898556
## sample estimates:
##       cor 
## 0.9561218
print(cor.test(dados$Consumo, dados$Custo_Energia))
## 
##  Pearson's product-moment correlation
## 
## data:  dados$Consumo and dados$Custo_Energia
## t = 22.871, df = 8, p-value = 1.416e-08
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.9671576 0.9982767
## sample estimates:
##       cor 
## 0.9924398

Visualizações primeiramente foi feito uma função para que o computador interprete quando possui uma correlação muito forte, forte, moderada, fraca ou muito fraca Após isso foi feito o mapa de calor e gráfico de dispersão para cada (Eles foram salvos em arquivos png, por isso não estará no algoritmo, mas, estará no relatório).

interpreta_r <- function(r) {
  r_abs <- abs(r)
  forca <- if (r_abs >= 0.9) "correlacao muito forte"
    else if (r_abs >= 0.7) "correlacao forte"
    else if (r_abs >= 0.5) "correlacao moderada"
    else if (r_abs >= 0.3) "correlacao fraca"
    else "correlacao muito fraca / ausente"
  sentido <- if (r > 0) "positiva" else "negativa"
  paste0(forca, " e ", sentido, " (r = ", round(r, 3), ")")
}

cat("Temperatura x Consumo:      ", interpreta_r(matriz_cor["Temperatura", "Consumo"]), "\n")
## Temperatura x Consumo:       correlacao muito forte e positiva (r = 0.974)
cat("Temperatura x Custo_Energia:", interpreta_r(matriz_cor["Temperatura", "Custo_Energia"]), "\n")
## Temperatura x Custo_Energia: correlacao muito forte e positiva (r = 0.956)
cat("Consumo x Custo_Energia:    ", interpreta_r(matriz_cor["Consumo", "Custo_Energia"]), "\n")
## Consumo x Custo_Energia:     correlacao muito forte e positiva (r = 0.992)
grafico_dispersao <- function() {
  pairs(dados,
        main = "Diagramas de dispersao entre as variaveis",
        pch = 19, col = "steelblue")
}
 
grafico_mapa_calor <- function() {
  cores <- colorRampPalette(c("firebrick", "white", "steelblue"))(200)
  image(1:ncol(matriz_cor), 1:ncol(matriz_cor), matriz_cor[, ncol(matriz_cor):1],
        col = cores, zlim = c(-1, 1), axes = FALSE, xlab = "", ylab = "",
        main = "Matriz de correlacao")
  axis(1, at = 1:ncol(matriz_cor), labels = colnames(matriz_cor), las = 2)
  axis(2, at = 1:ncol(matriz_cor), labels = rev(colnames(matriz_cor)), las = 2)
  for (i in 1:ncol(matriz_cor)) {
    for (j in 1:ncol(matriz_cor)) {
      valor <- matriz_cor[i, ncol(matriz_cor) - j + 1]
      text(j, i, round(valor, 2))
    }
  }
}

dev.new()
grafico_dispersao()
 
dev.new()
grafico_mapa_calor()
 
png("grafico_dispersao.png", width = 900, height = 900, res = 120)
grafico_dispersao()
invisible(dev.off())
 
png("mapa_correlacao.png", width = 700, height = 700, res = 120)
grafico_mapa_calor()
invisible(dev.off())
 
cat("\nGraficos exibidos na tela e tambem salvos em 'grafico_dispersao.png' e 'mapa_correlacao.png'.\n")
## 
## Graficos exibidos na tela e tambem salvos em 'grafico_dispersao.png' e 'mapa_correlacao.png'.