Configuración y Carga
de Datos
##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: MARTIN SARMIENTO ####
### CARRERA: INGENIERÍA EN PETRÓLEOS #####
#### VARIABLE DIRECCIÓN DEL VIENTO PREDOMINANTE ####
## DATASET ##
setwd("~/R INFERENCIAL/DT_WIND")
# Cargar dataset
Datos <- read.csv("Dataset_Mundial_Final.csv", sep = ";", fileEncoding = "latin1")
## Estructura de los datos
str(Datos)
## 'data.frame': 58978 obs. of 29 variables:
## $ ï..OBJECTID : int 2 3 4 5 6 7 8 9 10 11 ...
## $ code : chr "00001-AFG-P" "00002-AFG-P" "00003-AFG-P" "00004-AFG-P" ...
## $ plant_name : chr "Badghis Solar Power Plant" "Balkh solar farm" "Behsood solar farm" "Dab Pal 4 solar farm" ...
## $ country : chr "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
## $ operational_status : chr "cancelled - inferred 4 y" "cancelled - inferred 4 y" "cancelled - inferred 4 y" "shelved - inferred 2 y" ...
## $ longitude : chr "62,874" "67,121" "70,413" "66,239" ...
## $ latitude : chr "35,078" "36,714" "34,407" "33,768" ...
## $ elevation : int 918 359 629 2288 1060 1060 1392 398 410 1012 ...
## $ area : chr "6,735" "10,718" "487,729" "111,801" ...
## $ size : chr "Small" "Small" "Small" "Small" ...
## $ slope : chr "7,375" "0,49" "1,099" "6,162" ...
## $ slope_type : chr "Moderado" "Plano o casi plano" "Plano o casi plano" "Moderado" ...
## $ curvature : chr "-0,024" "0" "0" "0,045" ...
## $ curvature_type : chr "Superficies cóncavas / Valles" "Superficies planas o intermedias" "Superficies planas o intermedias" "Superficies convexas / Crestas" ...
## $ aspect : chr "96,77" "358,452" "36,18" "305,766" ...
## $ aspect_type : chr "East" "North" "Northeast" "Northwest" ...
## $ dist_to_road : chr "7037,104" "92,748" "112,117" "1705,255" ...
## $ ambient_temperature : chr "14,402" "17,875" "21,315" "8,857" ...
## $ ghi : chr "5,824" "5,579" "5,805" "6,749" ...
## $ humidity : chr "47,743" "42,305" "36,396" "37,344" ...
## $ wind_speed : chr "0,039" "0,954" "0,234" "0,943" ...
## $ wind_direction : chr "187,481" "207,422" "255,601" "160,331" ...
## $ dt_wind : chr "South" "Southwest" "West" "South" ...
## $ solar_aptitude : chr "0,72" "0,635" "0,685" "0,659" ...
## $ solar_aptitude_rounded: int 7 6 7 7 8 8 8 6 6 4 ...
## $ solar_aptittude_class : chr "Alta" "Alta" "Alta" "Alta" ...
## $ capacity : chr "32" "40" "60" "3000" ...
## $ optimal_tilt : chr "30" "31" "31,063" "33" ...
## $ pv_potential : chr "4,613" "4,408" "4,572" "5,424" ...
# Cargamos las librerias
library(dplyr)
##
## 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
library(ggplot2)
library(gt)
Agrupación 1 (Sector
Noreste)
# Definimos niveles
niveles_Binom1 <- c("Noreste (NE)", "Norte (N)", "Este (E)")
# Extracción
Datos_G1_Binom <- subset(Datos, grupo %in% niveles_Binom1)
Datos_G1_Binom$grupo <- factor(Datos_G1_Binom$grupo,
levels = niveles_Binom1, ordered = TRUE)
# Crear Tabla de Frecuencias y Mapeo
TDF_G1_Binom <- as.data.frame(table(Datos_G1_Binom$grupo))
colnames(TDF_G1_Binom) <- c("Velocidad", "ni")
# Mapeo
TDF_G1_Binom$X <- 0:(nrow(TDF_G1_Binom) - 1)
TDF_G1_Binom$hi <- TDF_G1_Binom$ni / sum(TDF_G1_Binom$ni)
# Visualización del Mapeo
TDF_G1_Binom %>%
select(Velocidad, X, ni, hi) %>%
gt() %>%
tab_header(
title = md("**Tabla N°2 de Distribución de Frecuencias de la Dirección del Viento Predominante de las Plantas Solares - Mapeado**")) %>%
tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
cols_label(
Velocidad = "Dirección del Viento Predominante",
X = "Valor Asignado",
ni = "Frecuencia (ni)",
hi = "Porcentaje (hi%)"
) %>%
fmt_number(columns = hi, decimals = 4) %>%
tab_options(
heading.title.font.size = px(16),
heading.subtitle.font.size = px(14),
column_labels.background.color = "#F0F0F0"
)
| Tabla N°2 de Distribución de Frecuencias de la Dirección del Viento Predominante de las Plantas Solares - Mapeado |
| Dirección del Viento Predominante |
Valor Asignado |
Frecuencia (ni) |
Porcentaje (hi%) |
| Noreste (NE) |
0 |
160 |
0.0190 |
| Norte (N) |
1 |
153 |
0.0181 |
| Este (E) |
2 |
8118 |
0.9629 |
| Autor: Martin Sarmiento |
Conjentura del Modelo
(Binomial)
# Usamos la columna X que acabamos de Mapear
n_total_Binom1 <- sum(TDF_G1_Binom$ni)
# Parámetros Binomiales
size_binom1 <- nrow(TDF_G1_Binom) - 1
media_G1 <- sum(TDF_G1_Binom$X * TDF_G1_Binom$ni) / n_total_Binom1
prob_p1 <- media_G1 / size_binom1
# Probabilidades Teóricas
P_Binom_B <- dbinom(TDF_G1_Binom$X, size = size_binom1, prob = prob_p1)
P_Binom_B <- P_Binom_B / sum(P_Binom_B)
# Gráfico
par(mar = c(8, 4, 4, 2))
barplot(rbind(TDF_G1_Binom$hi, P_Binom_B),
beside = TRUE,
main = "Gráfica N°2: Comparado de lo Observado frente a lo Esperado de la Dirección del Viento Predominante de las Plantas Solares",
ylab = "Porcentaje (%)",
names.arg = TDF_G1_Binom$Velocidad,
col = c("#FFB6C1", "#CD2990"),
legend.text = c("Observado", "Esperado"),
args.legend = list(x = "topright"),
las = 2,
cex.names = 0.8,
cex.main = 0.7,
ylim = c(0, 1))
mtext("Dirección del Viento Predominante", side = 1, line = 6)

