¨Modelos de regresión: Regresión múltiple lineal

Temperatura máxima en función de la humedad y la energía solar

Cargamos las librería

library(PASWR)
## Loading required package: lattice
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
library(readr)
library(scatterplot3d)

Carga los datos (Conjunto de datos)

setwd("/cloud/project")
read_csv("weatherdataANTISANA.csv")
## Rows: 366 Columns: 10
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Date
## dbl (9): Longitude, Latitude, Elevation, Max Temperature, Min Temperature, P...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## # A tibble: 366 × 10
##    Date       Longitude Latitude Elevation `Max Temperature` `Min Temperature`
##    <chr>          <dbl>    <dbl>     <dbl>             <dbl>             <dbl>
##  1 01/01/2012     -78.1   -0.468      4048              16.1              6.91
##  2 01/02/2012     -78.1   -0.468      4048              15.5              9.23
##  3 01/03/2012     -78.1   -0.468      4048              11.5              8.69
##  4 01/04/2012     -78.1   -0.468      4048              12.0              9.53
##  5 01/05/2012     -78.1   -0.468      4048              11.7              7.90
##  6 01/06/2012     -78.1   -0.468      4048              12.1              7.84
##  7 01/07/2012     -78.1   -0.468      4048              13.1              6.39
##  8 01/08/2012     -78.1   -0.468      4048              11.5              9.76
##  9 01/09/2012     -78.1   -0.468      4048              12.9             10.1 
## 10 01/10/2012     -78.1   -0.468      4048              13.4              8.41
## # ℹ 356 more rows
## # ℹ 4 more variables: Precipitation <dbl>, Wind <dbl>,
## #   `Relative Humidity` <dbl>, Solar <dbl>
datos3 <- read.csv("weatherdataANTISANA.csv", header = T, sep = ",", dec = ".")

Limpiamos los datos

# Extraemos las variables
TemperaturaMax<-datos3[,5]
TemperaturaMin<-datos3[,6]
Precipitacion<-datos3[,7]
viento<-datos3[,8]
Humedad<-datos3[,9]
Solar<-datos3[,10]

1) Identificamos la variable dependiente y la independiente y relizamos diagrama de disperción.

# Definir variables
#  tripleta de valores
y<-TemperaturaMax
x1<-Humedad
x2<-Solar

# Gráfico 3D
grafico <- scatterplot3d(x1, x2, y,angle = 265,
                         main = "Grafica N° 10.1:Temperatura máxima en relación a la humedad y  \nla energía solar",
                         xlab = "Humedad %",ylab = "Temperatura máxima (°C)",zlab = "Energía solar (j/m)",color = "red", pch = 20)

2)Conjeturamos el modelo de regresión en este caso es un plano en las tres dimensiones, asi que realizamos la regresión para obtener los coeficiente de la ecuación de tipo:

y=ax1+bx2+c

# Modelo de regresión
#Ajuste del modelo
RegresionMultiple <- lm(y ~ x1 + x2)
RegresionMultiple
## 
## Call:
## lm(formula = y ~ x1 + x2)
## 
## Coefficients:
## (Intercept)           x1           x2  
##      18.798       -7.128        0.230
plot.new()
tempmaxreg <- scatterplot3d(x1, x2, y,angle = 265,
                         main = "Grafica N° 10.2:Temperatura máxima en relación a la humedad y  \nla energía solar",
                         xlab = "Propuesta (ft)",ylab = "Elevación (ft)",zlab = "Profundidad perforada (ft)",color = "blue", pch = 20)

tempmaxreg$plane3d(RegresionMultiple,col="red")

# Resumen del RegresionMultiple

Determinamos los coeficientes

# Coeficientes del RegresionMultiple
a <- RegresionMultiple$coefficients[2]  # x1
b <- RegresionMultiple$coefficients[3]  # x2
c <- RegresionMultiple$coefficients[1]  # intercepto

# Mostrar ecuación
cat("Ecuación del RegresionMultiple:\n")
## Ecuación del RegresionMultiple:
cat(paste0("y = ", round(c, 2), " + ", round(a, 3), "*x1 + ", round(b, 3), "*x2\n"))
## y = 18.8 + -7.128*x1 + 0.23*x2

3) Test de bondad

# Evaluar bondad del RegresionMultiple
r1 <- summary(RegresionMultiple)$r.squared^0.5  # Correlación múltiple
r1
## [1] 0.9168526
r2 <- summary(RegresionMultiple)$r.squared     # R cuadrado
r2
## [1] 0.8406188
# Tabla resumen
Variables <- c("Humedad", "Solar", "Temperatura máxima")
Unidades <- c("%", "j/m", "°C")
Tipo <- c("Independiente", "Independiente", "Dependiente")
Test <- c(round(r1, 2), round(r1, 2), " ")
Correlación <- c(round(r2, 2), round(r2, 2), " ")

Tabla_resumen <- data.frame(Variables, Unidades, Tipo, Test, Correlación)
library(knitr)
kable(Tabla_resumen, format = "markdown", caption = "Tabla 10.1: Modelo de regresión con humedad y solar")
Tabla 10.1: Modelo de regresión con humedad y solar
Variables Unidades Tipo Test Correlación
Humedad % Independiente 0.92 0.84
Solar j/m Independiente 0.92 0.84
Temperatura máxima °C Dependiente

4)Restricciones: en este tipo de variables, el dominio de ambas es todos los reales positivos unidos al cero, por lo que no presenta restricciones.

5)Cálculo de probabilidades

¿Cuál será la temperatura máxima si la humedad relativa es 0.5% ft y la energía solar es de 15 j/m?

x1_nueva <- 0.5
x2_nueva <- 15
y_pred <- a * x1_nueva + b * x2_nueva + c
cat("\nTemperatura máxima estimada:", round(y_pred, 2), "°C\n")
## 
## Temperatura máxima estimada: 18.68 °C

CONCLUSIONES: Entre la humedad relativa(%), la energía solar (j/m) y la temperatura máxima (°C) existe una relación de tipo múltiple lineal y su ecuación es y = 18.8 - 7.128x1 + 0.23x2 , donde latemperatura máxima es mi variable dependiente, la humedad, energía solar, no presenta restricciones en el conjunto de los reales, y entonces, por ejemplo, si tenemos una humedad de 0.5 % y energía solar de 15 j/m, tendremos una temperatura máxima de 18.68 °C.

.