¨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")
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.
.