Test de Pearson
# Definir Frecuencia Observada y Esperada
Fo_B <- TDF_G1_Binom$hi
Fe_B <- P_Binom_B
# Gráfico de Correlación
plot(Fo_B, Fe_B,
main = "Gráfica N°3: Correlación del Modelo Observado y Esperado de la Dirección del Viento Predominante de las Plantas Solares",
cex.main = 0.7,
xlab = "Frecuencia Observada",
ylab = "Frecuencia Esperada",
pch = 19, col = "#8B1C62")
abline(lm(Fe_B ~ Fo_B), col = "red", lwd = 2)

# Cálculo del coeficiente
Correlacion_B <- cor(Fo_B, Fe_B) * 100
Correlacion_B
## [1] 99.86757
Test de
Chi-cuadrado
# Cálculo de Chi-cuadrado
x2_B <- sum(((Fo_B - Fe_B)^2) / Fe_B)
# Grados de libertad (k - 1)
gl_B <- length(Fo_B) - 1
# Valor crítico
vc_B <- qchisq(0.95, gl_B)
# Mostrar resultados
x2_B
## [1] 0.4451522
## [1] 5.991465
# Validación lógica
x2_B < vc_B
## [1] TRUE
Tabla Resumen del
Test
# Crear data frame resumen
tabla_resumen_B <- data.frame(
Variable = "Sector Noreste",
Pearson = round(Correlacion_B, 2),
Chi2 = round(x2_B, 4),
Umbral = round(vc_B, 2)
)
# Visualizar con GT
tabla_resumen_B %>%
gt() %>%
cols_label(
Variable = ("Variable"),
Pearson = "Test Pearson (%)",
Chi2 = ("Chi Cuadrado"),
Umbral = "Umbral de Aceptación"
) %>%
tab_header(
title = md("**Tabla N°3 Resumen del Test de Bondad al Modelo de Probabilidad**")) %>%
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°3 Resumen del Test de Bondad al Modelo de Probabilidad |
| Variable |
Test Pearson (%) |
Chi Cuadrado |
Umbral de Aceptación |
| Sector Noreste |
99.87 |
0.4452 |
5.99 |
| Autor: Martin Sarmiento |
Cálculo de
Probabilidades
¿Cuál es la probabilidad de seleccionar una planta solar cuya
dirección predominante sea el Noreste (NE)?
prob_ne <- dbinom(0, size = size_binom1, prob = prob_p1)
paste0("La probabilidad estimada para la dirección Noreste es de: ",
round(prob_ne * 100, 2), "%")
## [1] "La probabilidad estimada para la dirección Noreste es de: 0.08%"
Agrupación 2 (Sector
Sur-Oeste)
# Definimos niveles
niveles_G2_Geom <- c("Sureste (SE)", "Sur (S)", "Suroeste (SW)", "Oeste (W)", "Noroeste (NW)")
# Extracción
Datos_G2_Geom <- subset(Datos, grupo %in% niveles_G2_Geom)
Datos_G2_Geom$grupo <- factor(Datos_G2_Geom$grupo, levels = niveles_G2_Geom, ordered = TRUE)
# Crear Tabla de Frecuencias y Mapeo
TDF_G2_Geom <- as.data.frame(table(Datos_G2_Geom$grupo))
colnames(TDF_G2_Geom) <- c("Velocidad", "ni")
# Mapeo
TDF_G2_Geom$X <- 0:(nrow(TDF_G2_Geom) - 1)
TDF_G2_Geom$hi <- TDF_G2_Geom$ni / sum(TDF_G2_Geom$ni)
# Visualización del Mapeo
TDF_G2_Geom %>%
select(Velocidad, X, ni, hi) %>%
gt() %>%
tab_header(
title = md("**Tabla N°4 de Distribución de Frecuencias de la Dirección del Viento Predominante de las Plantas Solares - Mapeado**")) %>%
tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
cols_label(
Velocidad = "Dirección del Viento Predominante",
X = "Valor Asignado",
ni = "Frecuencia (ni)",
hi = "Porcentaje (hi%)"
) %>%
fmt_number(columns = hi, decimals = 4) %>%
tab_options(
heading.title.font.size = px(16),
heading.subtitle.font.size = px(14),
column_labels.background.color = "#F0F0F0"
)
| Tabla N°4 de Distribución de Frecuencias de la Dirección del Viento Predominante de las Plantas Solares - Mapeado |
| Dirección del Viento Predominante |
Valor Asignado |
Frecuencia (ni) |
Porcentaje (hi%) |
| Sureste (SE) |
0 |
10675 |
0.2112 |
| Sur (S) |
1 |
7327 |
0.1450 |
| Suroeste (SW) |
2 |
21042 |
0.4163 |
| Oeste (W) |
3 |
11472 |
0.2270 |
| Noroeste (NW) |
4 |
31 |
0.0006 |
| Autor: Martin Sarmiento |
Conjentura del Modelo
(Geométrico)
# Usamos la columna X que acabamos de mapear
n_total_G2_Geom <- sum(TDF_G2_Geom$ni)
# Parámetros Geométricos
media_G2_Geom <- sum(TDF_G2_Geom$X * TDF_G2_Geom$ni) / n_total_G2_Geom
prob_p2_Geom <- 1 / (media_G2_Geom + 1)
# Probabilidades Teóricas
P_Geom_G2 <- dgeom(TDF_G2_Geom$X, prob = prob_p2_Geom)
P_Geom_G2 <- P_Geom_G2 / sum(P_Geom_G2)
# Gráfico
par(mar = c(10, 4, 4, 2))
barplot(rbind(TDF_G2_Geom$hi, P_Geom_G2),
beside = TRUE,
main = "Gráfica N°4: Comparado de lo Observado frente a lo Esperado de la Dirección del Viento Predominante de las Plantas Solares",
ylab = "Porcentaje (%)",
names.arg = TDF_G2_Geom$Velocidad,
col = c("#FFB6C1", "#CD2990"),
legend.text = c("Observado", "Esperado"),
args.legend = list(x = "topright"),
las = 2,
cex.names = 0.8,
cex.main = 0.7,
ylim = c(0, 1))
mtext("Dirección del Viento Predominante", side = 1, line = 8)

