##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: MARTIN SARMIENTO ####
### CARRERA: INGENIERÍA EN PETRÓLEOS #####
#### MODELO DE REGRESIÓN LINEAL SIMPLE ####
## DATASET ##
setwd("~/R REGRESION/LINEAL")
# Cargar dataset
Datos <- read.csv("DataSet_prov.csv", sep = ";", fileEncoding = "latin1")
## Estructura de los datos
str(Datos)## 'data.frame': 5075 obs. of 30 variables:
## $ FID_ : int 0 2 3 4 5 6 10 11 12 13 ...
## $ OBJECTID : int 127 129 130 131 132 133 137 138 139 140 ...
## $ code : chr "00127-ARG-P" "00129-ARG-G" "00130-ARG-P" "00131-ARG-P" ...
## $ plant_name : chr "Aconcagua solar farm" "Altiplano 200 Solar Power Plant" "Altiplano 200 Solar Power Plant" "Anchoris solar farm" ...
## $ country : chr "Argentina" "Argentina" "Argentina" "Argentina" ...
## $ operational_status : chr "announced" "operating" "operating" "construction" ...
## $ longitude : chr "-68,8713" "-66,895798" "-66,926102" "-68,915001" ...
## $ latitude : chr "-32,998501" "-24,1392" "-24,073999" "-33,330101" ...
## $ elevation : int 929 4000 4000 937 865 858 570 1612 665 3989 ...
## $ area : chr "250,337006" "4397290" "5774,399902" "645,163025" ...
## $ size : chr "Small" "Big" "Small" "Small" ...
## $ slope : chr "0,574179" "1,60257" "6,24265" "0,902748" ...
## $ slope_type : chr "Plano o casi plano" "Plano o casi plano" "Moderado" "Plano o casi plano" ...
## $ curvature : chr "0,000795" "-0,002781" "-0,043699" "0,002781" ...
## $ curvature_type : chr "Superficies planas o intermedias" "Superficies planas o intermedias" "Superficies cóncavas / Valles" "Superficies planas o intermedias" ...
## $ aspect : chr "55,124672" "188,707367" "270,913513" "108,434952" ...
## $ aspect_type : chr "Northeast" "South" "West" "East" ...
## $ dist_to_road : chr "127,2827045" "56014,95403" "52696,78572" "335,9280031" ...
## $ ambient_temperature : chr "12,6" "6,8" "6,8" "13,1" ...
## $ ghi : chr "6,11" "8,012" "7,878" "6,119" ...
## $ humidity : chr "53,74" "53,74" "53,74" "53,74" ...
## $ wind_speed : chr "3,7789" "7,02062" "8,32836" "3,87037" ...
## $ wind_direction : chr "55,099998" "55,099998" "55,099998" "55,099998" ...
## $ dt_wind : chr "Northeast" "Northeast" "Northeast" "Northeast" ...
## $ solar_aptitude : chr "0,746197" "0,8" "0,726996" "0,595309" ...
## $ solar_aptitude_rounded: int 7 8 7 6 7 7 7 8 7 8 ...
## $ solar_aptittude_class : chr "Alta" "Alta" "Alta" "Media" ...
## $ capacity : chr "25" "101" "107" "180" ...
## $ optimal_tilt : int 31 26 26 31 33 30 31 29 31 27 ...
## $ pv_potential : chr "4,983" "6,389" "6,392" "4,969" ...
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Selección de variables
datos_filtrados <- Datos %>%
select(ghi, pv_potential) %>%
mutate(
ghi = as.numeric(gsub(",", ".", ghi)),
pv_potential = as.numeric(gsub(",", ".", pv_potential))
) %>%
filter(
!is.na(ghi),
!is.na(pv_potential),
ghi > 0,
pv_potential > 0
)
# Verificación de tipos
str(datos_filtrados)## 'data.frame': 5075 obs. of 2 variables:
## $ ghi : num 6.11 8.01 7.88 6.12 6.22 ...
## $ pv_potential: num 4.98 6.39 6.39 4.97 5 ...
# Eliminación de outliers (1% - 99%)
lim_x <- quantile(datos_filtrados$ghi, probs = c(0.01, 0.99), na.rm = TRUE)
lim_y <- quantile(datos_filtrados$pv_potential, probs = c(0.01, 0.99), na.rm = TRUE)
datos_limpios <- datos_filtrados %>%
filter(
ghi >= lim_x[1] & ghi <= lim_x[2],
pv_potential >= lim_y[1] & pv_potential <= lim_y[2]
)
x <- datos_limpios$ghi
y <- datos_limpios$pv_potentialplot(jitter(x), jitter(y),
main = "Gráfica N°1: Diagrama de dispersión del potencial fotovoltaico\n en función de la irradiancia global",
xlab = "Irradiancia Global (kWh/m²)",
ylab = "Potencial Fotovoltaico (kWh/kWp)",
col = rgb(0, 0, 1, alpha = 0.25),
pch = 20) **y = mx + b**
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.13036 -0.03820 -0.00664 0.02603 0.41608
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.284087 0.011207 25.35 <2e-16 ***
## x 0.735274 0.001899 387.27 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.05107 on 4956 degrees of freedom
## Multiple R-squared: 0.968, Adjusted R-squared: 0.968
## F-statistic: 1.5e+05 on 1 and 4956 DF, p-value: < 2.2e-16
plot(jitter(x), jitter(y),
main = "Gráfica N°2: Modelo de regresión lineal del potencial fotovoltaico",
xlab = "Irradiancia Global (kWh/m²)",
ylab = "Potencial Fotovoltaico (kWh/kWp)",
col = rgb(0, 0, 1, alpha = 0.25),
pch = 20)
abline(modelo_lineal, col = "red", lwd = 2)b <- coef(modelo_lineal)[1]
m <- coef(modelo_lineal)[2]
ecuacion <- paste0("y = ", round(m, 4), "x + ", round(b, 4))
ecuacion## [1] "y = 0.7353x + 0.2841"
tabla_resumen <- data.frame(
Variable = c("Irradiancia Global (kWh/m²)", "Potencial Fotovoltaico (kWh/kWp)"),
Tipo = c("Independiente", "Dependiente"),
Pearson = c("", round(r, 2)),
R2 = c("", round(r2, 2)),
Intercepto = c("", round(b, 2)),
Pendiente = c("", round(m, 4)),
Ecuación = c("", ecuacion)
)
tabla_resumen %>%
gt() %>%
tab_header(
title = md("**Tabla N°1: Resumen del Modelo de Regresión Lineal**")
) %>%
tab_source_note(
source_note = "Autor: Martin Sarmiento"
) %>%
cols_align(
align = "center",
everything()
) %>%
tab_options(
heading.title.font.size = px(16),
column_labels.background.color = "#F0F0F0"
)| Tabla N°1: Resumen del Modelo de Regresión Lineal | ||||||
| Variable | Tipo | Pearson | R2 | Intercepto | Pendiente | Ecuación |
|---|---|---|---|---|---|---|
| Irradiancia Global (kWh/m²) | Independiente | |||||
| Potencial Fotovoltaico (kWh/kWp) | Dependiente | 98.39 | 96.8 | 0.28 | 0.7353 | y = 0.7353x + 0.2841 |
| Autor: Martin Sarmiento | ||||||
¿Cuál sería el potencial fotovoltaico para una irradiancia global de 1800?
## x
## 1323.777
Entre la irradiancia global y el potencial fotovoltaico existe una relación de tipo lineal positiva, la cual puede representarse mediante el modelo y = mx + b. El coeficiente de correlación de Pearson indica una relación fuerte entre ambas variables, mientras que el coeficiente de determinación muestra que un alto porcentaje de la variabilidad del potencial fotovoltaico es explicado por la irradiancia global. Esto confirma que la irradiancia solar es un factor determinante en la generación de energía fotovoltaica, mientras que el porcentaje restante se debe a otros factores no considerados en el modelo.