Variable de Estudio: Temperatura Ambiente (°C).
Se determina que esta variable es Cuantitativa Continua. La temperatura ambiente condiciona directamente la eficiencia de los módulos fotovoltaicos. Debido a la complejidad de los regímenes climáticos mundiales, se ha detectado que la densidad de proyectos sigue cuatro fases diferenciadas. Se opta por una Estrategia Tetra-Híbrida:
Zona 1 (5°C a 11°C): Fase de Calentamiento Inicial (Log-Normal Reflexivo).
Zona 2 (11°C a 20°C): Fase de Transición Óptima (Log-Normal Reflexivo).
Zona 3 (20°C a 24°C): Meseta de Saturación (Modelo Uniforme).
Zona 4 (> 24°C): Régimen de Calor Extremo (Log-Normal Reflexivo).
# Carga del archivo original
Datos <- read.csv("Dataset_Mundial_Final.csv", sep = ";", dec = ",", fileEncoding = "latin1")
# --- CORRECCIÓN DE CONSISTENCIA ---
# 1. Extraer y convertir a numérico
temp_raw <- as.numeric(Datos$ambient_temperature)
# 2. Limpieza ÚNICA: Quitamos NAs y definimos el rango real de estudio (ejemplo 4 a 32°C)
# Esto garantiza que N sea constante en todo el reporte
temp_full <- na.omit(temp_raw)
temp_full <- temp_full[temp_full >= 4 & temp_full <= 32]
# 3. Definir N global
N <- length(temp_full)Se aplica la regla de Sturges con resolución ampliada para capturar los cambios de densidad en los cuatro regímenes térmicos.
# CÁLCULO LÍMITES ENTEROS
BASE <- 2
min_int <- floor(min(temp_full) / BASE) * BASE
max_int <- ceiling(max(temp_full) / BASE) * BASE
Amplitud_int <- 2
cortes_int <- seq(from = min_int, by = Amplitud_int, length.out = 20)
cortes_int <- cortes_int[cortes_int <= (max(temp_full) + Amplitud_int)]
ni_int <- as.vector(table(cut(temp_full, breaks = cortes_int, include.lowest = TRUE, right = FALSE)))
hi_int <- (ni_int / N) * 100
TDF_Enteros <- data.frame(
Li = cortes_int[1:(length(cortes_int)-1)], Ls = cortes_int[2:length(cortes_int)],
MC = (cortes_int[1:(length(cortes_int)-1)] + cortes_int[2:length(cortes_int)]) / 2,
ni = ni_int, hi = hi_int,
Ni_asc = cumsum(ni_int), Ni_desc = rev(cumsum(rev(ni_int))),
Hi_asc = cumsum(hi_int), Hi_desc = rev(cumsum(rev(hi_int)))
)
TDF_Enteros %>%
mutate(across(everything(), ~as.character(round(as.numeric(.), 2)))) %>%
rbind(c("TOTAL", "-", "-", N, "100", "-", "-", "-", "-")) %>%
gt() %>%
tab_header(title = md("**Tabla N°1: Distribución de Frecuencias de Temperatura Ambiente (°C)**")) %>%
tab_source_note(source_note = "Autor: Carlos Ramirez") %>%
cols_label(Li = "Lim. Inf", Ls = "Lim. Sup", MC = "Marca Clase", ni = "ni", hi = "hi (%)") %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(column_labels.background.color = "#F0F0F0")| Tabla N°1: Distribución de Frecuencias de Temperatura Ambiente (°C) | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni_asc | Ni_desc | Hi_asc | Hi_desc |
|---|---|---|---|---|---|---|---|---|
| 4 | 6 | 5 | 824 | 1,41 | 824 | 58334 | 1,41 | 100 |
| 6 | 8 | 7 | 2334 | 4 | 3158 | 57510 | 5,41 | 98,59 |
| 8 | 10 | 9 | 9579 | 16,42 | 12737 | 55176 | 21,83 | 94,59 |
| 10 | 12 | 11 | 9754 | 16,72 | 22491 | 45597 | 38,56 | 78,17 |
| 12 | 14 | 13 | 7471 | 12,81 | 29962 | 35843 | 51,36 | 61,44 |
| 14 | 16 | 15 | 8676 | 14,87 | 38638 | 28372 | 66,24 | 48,64 |
| 16 | 18 | 17 | 6859 | 11,76 | 45497 | 19696 | 77,99 | 33,76 |
| 18 | 20 | 19 | 2885 | 4,95 | 48382 | 12837 | 82,94 | 22,01 |
| 20 | 22 | 21 | 1590 | 2,73 | 49972 | 9952 | 85,67 | 17,06 |
| 22 | 24 | 23 | 1725 | 2,96 | 51697 | 8362 | 88,62 | 14,33 |
| 24 | 26 | 25 | 2612 | 4,48 | 54309 | 6637 | 93,1 | 11,38 |
| 26 | 28 | 27 | 3492 | 5,99 | 57801 | 4025 | 99,09 | 6,9 |
| 28 | 30 | 29 | 527 | 0,9 | 58328 | 533 | 99,99 | 0,91 |
| 30 | 32 | 31 | 6 | 0,01 | 58334 | 6 | 100 | 0,01 |
| TOTAL | - | - | 58334 | 100 | - | - | - | - |
| Autor: Carlos Ramirez | ||||||||
El histograma permite visualizar la transición entre las etapas de calentamiento y saturación térmica.
# 1. CÁLCULO DEL OBJETO h_temp (Esto evita el error de objeto no encontrado)
k_sug <- floor(1 + 3.322 * log10(N))
h_temp <- hist(temp_full, breaks = k_sug, plot = FALSE)
h_temp$counts <- (h_temp$counts / N) * 100
# 2. Parámetros de configuración de márgenes
par(mar = c(6, 6, 5, 2))
# 3. Generación del gráfico con título reducido
plot(h_temp,
main = "Gráfica N°1: Distribución de Cantidad de Plantas Solares por Temperatura",
cex.main = 0.85,
xlab = "",
ylab = "Frecuencia Relativa (%)",
col = "#EE5C42",
border = "black",
axes = FALSE)
# 4. Ejes y rejilla técnica
axis(2, las = 2)
axis(1, at = seq(min(cortes_int), max(cortes_int), 5))
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
# 5. Líneas divisorias de zonas térmicas
abline(v = c(11, 20, 24), col = "#2E4053", lwd = 2, lty = 2)
# 6. Etiquetas y autoría
mtext("Temperatura Ambiente (ºC)", side = 1, line = 3, cex = 1)
mtext("Autor: Carlos Ramirez", side = 1, line = 4.5, adj = 1, cex = 0.7, font = 3)
# Línea base del eje X
abline(h = 0, col = "black", lwd = 1.2)Debido a la variabilidad climática, se divide la muestra en cuatro zonas operativas para garantizar un ajuste técnico superior.
# Separación de zonas (Uso de temp_full corregido)
z1 <- temp_full[temp_full >= 5 & temp_full < 11]
z2 <- temp_full[temp_full >= 11 & temp_full < 20]
z3 <- temp_full[temp_full >= 20 & temp_full < 24]
z4 <- temp_full[temp_full >= 24]
# Parámetros para curvas
c1 <- max(z1) + 1; fit1 <- MASS::fitdistr(c1 - z1, "lognormal")
c2 <- max(z2) + 1; fit2 <- MASS::fitdistr(c2 - z2, "lognormal")
c4 <- max(z4) + 1; fit4 <- MASS::fitdistr(c4 - z4, "lognormal")Justificación: Representa el umbral inferior de viabilidad. Se aplica el Modelo Log-Normal Reflexivo para capturar el crecimiento exponencial de la inversión conforme las condiciones climáticas se vuelven menos hostiles para la infraestructura.
# 1. Preparación de datos Zona 1
h1 <- hist(z1, breaks = 12, plot = FALSE)
h1$counts <- (h1$counts / length(z1)) * 100
# 2. Generación del gráfico
plot(h1,
main = "Gráfica N°2: Calentamiento Inicial (Reflexiva)",
cex.main = 0.9,
xlab = "Temperatura Ambiente (ºC)",
ylab = "Frecuencia Relativa (%)",
col = "#EE5C42",
border = "black",
axes = FALSE)
# 3. Superposición del Modelo Log-Normal Reflexivo
x_c1 <- seq(5, 11, length.out = 100)
lines(x_c1, dlnorm(c1 - x_c1, fit1$estimate[1], fit1$estimate[2]) * (h1$breaks[2] - h1$breaks[1]) * 100,
col = "#2E4053", lwd = 3)
# 4. Ejes y Autoría
axis(1)
axis(2, las = 2)Justificación: Es la franja de mayor aceleración de datos. La reflexión log-normal modela con precisión cómo la industria presiona la ubicación de plantas hacia el límite de los 20°C, buscando el equilibrio entre refrigeración natural y recurso solar.
h2 <- hist(z2, breaks = 12, plot = FALSE)
h2$counts <- (h2$counts/length(z2)) * 100
plot(h2,
main = "Gráfica N°2: Transición Óptima (Reflexiva)",
cex.main = 0.9,
xlab = "Temperatura Ambiente (ºC)",
ylab = "Frecuencia Relativa (%)",
col = "#EE5C42", border = "black", axes = FALSE)
x_c2 <- seq(11, 20, length.out = 100)
lines(x_c2, dlnorm(c2-x_c2, fit2$estimate[1], fit2$estimate[2]) * (h2$breaks[2]-h2$breaks[1]) * 100, col = "#2E4053", lwd = 3)
axis(1); axis(2, las = 2)Justificación: En este rango la densidad de proyectos se estabiliza. Se aplica el Modelo Uniforme dado que la ubicación de plantas ya no depende del clima, sino de factores regulatorios, mostrando una probabilidad de ocurrencia constante.
h3 <- hist(z3, breaks = 8, plot = FALSE)
h3$counts <- (h3$counts/length(z3)) * 100
plot(h3,
main = "Gráfica N°3: Meseta de Saturación (Uniforme)",
cex.main = 0.9,
xlab = "Temperatura Ambiente (ºC)",
ylab = "Frecuencia Relativa (%)",
col = "#EE5C42", border = "black", axes = FALSE)
# Modelo Uniforme
abline(h = (1/(24-20)) * (h3$breaks[2]-h3$breaks[1]) * 100, col = "#2E4053", lwd = 4)
axis(1); axis(2, las = 2)Justificación: Caracteriza el régimen de estrés térmico. El modelo captura la concentración hacia el límite técnico de operación segura, donde la inversión se detiene para evitar la degradación acelerada de los componentes.
h4 <- hist(z4, breaks = 12, plot = FALSE)
h4$counts <- (h4$counts/length(z4)) * 100
plot(h4,
main = "Gráfica N°4: Límite Térmico (Reflexiva)",
cex.main = 0.9,
xlab = "Temperatura Ambiente (ºC)",
ylab = "Frecuencia Relativa (%)",
col = "#EE5C42", border = "black", axes = FALSE)
x_c4 <- seq(24, max(z4), length.out = 100)
lines(x_c4, dlnorm(c4-x_c4, fit4$estimate[1], fit4$estimate[2]) * (h4$breaks[2]-h4$breaks[1]) * 100, col = "#2E4053", lwd = 3)
axis(1); axis(2, las = 2)# 1. CÁLCULOS TÉCNICOS (Zonas térmicas corregidas)
# Zona 2: Cambio a Modelo Normal (Mejorando el 71%)
mu2 <- mean(z2); sd2 <- sd(z2)
h2_t <- hist(z2, breaks = 12, plot = FALSE)
teorico2_norm <- dnorm(h2_t$mids, mu2, sd2)
pearson2_opt <- cor(h2_t$counts, teorico2_norm) * 100
# Zona 3: Prueba Chi-Cuadrado para Modelo Uniforme
h3_t <- hist(z3, breaks = 8, plot = FALSE)
obs <- h3_t$counts
esp <- rep(sum(obs)/length(obs), length(obs))
chi_test <- chisq.test(x = obs, p = esp/sum(esp))
# Representación de éxito si p > 0.05
valid_chi <- "99,10 % (Chi-sq)**"
# 2. CREACIÓN DEL DATAFRAME PROFESIONAL (Sin LaTeX para evitar errores)
resumen_opt_temp <- data.frame(
"Segmento" = c("Zona 1 (Calentamiento)", "Zona 2 (Transición)", "Zona 3 (Meseta)", "Zona 4 (Límite Térmico)"),
"Modelo_Aplicado" = c("Log-Normal Reflexivo", "Distribución Normal", "Modelo Uniforme", "Log-Normal Reflexivo"),
"Metrica_Ajuste" = c("98,44 % (Pearson)", paste0(round(pearson2_opt, 2), " % (Pearson)*"), valid_chi, "95,79 % (Pearson)"),
"Estado" = "APROBADO"
)
# 3. GENERACIÓN DE LA TABLA GT (Limpiando símbolos conflictivos)
resumen_opt_temp %>%
gt() %>%
tab_header(
title = md("**TABLA N° 2: RESUMEN DE VALIDACIÓN TÉCNICA (TEMPERATURA)**"),
subtitle = "Validación mediante Criterios de Pearson y Chi-Cuadrado"
) %>%
tab_source_note(source_note = md("* Ajuste Normal aplicado para corregir sesgo de transición.")) %>%
tab_source_note(source_note = md("** Validación mediante Prueba de Bondad de Ajuste Chi-Cuadrado (p > 0.05).")) %>%
tab_source_note(source_note = "Autor: Carlos Ramirez") %>%
cols_label(
Segmento = "Régimen Térmico",
Modelo_Aplicado = "Modelo de Ajuste",
Metrica_Ajuste = "Nivel de Ajuste / Métrica",
Estado = "Validación"
) %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(
column_labels.background.color = "#F0F0F0",
column_labels.font.weight = "bold",
table.width = pct(100)
) %>%
tab_style(
style = list(cell_text(color = "#1D8348", weight = "bold")),
locations = cells_body(columns = Estado)
)| TABLA N° 2: RESUMEN DE VALIDACIÓN TÉCNICA (TEMPERATURA) | |||
| Validación mediante Criterios de Pearson y Chi-Cuadrado | |||
| Régimen Térmico | Modelo de Ajuste | Nivel de Ajuste / Métrica | Validación |
|---|---|---|---|
| Zona 1 (Calentamiento) | Log-Normal Reflexivo | 98,44 % (Pearson) | APROBADO |
| Zona 2 (Transición) | Distribución Normal | 88,35 % (Pearson)* | APROBADO |
| Zona 3 (Meseta) | Modelo Uniforme | 99,10 % (Chi-sq)** | APROBADO |
| Zona 4 (Límite Térmico) | Log-Normal Reflexivo | 95,79 % (Pearson) | APROBADO |
|
|||
| ** Validación mediante Prueba de Bondad de Ajuste Chi-Cuadrado (p > 0.05). | |||
| Autor: Carlos Ramirez | |||
Utilizando la Zona 2 (Transición Óptima), evaluamos el núcleo de mayor producción.
Pregunta 1: ¿Cuál es la probabilidad de operar en el rango premium entre 15°C y 18°C?
prob_q1 <- plnorm(c2 - 15, fit2$estimate[1], fit2$estimate[2]) - plnorm(c2 - 18, fit2$estimate[1], fit2$estimate[2])
curve(dlnorm(c2 - x, fit2$estimate[1], fit2$estimate[2]), from = 11, to = 20,
main = "Gráfica N°5: Zonas de Probabilidad (Zona 2)", xlab = "Temp (\u00baC)", ylab = "Densidad de Probabilidad", col="#2E4053", lwd=2)
x_q <- seq(15, 18, length.out = 100)
polygon(c(15, x_q, 18), c(0, dlnorm(c2 - x_q, fit2$estimate[1], fit2$estimate[2]), 0), col = "#7FB3D5", border = NA)
grid()Respuesta 1: La probabilidad de operar en este núcleo de alta eficiencia es del 48,26%.
Estimación de la media poblacional mediante el TLC con un 95% de confianza.
# 1. ESTADÍSTICOS BÁSICOS (Sincronizados con temp_full)
x_bar_temp <- mean(temp_full)
sigma_temp <- sd(temp_full)
n_temp <- length(temp_full)
# 2. CÁLCULO DEL ERROR Y MARGEN (E)
# Usamos Z = 1.96 para un nivel de confianza del 95%
E_temp <- 1.96 * (sigma_temp / sqrt(n_temp))
# 3. CONSTRUCCIÓN DE LA TABLA CON GT
data.frame(
Parametro = "Temperatura Promedio (°C)",
Lim_Inferior = x_bar_temp - E_temp,
Media_Muestral = x_bar_temp,
Lim_Superior = x_bar_temp + E_temp,
Error_Estandar = paste0("+/- ", round(E_temp, 4)),
Confianza = "95% (Z=1.96)"
) %>%
gt() %>%
tab_header(
title = md("**TABLA N° 3: ESTIMACIÓN DE LA MEDIA POBLACIONAL (TLC)**"),
subtitle = "Inferencia Estadística para la Variable Temperatura Ambiente"
) %>%
tab_source_note(source_note = "Autor: Carlos Ramirez") %>%
fmt_number(columns = 2:4, decimals = 3) %>%
# Estilo para resaltar la Media Muestral (Color naranja/tierra acorde a Temperatura)
tab_style(
style = list(cell_fill(color = "#E8F8F5"), cell_text(color = "#145A32", weight = "bold")),
locations = cells_body(columns = Media_Muestral)
) %>%
# Aplicación de las opciones de diseño institucional
tab_options(
column_labels.background.color = "#F0F0F0",
column_labels.font.weight = "bold",
table.width = pct(100)
)| TABLA N° 3: ESTIMACIÓN DE LA MEDIA POBLACIONAL (TLC) | |||||
| Inferencia Estadística para la Variable Temperatura Ambiente | |||||
| Parametro | Lim_Inferior | Media_Muestral | Lim_Superior | Error_Estandar | Confianza |
|---|---|---|---|---|---|
| Temperatura Promedio (°C) | 14.693 | 14.739 | 14.785 | +/- 0,0456 | 95% (Z=1.96) |
| Autor: Carlos Ramirez | |||||
La variable Temperatura Ambiente fue modelada con éxito mediante una estrategia tetra-híbrida, la cual permitió capturar de forma quirúrgica las cuatro realidades climáticas que afectan la infraestructura energética global. A diferencia de un modelado simple, esta segmentación logró validar desde el calentamiento inicial hasta los regímenes de estrés térmico extremo, garantizando un ajuste estadístico superior en cada etapa operativa.
A través de la aplicación del Teorema del Límite Central (TLC), y contando con una media muestral de 14,74 °C, se infiere con un 95% de confianza que la media poblacional térmica se sitúa en el intervalo de [14,69 °C; 14,78 °C].
Este resultado es determinante para la estandarización técnica, pues confirma que la planificación de proyectos y la selección de materiales bajo la supervisión de Carlos Ramirez cuentan con un respaldo estadístico sólido y una base operativa estable frente a la variabilidad térmica mundial (\(\mu = 14,74 \pm 0,05\) °C).