Test de Pearson
# Definir Frecuencia Observada y Esperada
Fo_G2 <- TDF_G2_Geom$hi
Fe_G2 <- P_Geom_G2
# Gráfico de Correlación
plot(Fo_G2, Fe_G2,
main = "Gráfica N°5: Correlación del Modelo Observado y Esperado de la Dirección del Viento Predominante de las Plantas Solares",
cex.main = 0.7,
xlab = "Frecuencia Observada",
ylab = "Frecuencia Esperada",
pch = 19, col = "#8B1C62")
abline(lm(Fe_G2 ~ Fo_G2), col = "red", lwd = 2)

# Cálculo del coeficiente
Correlacion_G2 <- cor(Fo_G2, Fe_G2) * 100
Correlacion_G2
## [1] 18.26989
Test de
Chi-cuadrado
# Cálculo de Chi-cuadrado
x2_G2 <- sum(((Fo_G2 - Fe_G2)^2) / Fe_G2)
# Grados de libertad (k - 1)
gl_G2 <- length(Fo_G2) - 1
# Valor crítico
vc_G2 <- qchisq(0.95, gl_G2)
# Mostrar resultados
x2_G2
## [1] 0.7701436
## [1] 9.487729
# Validación lógica
x2_G2 < vc_G2
## [1] TRUE
Tabla Resumen del
Test
# Crear data frame resumen
tabla_resumen_G2 <- data.frame(
Variable = "Sector Sur-Oeste",
Pearson = round(Correlacion_G2, 2),
Chi2 = round(x2_G2, 4),
Umbral = round(vc_G2, 2)
)
# Visualizar con GT
tabla_resumen_G2 %>%
gt() %>%
cols_label(
Variable = ("Variable"),
Pearson = "Test Pearson (%)",
Chi2 = ("Chi Cuadrado"),
Umbral = "Umbral de Aceptación"
) %>%
tab_header(
title = md("**Tabla N°5 Resumen del Test de Bondad al Modelo de Probabilidad**")) %>%
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°5 Resumen del Test de Bondad al Modelo de Probabilidad |
| Variable |
Test Pearson (%) |
Chi Cuadrado |
Umbral de Aceptación |
| Sector Sur-Oeste |
18.27 |
0.7701 |
9.49 |
| Autor: Martin Sarmiento |
Cálculo de
Probabilidades
¿Cuál es la probabilidad estimada de que la dirección del viento
predominante sea Sureste (SE)?
prob_se <- dgeom(0, prob = prob_p2_Geom)
paste0("La probabilidad estimada para la dirección Sureste es de: ",
round(prob_se * 100, 2), "%")
## [1] "La probabilidad estimada para la dirección Sureste es de: 37.58%"
Conclusiones
El análisis probabilístico permitió modelar el comportamiento eólico
en los emplazamientos de las plantas solares a nivel mundial mediante un
Modelo Binomial para el Sector Noreste y un Modelo Geométrico para el
Sector Sur-Oeste. Los resultados muestran una marcada predominancia de
los vientos provenientes del Suroeste (SW) (35.68%) y del Oeste (W),
mientras que las direcciones del cuadrante norte presentan una
frecuencia de ocurrencia significativamente menor.
Las pruebas de bondad de ajuste arrojaron coeficientes de Pearson del
99.87% y 18.27% respectivamente. Si bien el segundo coeficiente indica
una correlación lineal baja debido a la alta concentración atípica en la
dirección Suroeste, las pruebas de Chi-cuadrado (\(0.4452\) y \(0.7701\)) se mantienen dentro de los
umbrales de aceptación (\(5.99\) y
\(9.49\)). Esto valida estadísticamente
los modelos para describir los patrones de circulación atmosférica y su
impacto en el diseño estructural de la infraestructura solar.