Este ecosistema es fundamental para el equilibrio ecológico de la región. Actúa como una fuente de agua vital, alimentando ríos y lagunas que abastecen a comunidades cercanas, incluida la ciudad de Quito. Su funcionamiento y biodiversidad están regulados por una combinación de factores clave:
Climáticos: La temperatura y las precipitaciones.
Geográficos: La altitud y la latitud.
Atmosféricos: Los patrones de vientos.
El análisis estadístico del clima en el Volcán Antisana es fundamental para transformar datos climáticos en información cuantificable que permita optimizar la gestión del agua, evaluar riesgos naturales y proteger sus ecosistemas. Para lograrlo, este estudio se centrará en el caso específico de la Reserva Ecológica Antisana, utilizando datos confiables recopilados de fuentes científicas y plataformas especializadas, con el objetivo de generar conclusiones objetivas que faciliten la toma de decisiones en conservación y planificación sostenible.
Aplicar la estadística, Machine Learning y el análisis climático al estudio del clima del Volcán Antisana para evaluar sus patrones meteorológicos y su influencia en el ecosistema circundante, mediante el uso de herramientas computacionales.
Conocer la situación actual de los datos climáticos del volcán Antisana a través de sus características más importantes y medidas estadísticas.
Emplear un modelo de probabilidad para establecer conclusiones sobre el clima del Volcán Antisana a partir de los resultados de muestra.
Deducir relaciones entre variables climáticas relevantes del volcán Antisana con el fin de realizar estimaciones significativas sobre su impacto en el ecosistema y la biodiversidad de la zona.
Textual: Todos los registros climáticos históricos y actuales asociados al Volcán Antisana y su área de influencia, independientemente de su estado operativo.
Simbólico: \(U = \{ x/x \in \text{Registros Climáticos} \land \text{Ubicación}(x) = \text{"Volcán Antisana"}\}\)
Textual: Cada registro climático individual dentro de la población.
Simbólico: \(X_i \text{ donde i = 1, 2, 3, 4, ..., +∞}\)
Textual: Un subconjunto representativo de registros climáticos correspondiente al período de estudio específico, obtenido de fuentes validadas como INAMHI y estaciones meteorológicas de la reserva.
Simbólico: \(M = \{ x/x \text{Registros Climáticos} \land \text{Ubicación}(x) = \text{"Volcán Antisana"} \land \text{Fecha}(x) = \text{[01/01/2012, 31/12/2012]}\)
Textual: Cada registro climático dentro del período y área definidos, analizado para caracterizar el comportamiento climático y su impacto en los ecosistemas y recursos hídricos de la Reserva Antisana.
Simbólico: \(X_i \text{ donde i = 1, 2, 3, 4, ..., 366}\)
📊 Ver tabla de variables en Google Sheets:
👉 Abrir
tabla de variables
📥 Descargar tabla de variables (Excel):
👉 Descargar
archivo Excel
📊 Ver tabla de indicadores en Google Sheets:
👉 Abrir
tabla de indicadores
📥 Descargar tabla de indicadores (Excel):
👉 Descargar
archivo Excel
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.6
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
##
## Adjuntando el paquete: 'e1071'
##
## The following object is masked from 'package:ggplot2':
##
## element
library(readr)
library(gt)
library(ggplot2)
setwd("~/PROYECTO ANTISANA")
Datos <- 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.
## spc_tbl_ [366 × 10] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ date : chr [1:366] "01/01/2012" "02/01/2012" "03/01/2012" "04/01/2012" ...
## $ longitude : num [1:366] -78.1 -78.1 -78.1 -78.1 -78.1 ...
## $ latitude : num [1:366] -0.468 -0.468 -0.468 -0.468 -0.468 ...
## $ elevation : num [1:366] 4048 4048 4048 4048 4048 ...
## $ max_temperature : num [1:366] 16.1 15.5 11.6 12 11.7 ...
## $ min_temperature : num [1:366] 6.91 9.23 8.69 9.53 7.9 ...
## $ precipitation : num [1:366] 8.49 35.44 41.53 15.48 28.71 ...
## $ wind : num [1:366] 1.76 1.86 1.74 1.48 1.49 1.51 1.81 1.68 1.23 1.61 ...
## $ relative_humidity: num [1:366] 0.93 0.96 0.98 0.99 0.98 0.97 0.98 0.99 0.99 0.98 ...
## $ solar : num [1:366] 15.98 12.25 4.58 4.32 3.86 ...
## - attr(*, "spec")=
## .. cols(
## .. date = col_character(),
## .. longitude = col_double(),
## .. latitude = col_double(),
## .. elevation = col_double(),
## .. max_temperature = col_double(),
## .. min_temperature = col_double(),
## .. precipitation = col_double(),
## .. wind = col_double(),
## .. relative_humidity = col_double(),
## .. solar = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
# Extraer variable
Variable <- na.omit(Datos$max_temperature)
N <- length(Variable)
# CÁLCULO LÍMITES DECIMALES
min_dec <- min(Variable)
max_dec <- max(Variable)
k_dec <- floor(1 + 3.322 * log10(N))
rango_dec <- max_dec - min_dec
amplitud_dec <- rango_dec / k_dec
cortes_dec <- seq(min_dec, max_dec, length.out = k_dec + 1)
cortes_dec[length(cortes_dec)] <- max_dec + 0.0001
inter_dec <- cut(Variable, breaks = cortes_dec, include.lowest = TRUE, right = FALSE)
ni_dec <- as.vector(table(inter_dec))
hi_dec <- (ni_dec / N) * 100
Ni_asc_dec <- cumsum(ni_dec)
Hi_asc_dec <- cumsum(hi_dec)
Ni_desc_dec <- rev(cumsum(rev(ni_dec)))
Hi_desc_dec <- rev(cumsum(rev(hi_dec)))
TDF_Decimal <- data.frame(
Li = cortes_dec[1:k_dec],
Ls = cortes_dec[2:(k_dec+1)],
MC = (cortes_dec[1:k_dec] + cortes_dec[2:(k_dec+1)]) / 2,
ni = ni_dec,
hi = hi_dec,
Ni_asc = Ni_asc_dec,
Ni_desc = Ni_desc_dec,
Hi_asc = Hi_asc_dec,
Hi_desc = Hi_desc_dec)
# CÁLCULO LÍMITES ENTEROS
BASE <- 1
min_int <- floor(min(Variable) / BASE) * BASE
max_int <- ceiling(max(Variable) / BASE) * BASE
k_int_sug <- floor(1 + 3.322 * log10(N))
Rango_int <- max_int - min_int
Amplitud_raw <- Rango_int / k_int_sug
Amplitud_int <- ceiling(Amplitud_raw)
if(Amplitud_int == 0) Amplitud_int <- 1
cortes_int <- seq(from = min_int, by = Amplitud_int, length.out = k_int_sug + 2)
while(max(cortes_int) < max(Variable)) {
cortes_int <- c(cortes_int, max(cortes_int) + Amplitud_int)
}
K_real <- length(cortes_int) - 1
lim_inf_int <- cortes_int[1:K_real]
lim_sup_int <- cortes_int[2:(K_real+1)]
inter_int <- cut(Variable, breaks = cortes_int, include.lowest = TRUE, right = FALSE)
ni_int <- as.vector(table(inter_int))
hi_int <- (ni_int / N) * 100
Ni_asc_int <- cumsum(ni_int)
Hi_asc_int <- cumsum(hi_int)
Ni_desc_int <- rev(cumsum(rev(ni_int)))
Hi_desc_int <- rev(cumsum(rev(hi_int)))
TDF_Enteros <- data.frame(
Li = lim_inf_int, Ls = lim_sup_int,
MC = (lim_inf_int + lim_sup_int) / 2,
ni = ni_int, hi = hi_int,
Ni_asc = Ni_asc_int, Ni_desc = Ni_desc_int,
Hi_asc = Hi_asc_int, Hi_desc = Hi_desc_int)
# TABLAS GT
# Tabla Decimal
TDF_Dec_Final <- data.frame(
Li = as.character(round(TDF_Decimal$Li, 2)),
Ls = as.character(round(TDF_Decimal$Ls, 2)),
MC = as.character(round(TDF_Decimal$MC, 2)),
ni = as.character(TDF_Decimal$ni),
hi = as.character(round(TDF_Decimal$hi, 2)),
Ni_asc = as.character(TDF_Decimal$Ni_asc),
Ni_desc = as.character(TDF_Decimal$Ni_desc),
Hi_asc = as.character(round(TDF_Decimal$Hi_asc, 2)),
Hi_desc = as.character(round(TDF_Decimal$Hi_desc, 2))
)
totales_dec <- c("TOTAL", "-", "-", sum(TDF_Decimal$ni), round(sum(TDF_Decimal$hi), 2), "-", "-", "-", "-")
TDF_Dec_Final <- rbind(TDF_Dec_Final, totales_dec)
TDF_Dec_Final %>% gt() %>%
tab_header(title = md("**Tabla N°1 de Distribución de Frecuencias de Temperatura Máxima del Volcán Antisana (°C)**")) %>%
cols_label(Li="Lim. Inf", Ls="Lim. Sup", MC="Marca Clase", ni="ni", hi="hi (%)", Ni_asc="Ni Asc", Ni_desc="Ni Desc", Hi_asc="Hi Asc %", Hi_desc="Hi Desc %") %>%
cols_align(align = "center") %>%
tab_options(heading.title.font.size = px(14), column_labels.background.color = "#F0F0F0")| Tabla N°1 de Distribución de Frecuencias de Temperatura Máxima del Volcán Antisana (°C) | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni Asc | Ni Desc | Hi Asc % | Hi Desc % |
|---|---|---|---|---|---|---|---|---|
| 10.32 | 11.82 | 11.07 | 26 | 7.1 | 26 | 366 | 7.1 | 100 |
| 11.82 | 13.31 | 12.56 | 60 | 16.39 | 86 | 340 | 23.5 | 92.9 |
| 13.31 | 14.81 | 14.06 | 71 | 19.4 | 157 | 280 | 42.9 | 76.5 |
| 14.81 | 16.31 | 15.56 | 60 | 16.39 | 217 | 209 | 59.29 | 57.1 |
| 16.31 | 17.8 | 17.06 | 62 | 16.94 | 279 | 149 | 76.23 | 40.71 |
| 17.8 | 19.3 | 18.55 | 44 | 12.02 | 323 | 87 | 88.25 | 23.77 |
| 19.3 | 20.8 | 20.05 | 23 | 6.28 | 346 | 43 | 94.54 | 11.75 |
| 20.8 | 22.29 | 21.55 | 14 | 3.83 | 360 | 20 | 98.36 | 5.46 |
| 22.29 | 23.79 | 23.04 | 6 | 1.64 | 366 | 6 | 100 | 1.64 |
| TOTAL | - | - | 366 | 100 | - | - | - | - |
# ANÁLISIS GRÁFICO
# Histogramas de Cantidad
par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
names.arg = TDF_Enteros$MC,
main = "", xlab = "", ylab = "Cantidad (Días)",
col = "#B0C4DE", space = 0, las = 2, cex.names = 0.7)
mtext("Temperatura Máxima (°C)", side = 1, line = 4)
mtext("Gráfica N°1: Distribución de Cantidad del Volcán Antisana por Temperatura Máxima", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
main = "", xlab = "", ylab = "Cantidad (Días)",
names.arg = TDF_Enteros$MC,
col = "#B0C4DE", space = 0, cex.names = 0.7, las = 2,
ylim = c(0, sum(TDF_Enteros$ni)))
mtext("Temperatura Máxima (°C)", side = 1, line = 4)
mtext("Gráfica N°2: Distribución de Cantidad del Volcán Antisana por Temperatura Máxima", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)# Histogramas Porcentuales
par(mar = c(8, 5, 5, 2))
bp3 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
cex.names = 0.7, las = 2,
ylim = c(0, max(TDF_Enteros$hi) * 1.25))
mtext("Temperatura Máxima (°C)", side = 1, line = 4)
mtext("Gráfica N°3: Distribución Porcentual del Volcán Antisana por Temperatura Máxima", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp3, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.7, col = "black")par(mar = c(8, 5, 5, 2))
bp4 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
las = 2, cex.names = 0.7,
ylim = c(0, 100))
mtext("Temperatura Máxima (°C)", side = 1, line = 4)
mtext("Gráfica N°4: Distribución Porcentual del Volcán Antisana por Temperatura Máxima", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp4, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.6, col = "black")# Diagrama de Cajas (Boxplot)
par(mar = c(5, 5, 4, 2))
boxplot(Variable,
horizontal = TRUE,
col = "#B0C4DE",
xlab = "Temperatura Máxima (°C)",
cex.main = 0.9,
main = "Gráfica N°5: Distribución de la Temperatura Máxima en el Volcan Antisana")
grid(nx = NULL, ny = NA, lty = 2, col = "gray")# Ojivas
par(mar = c(5, 5, 7, 10), xpd = TRUE)
# Coordenadas
x_asc <- TDF_Enteros$Ls
x_desc <- TDF_Enteros$Li
y_asc <- TDF_Enteros$Ni_asc
y_desc <- TDF_Enteros$Ni_desc
# 1. Dibujar la Ascendente
plot(x_asc, y_asc,
type = "b",
main = "",
xlab = "Temperatura Máxima (°C)",
ylab = "Frecuencia Acumulada (Días)",
col = "black",
pch = 19,
xlim = c(min(x_desc), max(x_asc)),
ylim = c(0, sum(TDF_Enteros$ni)))
# 2. Agregar la Descendente
lines(x_desc, y_desc, col = "blue", type = "b", pch = 19)
grid()
mtext("Gráfica N°6: Ojivas Ascendentes y Descendentes de la\nDistribución de la Temperatura Máxima en el Volcán Antisana",
side = 3, line = 3, adj = 0.5, cex = 0.9, font = 2)
legend("right",
legend = c("Ascendente", "Descendente"),
col = c("black", "blue"),
lty = 1,
pch = 19,
cex = 0.7,
inset = c(-0.35, 0),
xpd = TRUE,
bty = "n")# INDICADORES ESTADÍSTICOS
# Media aritmética
media <- round(mean(Variable), 2)
# Mediana
mediana <- round(median(Variable), 2)
# Moda
max_frecuencia <- max(TDF_Enteros$ni)
moda_vals <- TDF_Enteros$MC[TDF_Enteros$ni == max_frecuencia]
moda_txt <- paste(round(moda_vals, 2), collapse = ", ")
## INDICADORES DE DISPERSIÓN
# Varianza
varianza <- var(Variable)
# Desviación Estándar
sd_val <- sd(Variable)
# Coeficiente de Variación
cv <- round((sd_val / abs(media)) * 100, 2)
## INDICADORES DE FORMA
# Coeficiente de Asimetría
asimetria <- skewness(Variable)
# Curtosis
curtosis <- kurtosis(Variable)
# Outliers
Q1 <- quantile(Variable, 0.25); Q3 <- quantile(Variable, 0.75)
IQR_val <- Q3 - Q1
lim_inf <- Q1 - 1.5 * IQR_val; lim_sup <- Q3 + 1.5 * IQR_val
outliers_data <- Variable[Variable < lim_inf | Variable > lim_sup]
num_outliers <- length(outliers_data)
rango_outliers <- ifelse(num_outliers > 0, paste0(num_outliers, " [", round(min(outliers_data), 2), "; ", round(max(outliers_data), 2), "]"), "0 [Sin Outliers]")
tabla_indicadores <- data.frame(
"Variable" = "Temperatura Máxima (°C)",
"Rango" = paste0("[", round(min(Variable), 2), "; ", round(max(Variable), 2), "]"),
"X" = media, "Me" = mediana, "Mo" = moda_txt, "V" = round(varianza, 2),
"Sd" = round(sd_val, 2), "Cv" = cv, "As" = round(asimetria, 2), "K" = round(curtosis, 2),
"Outliers" = rango_outliers)
tabla_indicadores %>% gt() %>%
tab_header(title = md("**Tabla N°2 de Conclusiones de Temperatura Máxima del Volcán Antisana**")) %>%
tab_source_note(source_note = "Autor: Grupo 1") %>%
cols_label(X="Media", Me="Mediana", Mo="Moda", V="Varianza", Sd="Desv. Est.", Cv="C.V. %", As="Asimetría", K="Curtosis")| Tabla N°2 de Conclusiones de Temperatura Máxima del Volcán Antisana | ||||||||||
| Variable | Rango | Media | Mediana | Moda | Varianza | Desv. Est. | C.V. % | Asimetría | Curtosis | Outliers |
|---|---|---|---|---|---|---|---|---|---|---|
| Temperatura Máxima (°C) | [10.32; 23.79] | 15.74 | 15.51 | 13 | 8.22 | 2.87 | 18.22 | 0.39 | -0.56 | 0 [Sin Outliers] |
| Autor: Grupo 1 | ||||||||||
## CONCLUSIONES
"La variable “Temperatura Máxima” fluctúa entre 10.32 y 23.79 °C y sus valores se encuentran alrededor de 15.51 °C, con una desviación estándar de 2.87, siendo una variable muy homogénea, cuyos valores se concentran en la parte media baja de la variable con la agregación de no presencia de valores atípicos; por todo lo anterior, el comportamiento de la variable es muy bueno."## [1] "La variable “Temperatura Máxima” fluctúa entre 10.32 y 23.79 °C y sus valores se encuentran alrededor de 15.51 °C, con una desviación estándar de 2.87, siendo una variable muy homogénea, cuyos valores se concentran en la parte media baja de la variable con la agregación de no presencia de valores atípicos; por todo lo anterior, el comportamiento de la variable es muy bueno."
# Extraer variable
Variable <- na.omit(Datos$min_temperature)
N <- length(Variable)
# CÁLCULO LÍMITES DECIMALES
min_dec <- min(Variable)
max_dec <- max(Variable)
k_dec <- floor(1 + 3.322 * log10(N))
rango_dec <- max_dec - min_dec
amplitud_dec <- rango_dec / k_dec
cortes_dec <- seq(min_dec, max_dec, length.out = k_dec + 1)
cortes_dec[length(cortes_dec)] <- max_dec + 0.0001
inter_dec <- cut(Variable, breaks = cortes_dec, include.lowest = TRUE, right = FALSE)
ni_dec <- as.vector(table(inter_dec))
hi_dec <- (ni_dec / N) * 100
Ni_asc_dec <- cumsum(ni_dec)
Hi_asc_dec <- cumsum(hi_dec)
Ni_desc_dec <- rev(cumsum(rev(ni_dec)))
Hi_desc_dec <- rev(cumsum(rev(hi_dec)))
TDF_Decimal <- data.frame(
Li = cortes_dec[1:k_dec],
Ls = cortes_dec[2:(k_dec+1)],
MC = (cortes_dec[1:k_dec] + cortes_dec[2:(k_dec+1)]) / 2,
ni = ni_dec,
hi = hi_dec,
Ni_asc = Ni_asc_dec,
Ni_desc = Ni_desc_dec,
Hi_asc = Hi_asc_dec,
Hi_desc = Hi_desc_dec)
# CÁLCULO LÍMITES ENTEROS
BASE <- 1
min_int <- floor(min(Variable) / BASE) * BASE
max_int <- ceiling(max(Variable) / BASE) * BASE
k_int_sug <- floor(1 + 3.322 * log10(N))
Rango_int <- max_int - min_int
Amplitud_raw <- Rango_int / k_int_sug
Amplitud_int <- ceiling(Amplitud_raw)
if(Amplitud_int == 0) Amplitud_int <- 1
cortes_int <- seq(from = min_int, by = Amplitud_int, length.out = k_int_sug + 2)
while(max(cortes_int) < max(Variable)) {
cortes_int <- c(cortes_int, max(cortes_int) + Amplitud_int)
}
K_real <- length(cortes_int) - 1
lim_inf_int <- cortes_int[1:K_real]
lim_sup_int <- cortes_int[2:(K_real+1)]
inter_int <- cut(Variable, breaks = cortes_int, include.lowest = TRUE, right = FALSE)
ni_int <- as.vector(table(inter_int))
hi_int <- (ni_int / N) * 100
Ni_asc_int <- cumsum(ni_int)
Hi_asc_int <- cumsum(hi_int)
Ni_desc_int <- rev(cumsum(rev(ni_int)))
Hi_desc_int <- rev(cumsum(rev(hi_int)))
TDF_Enteros <- data.frame(
Li = lim_inf_int, Ls = lim_sup_int,
MC = (lim_inf_int + lim_sup_int) / 2,
ni = ni_int, hi = hi_int,
Ni_asc = Ni_asc_int, Ni_desc = Ni_desc_int,
Hi_asc = Hi_asc_int, Hi_desc = Hi_desc_int)
# TABLAS GT
# Tabla Decimal
TDF_Dec_Final <- data.frame(
Li = as.character(round(TDF_Decimal$Li, 2)),
Ls = as.character(round(TDF_Decimal$Ls, 2)),
MC = as.character(round(TDF_Decimal$MC, 2)),
ni = as.character(TDF_Decimal$ni),
hi = as.character(round(TDF_Decimal$hi, 2)),
Ni_asc = as.character(TDF_Decimal$Ni_asc),
Ni_desc = as.character(TDF_Decimal$Ni_desc),
Hi_asc = as.character(round(TDF_Decimal$Hi_asc, 2)),
Hi_desc = as.character(round(TDF_Decimal$Hi_desc, 2))
)
totales_dec <- c("TOTAL", "-", "-", sum(TDF_Decimal$ni), round(sum(TDF_Decimal$hi), 2), "-", "-", "-", "-")
TDF_Dec_Final <- rbind(TDF_Dec_Final, totales_dec)
TDF_Dec_Final %>% gt() %>%
tab_header(title = md("**Tabla N°1 de Distribución de Frecuencias de Temperatura Mínima del Volcán Antisana (°C)**")) %>%
cols_label(Li="Lim. Inf", Ls="Lim. Sup", MC="Marca Clase", ni="ni", hi="hi (%)", Ni_asc="Ni Asc", Ni_desc="Ni Desc", Hi_asc="Hi Asc %", Hi_desc="Hi Desc %") %>%
cols_align(align = "center") %>%
tab_options(heading.title.font.size = px(14), column_labels.background.color = "#F0F0F0")| Tabla N°1 de Distribución de Frecuencias de Temperatura Mínima del Volcán Antisana (°C) | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni Asc | Ni Desc | Hi Asc % | Hi Desc % |
|---|---|---|---|---|---|---|---|---|
| 2.65 | 3.56 | 3.11 | 2 | 0.55 | 2 | 366 | 0.55 | 100 |
| 3.56 | 4.47 | 4.02 | 4 | 1.09 | 6 | 364 | 1.64 | 99.45 |
| 4.47 | 5.38 | 4.93 | 5 | 1.37 | 11 | 360 | 3.01 | 98.36 |
| 5.38 | 6.29 | 5.84 | 21 | 5.74 | 32 | 355 | 8.74 | 96.99 |
| 6.29 | 7.21 | 6.75 | 55 | 15.03 | 87 | 334 | 23.77 | 91.26 |
| 7.21 | 8.12 | 7.66 | 108 | 29.51 | 195 | 279 | 53.28 | 76.23 |
| 8.12 | 9.03 | 8.57 | 80 | 21.86 | 275 | 171 | 75.14 | 46.72 |
| 9.03 | 9.94 | 9.48 | 60 | 16.39 | 335 | 91 | 91.53 | 24.86 |
| 9.94 | 10.85 | 10.39 | 31 | 8.47 | 366 | 31 | 100 | 8.47 |
| TOTAL | - | - | 366 | 100 | - | - | - | - |
# ANÁLISIS GRÁFICO
# Histogramas de Cantidad
par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
names.arg = TDF_Enteros$MC,
main = "", xlab = "", ylab = "Cantidad (Días)",
col = "#B0C4DE", space = 0, las = 2, cex.names = 0.7)
mtext("Temperatura Mínima (°C)", side = 1, line = 4)
mtext("Gráfica N°1: Distribución de Cantidad del Volcán Antisana por Temperatura Mínima", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
main = "", xlab = "", ylab = "Cantidad (Días)",
names.arg = TDF_Enteros$MC,
col = "#B0C4DE", space = 0, cex.names = 0.7, las = 2,
ylim = c(0, sum(TDF_Enteros$ni)))
mtext("Temperatura Mínima (°C)", side = 1, line = 4)
mtext("Gráfica N°2: Distribución de Cantidad del Volcán Antisana por Temperatura Mínima", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)# Histogramas Porcentuales
par(mar = c(8, 5, 5, 2))
bp3 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
cex.names = 0.7, las = 2,
ylim = c(0, max(TDF_Enteros$hi) * 1.25))
mtext("Temperatura Mínima (°C)", side = 1, line = 4)
mtext("Gráfica N°3: Distribución Porcentual del Volcán Antisana por Temperatura Mínima", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp3, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.7, col = "black")par(mar = c(8, 5, 5, 2))
bp4 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
las = 2, cex.names = 0.7,
ylim = c(0, 100))
mtext("Temperatura Mínima (°C)", side = 1, line = 4)
mtext("Gráfica N°4: Distribución Porcentual del Volcán Antisana por Temperatura Mínima", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp4, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.6, col = "black")# Diagrama de Cajas (Boxplot)
par(mar = c(5, 5, 4, 2))
boxplot(Variable,
horizontal = TRUE,
col = "#B0C4DE",
xlab = "Temperatura Mínima (°C)",
cex.main = 0.9,
main = "Gráfica N°5: Distribución de la Temperatura Mínima en el Volcan Antisana")
grid(nx = NULL, ny = NA, lty = 2, col = "gray")# Ojivas
par(mar = c(5, 5, 7, 10), xpd = TRUE)
# Coordenadas
x_asc <- TDF_Enteros$Ls
x_desc <- TDF_Enteros$Li
y_asc <- TDF_Enteros$Ni_asc
y_desc <- TDF_Enteros$Ni_desc
# 1. Dibujar la Ascendente
plot(x_asc, y_asc,
type = "b",
main = "",
xlab = "Temperatura Mínima (°C)",
ylab = "Frecuencia Acumulada (Días)",
col = "black",
pch = 19,
xlim = c(min(x_desc), max(x_asc)),
ylim = c(0, sum(TDF_Enteros$ni)))
# 2. Agregar la Descendente
lines(x_desc, y_desc, col = "blue", type = "b", pch = 19)
grid()
mtext("Gráfica N°6: Ojivas Ascendentes y Descendentes de la\nDistribución de la Temperatura Mínima en el Volcán Antisana",
side = 3, line = 3, adj = 0.5, cex = 0.9, font = 2)
legend("right",
legend = c("Ascendente", "Descendente"),
col = c("black", "blue"),
lty = 1,
pch = 19,
cex = 0.7,
inset = c(-0.35, 0),
xpd = TRUE,
bty = "n")# INDICADORES ESTADÍSTICOS
# Media aritmética
media <- round(mean(Variable), 2)
# Mediana
mediana <- round(median(Variable), 2)
# Moda
max_frecuencia <- max(TDF_Enteros$ni)
moda_vals <- TDF_Enteros$MC[TDF_Enteros$ni == max_frecuencia]
moda_txt <- paste(round(moda_vals, 2), collapse = ", ")
## INDICADORES DE DISPERSIÓN
# Varianza
varianza <- var(Variable)
# Desviación Estándar
sd_val <- sd(Variable)
# Coeficiente de Variación
cv <- round((sd_val / abs(media)) * 100, 2)
## INDICADORES DE FORMA
# Coeficiente de Asimetría
asimetria <- skewness(Variable)
# Curtosis
curtosis <- kurtosis(Variable)
# Outliers
Q1 <- quantile(Variable, 0.25); Q3 <- quantile(Variable, 0.75)
IQR_val <- Q3 - Q1
lim_inf <- Q1 - 1.5 * IQR_val; lim_sup <- Q3 + 1.5 * IQR_val
outliers_data <- Variable[Variable < lim_inf | Variable > lim_sup]
num_outliers <- length(outliers_data)
rango_outliers <- ifelse(num_outliers > 0, paste0(num_outliers, " [", round(min(outliers_data), 2), "; ", round(max(outliers_data), 2), "]"), "0 [Sin Outliers]")
tabla_indicadores <- data.frame(
"Variable" = "Temperatura Mínima (°C)",
"Rango" = paste0("[", round(min(Variable), 2), "; ", round(max(Variable), 2), "]"),
"X" = media, "Me" = mediana, "Mo" = moda_txt, "V" = round(varianza, 2),
"Sd" = round(sd_val, 2), "Cv" = cv, "As" = round(asimetria, 2), "K" = round(curtosis, 2),
"Outliers" = rango_outliers)
tabla_indicadores %>% gt() %>%
tab_header(title = md("**Tabla N°2 de Conclusiones de Temperatura Mínima del Volcán Antisana**")) %>%
tab_source_note(source_note = "Autor: Grupo 1") %>%
cols_label(X="Media", Me="Mediana", Mo="Moda", V="Varianza", Sd="Desv. Est.", Cv="C.V. %", As="Asimetría", K="Curtosis")| Tabla N°2 de Conclusiones de Temperatura Mínima del Volcán Antisana | ||||||||||
| Variable | Rango | Media | Mediana | Moda | Varianza | Desv. Est. | C.V. % | Asimetría | Curtosis | Outliers |
|---|---|---|---|---|---|---|---|---|---|---|
| Temperatura Mínima (°C) | [2.65; 10.85] | 8.05 | 8 | 7.5 | 1.89 | 1.37 | 17.07 | -0.43 | 0.57 | 7 [2.65; 4.55] |
| Autor: Grupo 1 | ||||||||||
## CONCLUSIONES
"La variable “Temperatura Mínima” fluctúa entre 2.65 y 10.85 °C y sus valores se encuentran alrededor de 8.05 °C, con una desviación estándar de 1.37, siendo una variable homogénea, cuyos valores se concentran en la parte parte media alta de la variable con la agregación de 7 outliers; por todo lo anterior, el comportamiento de la variable es estable."## [1] "La variable “Temperatura Mínima” fluctúa entre 2.65 y 10.85 °C y sus valores se encuentran alrededor de 8.05 °C, con una desviación estándar de 1.37, siendo una variable homogénea, cuyos valores se concentran en la parte parte media alta de la variable con la agregación de 7 outliers; por todo lo anterior, el comportamiento de la variable es estable."
# Extraer variable
Variable <- na.omit(Datos$precipitation)
N <- length(Variable)
# CÁLCULO LÍMITES DECIMALES
min_dec <- min(Variable)
max_dec <- max(Variable)
k_dec <- floor(1 + 3.322 * log10(N))
rango_dec <- max_dec - min_dec
amplitud_dec <- rango_dec / k_dec
cortes_dec <- seq(min_dec, max_dec, length.out = k_dec + 1)
cortes_dec[length(cortes_dec)] <- max_dec + 0.0001
inter_dec <- cut(Variable, breaks = cortes_dec, include.lowest = TRUE, right = FALSE)
ni_dec <- as.vector(table(inter_dec))
hi_dec <- (ni_dec / N) * 100
Ni_asc_dec <- cumsum(ni_dec)
Hi_asc_dec <- cumsum(hi_dec)
Ni_desc_dec <- rev(cumsum(rev(ni_dec)))
Hi_desc_dec <- rev(cumsum(rev(hi_dec)))
TDF_Decimal <- data.frame(
Li = cortes_dec[1:k_dec],
Ls = cortes_dec[2:(k_dec+1)],
MC = (cortes_dec[1:k_dec] + cortes_dec[2:(k_dec+1)]) / 2,
ni = ni_dec,
hi = hi_dec,
Ni_asc = Ni_asc_dec,
Ni_desc = Ni_desc_dec,
Hi_asc = Hi_asc_dec,
Hi_desc = Hi_desc_dec)
# CÁLCULO LÍMITES ENTEROS
BASE <- 1
min_int <- floor(min(Variable) / BASE) * BASE
max_int <- ceiling(max(Variable) / BASE) * BASE
k_int_sug <- floor(1 + 3.322 * log10(N))
Rango_int <- max_int - min_int
Amplitud_raw <- Rango_int / k_int_sug
Amplitud_int <- ceiling(Amplitud_raw)
if(Amplitud_int == 0) Amplitud_int <- 1
cortes_int <- seq(from = min_int, by = Amplitud_int, length.out = k_int_sug + 2)
while(max(cortes_int) < max(Variable)) {
cortes_int <- c(cortes_int, max(cortes_int) + Amplitud_int)
}
K_real <- length(cortes_int) - 1
lim_inf_int <- cortes_int[1:K_real]
lim_sup_int <- cortes_int[2:(K_real+1)]
inter_int <- cut(Variable, breaks = cortes_int, include.lowest = TRUE, right = FALSE)
ni_int <- as.vector(table(inter_int))
hi_int <- (ni_int / N) * 100
Ni_asc_int <- cumsum(ni_int)
Hi_asc_int <- cumsum(hi_int)
Ni_desc_int <- rev(cumsum(rev(ni_int)))
Hi_desc_int <- rev(cumsum(rev(hi_int)))
TDF_Enteros <- data.frame(
Li = lim_inf_int, Ls = lim_sup_int,
MC = (lim_inf_int + lim_sup_int) / 2,
ni = ni_int, hi = hi_int,
Ni_asc = Ni_asc_int, Ni_desc = Ni_desc_int,
Hi_asc = Hi_asc_int, Hi_desc = Hi_desc_int)
# TABLAS GT
# Tabla Decimal
TDF_Dec_Final <- data.frame(
Li = as.character(round(TDF_Decimal$Li, 2)),
Ls = as.character(round(TDF_Decimal$Ls, 2)),
MC = as.character(round(TDF_Decimal$MC, 2)),
ni = as.character(TDF_Decimal$ni),
hi = as.character(round(TDF_Decimal$hi, 2)),
Ni_asc = as.character(TDF_Decimal$Ni_asc),
Ni_desc = as.character(TDF_Decimal$Ni_desc),
Hi_asc = as.character(round(TDF_Decimal$Hi_asc, 2)),
Hi_desc = as.character(round(TDF_Decimal$Hi_desc, 2))
)
totales_dec <- c("TOTAL", "-", "-", sum(TDF_Decimal$ni), round(sum(TDF_Decimal$hi), 2), "-", "-", "-", "-")
TDF_Dec_Final <- rbind(TDF_Dec_Final, totales_dec)
TDF_Dec_Final %>% gt() %>%
tab_header(title = md("**Tabla N°1 de Distribución de Frecuencias de Precipitación del Volcán Antisana (mm)**")) %>%
cols_label(Li="Lim. Inf", Ls="Lim. Sup", MC="Marca Clase", ni="ni", hi="hi (%)", Ni_asc="Ni Asc", Ni_desc="Ni Desc", Hi_asc="Hi Asc %", Hi_desc="Hi Desc %") %>%
cols_align(align = "center") %>%
tab_options(heading.title.font.size = px(14), column_labels.background.color = "#F0F0F0")| Tabla N°1 de Distribución de Frecuencias de Precipitación del Volcán Antisana (mm) | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni Asc | Ni Desc | Hi Asc % | Hi Desc % |
|---|---|---|---|---|---|---|---|---|
| 0.01 | 10.53 | 5.27 | 158 | 43.17 | 158 | 366 | 43.17 | 100 |
| 10.53 | 21.06 | 15.8 | 89 | 24.32 | 247 | 208 | 67.49 | 56.83 |
| 21.06 | 31.58 | 26.32 | 56 | 15.3 | 303 | 119 | 82.79 | 32.51 |
| 31.58 | 42.1 | 36.84 | 33 | 9.02 | 336 | 63 | 91.8 | 17.21 |
| 42.1 | 52.63 | 47.36 | 16 | 4.37 | 352 | 30 | 96.17 | 8.2 |
| 52.63 | 63.15 | 57.89 | 9 | 2.46 | 361 | 14 | 98.63 | 3.83 |
| 63.15 | 73.67 | 68.41 | 3 | 0.82 | 364 | 5 | 99.45 | 1.37 |
| 73.67 | 84.2 | 78.94 | 0 | 0 | 364 | 2 | 99.45 | 0.55 |
| 84.2 | 94.72 | 89.46 | 2 | 0.55 | 366 | 2 | 100 | 0.55 |
| TOTAL | - | - | 366 | 100 | - | - | - | - |
# ANÁLISIS GRÁFICO
# Histogramas de Cantidad
par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
names.arg = TDF_Enteros$MC,
main = "", xlab = "", ylab = "Cantidad (Días)",
col = "#B0C4DE", space = 0, las = 2, cex.names = 0.7)
mtext("Precipitación (mm)", side = 1, line = 4)
mtext("Gráfica N°1: Distribución de Cantidad del Volcán Antisana por Precipitación", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
main = "", xlab = "", ylab = "Cantidad (Días)",
names.arg = TDF_Enteros$MC,
col = "#B0C4DE", space = 0, cex.names = 0.7, las = 2,
ylim = c(0, sum(TDF_Enteros$ni)))
mtext("Precipitación (mm)", side = 1, line = 4)
mtext("Gráfica N°2: Distribución de Cantidad del Volcán Antisana por Precipitación", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)# Histogramas Porcentuales
par(mar = c(8, 5, 5, 2))
bp3 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
cex.names = 0.7, las = 2,
ylim = c(0, max(TDF_Enteros$hi) * 1.25))
mtext("Precipitación (mm)", side = 1, line = 4)
mtext("Gráfica N°3: Distribución Porcentual del Volcán Antisana por Precipitación", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp3, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.7, col = "black")par(mar = c(8, 5, 5, 2))
bp4 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
las = 2, cex.names = 0.7,
ylim = c(0, 100)) # Escala fija al 100%
mtext("Precipitación (mm)", side = 1, line = 4)
mtext("Gráfica N°4: Distribución Porcentual del Volcán Antisana por Precipitación", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp4, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.6, col = "black")# Diagrama de Cajas (Boxplot)
par(mar = c(5, 5, 4, 2))
boxplot(Variable,
horizontal = TRUE,
col = "#B0C4DE",
xlab = "Precipitación (mm)",
cex.main = 0.9,
main = "Gráfica N°5: Distribución de la Precipitación en el Volcan Antisana")
grid(nx = NULL, ny = NA, lty = 2, col = "gray")# Ojivas
par(mar = c(5, 5, 7, 10), xpd = TRUE)
# Coordenadas
x_asc <- TDF_Enteros$Ls
x_desc <- TDF_Enteros$Li
y_asc <- TDF_Enteros$Ni_asc
y_desc <- TDF_Enteros$Ni_desc
# 1. Dibujar la Ascendente
plot(x_asc, y_asc,
type = "b",
main = "",
xlab = "Precipitación (mm)",
ylab = "Frecuencia Acumulada (Días)",
col = "black",
pch = 19,
xlim = c(min(x_desc), max(x_asc)),
ylim = c(0, sum(TDF_Enteros$ni)))
# 2. Agregar la Descendente
lines(x_desc, y_desc, col = "blue", type = "b", pch = 19)
grid()
mtext("Gráfica N°6: Ojivas Ascendentes y Descendentes de la\nDistribución de la Precipitación en el Volcán Antisana",
side = 3, line = 3, adj = 0.5, cex = 0.9, font = 2)
legend("right",
legend = c("Ascendente (Ni <)", "Descendente (Ni >)"),
col = c("black", "blue"),
lty = 1,
pch = 19,
cex = 0.7,
inset = c(-0.35, 0),
xpd = TRUE,
bty = "n")# INDICADORES ESTADÍSTICOS
# Media aritmética
media <- round(mean(Variable), 2)
# Mediana
mediana <- round(median(Variable), 2)
# Moda
max_frecuencia <- max(TDF_Enteros$ni)
moda_vals <- TDF_Enteros$MC[TDF_Enteros$ni == max_frecuencia]
moda_txt <- paste(round(moda_vals, 2), collapse = ", ")
## INDICADORES DE DISPERSIÓN
# Varianza
varianza <- var(Variable)
# Desviación Estándar
sd_val <- sd(Variable)
# Coeficiente de Variación
cv <- round((sd_val / abs(media)) * 100, 2)
## INDICADORES DE FORMA
# Coeficiente de Asimetría
asimetria <- skewness(Variable)
# Curtosis
curtosis <- kurtosis(Variable)
# Outliers
Q1 <- quantile(Variable, 0.25); Q3 <- quantile(Variable, 0.75)
IQR_val <- Q3 - Q1
lim_inf <- Q1 - 1.5 * IQR_val; lim_sup <- Q3 + 1.5 * IQR_val
outliers_data <- Variable[Variable < lim_inf | Variable > lim_sup]
num_outliers <- length(outliers_data)
rango_outliers <- ifelse(num_outliers > 0, paste0(num_outliers, " [", round(min(outliers_data), 2), "; ", round(max(outliers_data), 2), "]"), "0 [Sin Outliers]")
tabla_indicadores <- data.frame(
"Variable" = "Precipitación (mm)",
"Rango" = paste0("[", round(min(Variable), 2), "; ", round(max(Variable), 2), "]"),
"X" = media, "Me" = mediana, "Mo" = moda_txt, "V" = round(varianza, 2),
"Sd" = round(sd_val, 2), "Cv" = cv, "As" = round(asimetria, 2), "K" = round(curtosis, 2),
"Outliers" = rango_outliers)
tabla_indicadores %>% gt() %>%
tab_header(title = md("**Tabla N°2 de Conclusiones de Precipitación del Volcán Antisana**")) %>%
tab_source_note(source_note = "Autor: Grupo 1") %>%
cols_label(X="Media", Me="Mediana", Mo="Moda", V="Varianza", Sd="Desv. Est.", Cv="C.V. %", As="Asimetría", K="Curtosis")| Tabla N°2 de Conclusiones de Precipitación del Volcán Antisana | ||||||||||
| Variable | Rango | Media | Mediana | Moda | Varianza | Desv. Est. | C.V. % | Asimetría | Curtosis | Outliers |
|---|---|---|---|---|---|---|---|---|---|---|
| Precipitación (mm) | [0.01; 94.72] | 17.1 | 12.94 | 5.5 | 259.7 | 16.12 | 94.24 | 1.3 | 1.95 | 10 [57.83; 94.72] |
| Autor: Grupo 1 | ||||||||||
## CONCLUSIONES
"La variable “Precipitación” fluctúa entre [RANGO_MIN] y [RANGO_MAX] mm y sus valores se encuentran alrededor de [MEDIA] mm, con una desviación estándar de [DESV], siendo una variable [HOMOGENEIDAD], cuyos valores se concentran en la parte [ASIMETRIA] de la variable con la agregación de [OUTLIERS] outliers; por todo lo anterior, el comportamiento de la variable es [ESTABILIDAD]."## [1] "La variable “Precipitación” fluctúa entre [RANGO_MIN] y [RANGO_MAX] mm y sus valores se encuentran alrededor de [MEDIA] mm, con una desviación estándar de [DESV], siendo una variable [HOMOGENEIDAD], cuyos valores se concentran en la parte [ASIMETRIA] de la variable con la agregación de [OUTLIERS] outliers; por todo lo anterior, el comportamiento de la variable es [ESTABILIDAD]."
# Extraer variable
Variable <- na.omit(Datos$relative_humidity)
N <- length(Variable)
# CÁLCULO LÍMITES DECIMALES
min_dec <- min(Variable)
max_dec <- max(Variable)
k_dec <- floor(1 + 3.322 * log10(N))
rango_dec <- max_dec - min_dec
amplitud_dec <- rango_dec / k_dec
cortes_dec <- seq(min_dec, max_dec, length.out = k_dec + 1)
cortes_dec[length(cortes_dec)] <- max_dec + 0.0001
inter_dec <- cut(Variable, breaks = cortes_dec, include.lowest = TRUE, right = FALSE)
ni_dec <- as.vector(table(inter_dec))
hi_dec <- (ni_dec / N) * 100
Ni_asc_dec <- cumsum(ni_dec)
Hi_asc_dec <- cumsum(hi_dec)
Ni_desc_dec <- rev(cumsum(rev(ni_dec)))
Hi_desc_dec <- rev(cumsum(rev(hi_dec)))
TDF_Decimal <- data.frame(
Li = cortes_dec[1:k_dec],
Ls = cortes_dec[2:(k_dec+1)],
MC = (cortes_dec[1:k_dec] + cortes_dec[2:(k_dec+1)]) / 2,
ni = ni_dec,
hi = hi_dec,
Ni_asc = Ni_asc_dec,
Ni_desc = Ni_desc_dec,
Hi_asc = Hi_asc_dec,
Hi_desc = Hi_desc_dec)
# CÁLCULO LÍMITES ENTEROS
BASE <- 1
min_int <- floor(min(Variable) / BASE) * BASE
max_int <- ceiling(max(Variable) / BASE) * BASE
k_int_sug <- floor(1 + 3.322 * log10(N))
Rango_int <- max_int - min_int
Amplitud_raw <- Rango_int / k_int_sug
Amplitud_int <- ceiling(Amplitud_raw)
if(Amplitud_int == 0) Amplitud_int <- 1
cortes_int <- seq(from = min_int, by = Amplitud_int, length.out = k_int_sug + 2)
while(max(cortes_int) < max(Variable)) {
cortes_int <- c(cortes_int, max(cortes_int) + Amplitud_int)
}
K_real <- length(cortes_int) - 1
lim_inf_int <- cortes_int[1:K_real]
lim_sup_int <- cortes_int[2:(K_real+1)]
inter_int <- cut(Variable, breaks = cortes_int, include.lowest = TRUE, right = FALSE)
ni_int <- as.vector(table(inter_int))
hi_int <- (ni_int / N) * 100
Ni_asc_int <- cumsum(ni_int)
Hi_asc_int <- cumsum(hi_int)
Ni_desc_int <- rev(cumsum(rev(ni_int)))
Hi_desc_int <- rev(cumsum(rev(hi_int)))
TDF_Enteros <- data.frame(
Li = lim_inf_int, Ls = lim_sup_int,
MC = (lim_inf_int + lim_sup_int) / 2,
ni = ni_int, hi = hi_int,
Ni_asc = Ni_asc_int, Ni_desc = Ni_desc_int,
Hi_asc = Hi_asc_int, Hi_desc = Hi_desc_int)
# TABLAS GT
# Tabla Decimal
TDF_Dec_Final <- data.frame(
Li = as.character(round(TDF_Decimal$Li, 2)),
Ls = as.character(round(TDF_Decimal$Ls, 2)),
MC = as.character(round(TDF_Decimal$MC, 2)),
ni = as.character(TDF_Decimal$ni),
hi = as.character(round(TDF_Decimal$hi, 2)),
Ni_asc = as.character(TDF_Decimal$Ni_asc),
Ni_desc = as.character(TDF_Decimal$Ni_desc),
Hi_asc = as.character(round(TDF_Decimal$Hi_asc, 2)),
Hi_desc = as.character(round(TDF_Decimal$Hi_desc, 2))
)
totales_dec <- c("TOTAL", "-", "-", sum(TDF_Decimal$ni), round(sum(TDF_Decimal$hi), 2), "-", "-", "-", "-")
TDF_Dec_Final <- rbind(TDF_Dec_Final, totales_dec)
TDF_Dec_Final %>% gt() %>%
tab_header(title = md("**Tabla N°1 de Distribución de Frecuencias de Humedad Relativa del Volcán Antisana (%)**")) %>%
cols_label(Li="Lim. Inf", Ls="Lim. Sup", MC="Marca Clase", ni="ni", hi="hi (%)", Ni_asc="Ni Asc", Ni_desc="Ni Desc", Hi_asc="Hi Asc %", Hi_desc="Hi Desc %") %>%
cols_align(align = "center") %>%
tab_options(heading.title.font.size = px(14), column_labels.background.color = "#F0F0F0")| Tabla N°1 de Distribución de Frecuencias de Humedad Relativa del Volcán Antisana (%) | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni Asc | Ni Desc | Hi Asc % | Hi Desc % |
|---|---|---|---|---|---|---|---|---|
| 0.56 | 0.61 | 0.58 | 2 | 0.55 | 2 | 366 | 0.55 | 100 |
| 0.61 | 0.66 | 0.63 | 15 | 4.1 | 17 | 364 | 4.64 | 99.45 |
| 0.66 | 0.7 | 0.68 | 18 | 4.92 | 35 | 349 | 9.56 | 95.36 |
| 0.7 | 0.75 | 0.73 | 21 | 5.74 | 56 | 331 | 15.3 | 90.44 |
| 0.75 | 0.8 | 0.78 | 16 | 4.37 | 72 | 310 | 19.67 | 84.7 |
| 0.8 | 0.85 | 0.82 | 20 | 5.46 | 92 | 294 | 25.14 | 80.33 |
| 0.85 | 0.89 | 0.87 | 35 | 9.56 | 127 | 274 | 34.7 | 74.86 |
| 0.89 | 0.94 | 0.92 | 60 | 16.39 | 187 | 239 | 51.09 | 65.3 |
| 0.94 | 0.99 | 0.97 | 179 | 48.91 | 366 | 179 | 100 | 48.91 |
| TOTAL | - | - | 366 | 100 | - | - | - | - |
# ANÁLISIS GRÁFICO
# Histogramas de Cantidad
par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
names.arg = TDF_Enteros$MC,
main = "", xlab = "", ylab = "Cantidad (Días)",
col = "#B0C4DE", space = 0, las = 2, cex.names = 0.7)
mtext("Humedad Relativa (%)", side = 1, line = 4)
mtext("Gráfica N°1: Distribución de Cantidad del Volcán Antisana por Humedad Relativa", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
main = "", xlab = "", ylab = "Cantidad (Días)",
names.arg = TDF_Enteros$MC,
col = "#B0C4DE", space = 0, cex.names = 0.7, las = 2,
ylim = c(0, sum(TDF_Enteros$ni)))
mtext("Humedad Relativa (%)", side = 1, line = 4)
mtext("Gráfica N°2: Distribución de Cantidad del Volcán Antisana por Humedad Relativa", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)# Histogramas Porcentuales
par(mar = c(8, 5, 5, 2))
bp3 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
cex.names = 0.7, las = 2,
ylim = c(0, max(TDF_Enteros$hi) * 1.25))
mtext("Humedad Relativa (%)", side = 1, line = 4)
mtext("Gráfica N°3: Distribución Porcentual del Volcán Antisana por Humedad Relativa", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp3, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.7, col = "black")par(mar = c(8, 5, 5, 2))
bp4 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
las = 2, cex.names = 0.7,
ylim = c(0, 100))
mtext("Humedad Relativa (%)", side = 1, line = 4)
mtext("Gráfica N°4: Distribución Porcentual del Volcán Antisana por Humedad Relativa", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp4, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.6, col = "black")# Diagrama de Cajas (Boxplot)
par(mar = c(5, 5, 4, 2))
boxplot(Variable,
horizontal = TRUE,
col = "#B0C4DE",
xlab = "Humedad Relativa (%)",
cex.main = 0.9,
main = "Gráfica N°5: Distribución de la Humedad Relativa en el Volcan Antisana")
grid(nx = NULL, ny = NA, lty = 2, col = "gray")# Ojivas
par(mar = c(5, 5, 7, 10), xpd = TRUE)
# Coordenadas
x_asc <- TDF_Enteros$Ls
x_desc <- TDF_Enteros$Li
y_asc <- TDF_Enteros$Ni_asc
y_desc <- TDF_Enteros$Ni_desc
# 1. Dibujar la Ascendente
plot(x_asc, y_asc,
type = "b",
main = "",
xlab = "Humedad Relativa (%)",
ylab = "Frecuencia Acumulada (Días)",
col = "black",
pch = 19,
xlim = c(min(x_desc), max(x_asc)),
ylim = c(0, sum(TDF_Enteros$ni)))
# 2. Agregar la Descendente
lines(x_desc, y_desc, col = "blue", type = "b", pch = 19)
grid()
mtext("Gráfica N°6: Ojivas Ascendentes y Descendentes de la\nDistribución de la Humedad Relativa en el Volcán Antisana",
side = 3, line = 3, adj = 0.5, cex = 0.9, font = 2)
legend("right",
legend = c("Ascendente", "Descendente"),
col = c("black", "blue"),
lty = 1,
pch = 19,
cex = 0.7,
inset = c(-0.35, 0),
xpd = TRUE,
bty = "n")# INDICADORES ESTADÍSTICOS
# Media aritmética
media <- round(mean(Variable), 2)
# Mediana
mediana <- round(median(Variable), 2)
# Moda
max_frecuencia <- max(TDF_Enteros$ni)
moda_vals <- TDF_Enteros$MC[TDF_Enteros$ni == max_frecuencia]
moda_txt <- paste(round(moda_vals, 2), collapse = ", ")
## INDICADORES DE DISPERSIÓN
# Varianza
varianza <- var(Variable)
# Desviación Estándar
sd_val <- sd(Variable)
# Coeficiente de Variación
cv <- round((sd_val / abs(media)) * 100, 2)
## INDICADORES DE FORMA
# Coeficiente de Asimetría
asimetria <- skewness(Variable)
# Curtosis
curtosis <- kurtosis(Variable)
# Outliers
Q1 <- quantile(Variable, 0.25); Q3 <- quantile(Variable, 0.75)
IQR_val <- Q3 - Q1
lim_inf <- Q1 - 1.5 * IQR_val; lim_sup <- Q3 + 1.5 * IQR_val
outliers_data <- Variable[Variable < lim_inf | Variable > lim_sup]
num_outliers <- length(outliers_data)
rango_outliers <- ifelse(num_outliers > 0, paste0(num_outliers, " [", round(min(outliers_data), 2), "; ", round(max(outliers_data), 2), "]"), "0 [Sin Outliers]")
tabla_indicadores <- data.frame(
"Variable" = "Humedad Relativa (%)",
"Rango" = paste0("[", round(min(Variable), 2), "; ", round(max(Variable), 2), "]"),
"X" = media, "Me" = mediana, "Mo" = moda_txt, "V" = round(varianza, 2),
"Sd" = round(sd_val, 2), "Cv" = cv, "As" = round(asimetria, 2), "K" = round(curtosis, 2),
"Outliers" = rango_outliers)
tabla_indicadores %>% gt() %>%
tab_header(title = md("**Tabla N°2 de Conclusiones de Humedad Relativa del Volcán Antisana**")) %>%
tab_source_note(source_note = "Autor: Grupo 1") %>%
cols_label(X="Media", Me="Mediana", Mo="Moda", V="Varianza", Sd="Desv. Est.", Cv="C.V. %", As="Asimetría", K="Curtosis")| Tabla N°2 de Conclusiones de Humedad Relativa del Volcán Antisana | ||||||||||
| Variable | Rango | Media | Mediana | Moda | Varianza | Desv. Est. | C.V. % | Asimetría | Curtosis | Outliers |
|---|---|---|---|---|---|---|---|---|---|---|
| Humedad Relativa (%) | [0.56; 0.99] | 0.9 | 0.94 | 0.5 | 0.01 | 0.11 | 12.07 | -1.18 | 0.2 | 10 [0.56; 0.63] |
| Autor: Grupo 1 | ||||||||||
## CONCLUSIONES
"La variable “Humedad Relativa” fluctúa entre 0.56 y 0.99 % y sus valores se encuentran alrededor de 0.9 %, con una desviación estándar de 0.11, siendo una variable homogénea, cuyos valores se concentran en la parte alta de la variable con la agregación de 10 outliers; por todo lo anterior, el comportamiento de la variable es estable."## [1] "La variable “Humedad Relativa” fluctúa entre 0.56 y 0.99 % y sus valores se encuentran alrededor de 0.9 %, con una desviación estándar de 0.11, siendo una variable homogénea, cuyos valores se concentran en la parte alta de la variable con la agregación de 10 outliers; por todo lo anterior, el comportamiento de la variable es estable."
# Extraer variable
Variable <- na.omit(Datos$solar)
N <- length(Variable)
# CÁLCULO LÍMITES DECIMALES
min_dec <- min(Variable)
max_dec <- max(Variable)
k_dec <- floor(1 + 3.322 * log10(N))
rango_dec <- max_dec - min_dec
amplitud_dec <- rango_dec / k_dec
cortes_dec <- seq(min_dec, max_dec, length.out = k_dec + 1)
cortes_dec[length(cortes_dec)] <- max_dec + 0.0001
inter_dec <- cut(Variable, breaks = cortes_dec, include.lowest = TRUE, right = FALSE)
ni_dec <- as.vector(table(inter_dec))
hi_dec <- (ni_dec / N) * 100
Ni_asc_dec <- cumsum(ni_dec)
Hi_asc_dec <- cumsum(hi_dec)
Ni_desc_dec <- rev(cumsum(rev(ni_dec)))
Hi_desc_dec <- rev(cumsum(rev(hi_dec)))
TDF_Decimal <- data.frame(
Li = cortes_dec[1:k_dec],
Ls = cortes_dec[2:(k_dec+1)],
MC = (cortes_dec[1:k_dec] + cortes_dec[2:(k_dec+1)]) / 2,
ni = ni_dec,
hi = hi_dec,
Ni_asc = Ni_asc_dec,
Ni_desc = Ni_desc_dec,
Hi_asc = Hi_asc_dec,
Hi_desc = Hi_desc_dec)
# CÁLCULO LÍMITES ENTEROS
BASE <- 1
min_int <- floor(min(Variable) / BASE) * BASE
max_int <- ceiling(max(Variable) / BASE) * BASE
k_int_sug <- floor(1 + 3.322 * log10(N))
Rango_int <- max_int - min_int
Amplitud_raw <- Rango_int / k_int_sug
Amplitud_int <- ceiling(Amplitud_raw)
if(Amplitud_int == 0) Amplitud_int <- 1
cortes_int <- seq(from = min_int, by = Amplitud_int, length.out = k_int_sug + 2)
while(max(cortes_int) < max(Variable)) {
cortes_int <- c(cortes_int, max(cortes_int) + Amplitud_int)
}
K_real <- length(cortes_int) - 1
lim_inf_int <- cortes_int[1:K_real]
lim_sup_int <- cortes_int[2:(K_real+1)]
inter_int <- cut(Variable, breaks = cortes_int, include.lowest = TRUE, right = FALSE)
ni_int <- as.vector(table(inter_int))
hi_int <- (ni_int / N) * 100
Ni_asc_int <- cumsum(ni_int)
Hi_asc_int <- cumsum(hi_int)
Ni_desc_int <- rev(cumsum(rev(ni_int)))
Hi_desc_int <- rev(cumsum(rev(hi_int)))
TDF_Enteros <- data.frame(
Li = lim_inf_int, Ls = lim_sup_int,
MC = (lim_inf_int + lim_sup_int) / 2,
ni = ni_int, hi = hi_int,
Ni_asc = Ni_asc_int, Ni_desc = Ni_desc_int,
Hi_asc = Hi_asc_int, Hi_desc = Hi_desc_int)
# TABLAS GT
# Tabla Decimal
TDF_Dec_Final <- data.frame(
Li = as.character(round(TDF_Decimal$Li, 2)),
Ls = as.character(round(TDF_Decimal$Ls, 2)),
MC = as.character(round(TDF_Decimal$MC, 2)),
ni = as.character(TDF_Decimal$ni),
hi = as.character(round(TDF_Decimal$hi, 2)),
Ni_asc = as.character(TDF_Decimal$Ni_asc),
Ni_desc = as.character(TDF_Decimal$Ni_desc),
Hi_asc = as.character(round(TDF_Decimal$Hi_asc, 2)),
Hi_desc = as.character(round(TDF_Decimal$Hi_desc, 2))
)
totales_dec <- c("TOTAL", "-", "-", sum(TDF_Decimal$ni), round(sum(TDF_Decimal$hi), 2), "-", "-", "-", "-")
TDF_Dec_Final <- rbind(TDF_Dec_Final, totales_dec)
TDF_Dec_Final %>% gt() %>%
tab_header(title = md("**Tabla N°1 de Distribución de Frecuencias de Radiación Solar del Volcán Antisana**")) %>%
cols_label(Li="Lim. Inf", Ls="Lim. Sup", MC="Marca Clase", ni="ni", hi="hi (%)", Ni_asc="Ni Asc", Ni_desc="Ni Desc", Hi_asc="Hi Asc %", Hi_desc="Hi Desc %") %>%
cols_align(align = "center") %>%
tab_options(heading.title.font.size = px(14), column_labels.background.color = "#F0F0F0")| Tabla N°1 de Distribución de Frecuencias de Radiación Solar del Volcán Antisana | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni Asc | Ni Desc | Hi Asc % | Hi Desc % |
|---|---|---|---|---|---|---|---|---|
| 1.26 | 4.48 | 2.87 | 40 | 10.93 | 40 | 366 | 10.93 | 100 |
| 4.48 | 7.71 | 6.1 | 57 | 15.57 | 97 | 326 | 26.5 | 89.07 |
| 7.71 | 10.93 | 9.32 | 55 | 15.03 | 152 | 269 | 41.53 | 73.5 |
| 10.93 | 14.15 | 12.54 | 55 | 15.03 | 207 | 214 | 56.56 | 58.47 |
| 14.15 | 17.38 | 15.77 | 30 | 8.2 | 237 | 159 | 64.75 | 43.44 |
| 17.38 | 20.6 | 18.99 | 17 | 4.64 | 254 | 129 | 69.4 | 35.25 |
| 20.6 | 23.82 | 22.21 | 35 | 9.56 | 289 | 112 | 78.96 | 30.6 |
| 23.82 | 27.05 | 25.44 | 48 | 13.11 | 337 | 77 | 92.08 | 21.04 |
| 27.05 | 30.27 | 28.66 | 29 | 7.92 | 366 | 29 | 100 | 7.92 |
| TOTAL | - | - | 366 | 100 | - | - | - | - |
# ANÁLISIS GRÁFICO
# Histogramas de Cantidad
par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
names.arg = TDF_Enteros$MC,
main = "", xlab = "", ylab = "Cantidad (Días)",
col = "#B0C4DE", space = 0, las = 2, cex.names = 0.7)
mtext("Radiación Solar", side = 1, line = 4)
mtext("Gráfica N°1: Distribución de Cantidad del Volcán Antisana por Radiación Solar", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)par(mar = c(8, 5, 4, 2))
barplot(TDF_Enteros$ni,
main = "", xlab = "", ylab = "Cantidad (Días)",
names.arg = TDF_Enteros$MC,
col = "#B0C4DE", space = 0, cex.names = 0.7, las = 2,
ylim = c(0, sum(TDF_Enteros$ni)))
mtext("Radiación Solar", side = 1, line = 4)
mtext("Gráfica N°2: Distribución de Cantidad del Volcán Antisana por Radiación Solar", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)# Histogramas Porcentuales
par(mar = c(8, 5, 5, 2))
bp3 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
cex.names = 0.7, las = 2,
ylim = c(0, max(TDF_Enteros$hi) * 1.25))
mtext("Radiación Solar", side = 1, line = 4)
mtext("Gráfica N°3: Distribución Porcentual del Volcán Antisana por Radiación Solar", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp3, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.7, col = "black")par(mar = c(8, 5, 5, 2))
bp4 <- barplot(TDF_Enteros$hi,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#B0C4DE", space = 0, names.arg = TDF_Enteros$MC,
las = 2, cex.names = 0.7,
ylim = c(0, 100))
mtext("Radiación Solar", side = 1, line = 4)
mtext("Gráfica N°4: Distribución Porcentual del Volcán Antisana por Radiación Solar", side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp4, y = TDF_Enteros$hi, labels = paste0(round(TDF_Enteros$hi, 1), "%"), pos = 3, cex = 0.6, col = "black")# Diagrama de Cajas (Boxplot)
par(mar = c(5, 5, 4, 2))
boxplot(Variable,
horizontal = TRUE,
col = "#B0C4DE",
xlab = "Radiación Solar",
cex.main = 0.9,
main = "Gráfica N°5: Distribución de la Radiación Solar en el Volcán Antisana")
grid(nx = NULL, ny = NA, lty = 2, col = "gray")# Ojivas
par(mar = c(5, 5, 7, 10), xpd = TRUE)
# Coordenadas
x_asc <- TDF_Enteros$Ls
x_desc <- TDF_Enteros$Li
y_asc <- TDF_Enteros$Ni_asc
y_desc <- TDF_Enteros$Ni_desc
# 1. Dibujar la Ascendente
plot(x_asc, y_asc,
type = "b",
main = "",
xlab = "Radiación Solar",
ylab = "Frecuencia Acumulada (Días)",
col = "black",
pch = 19,
xlim = c(min(x_desc), max(x_asc)),
ylim = c(0, sum(TDF_Enteros$ni)))
# 2. Agregar la Descendente
lines(x_desc, y_desc, col = "blue", type = "b", pch = 19)
grid()
mtext("Gráfica N°6: Ojivas Ascendentes y Descendentes de la\nDistribución de la Radiación Solar en el Volcán Antisana",
side = 3, line = 3, adj = 0.5, cex = 0.9, font = 2)
legend("right",
legend = c("Ascendente", "Descendente"),
col = c("black", "blue"),
lty = 1,
pch = 19,
cex = 0.7,
inset = c(-0.35, 0),
xpd = TRUE,
bty = "n")# INDICADORES ESTADÍSTICOS
# Media aritmética
media <- round(mean(Variable), 2)
# Mediana
mediana <- round(median(Variable), 2)
# Moda
max_frecuencia <- max(TDF_Enteros$ni)
moda_vals <- TDF_Enteros$MC[TDF_Enteros$ni == max_frecuencia]
moda_txt <- paste(round(moda_vals, 2), collapse = ", ")
## INDICADORES DE DISPERSIÓN
# Varianza
varianza <- var(Variable)
# Desviación Estándar
sd_val <- sd(Variable)
# Coeficiente de Variación
cv <- round((sd_val / abs(media)) * 100, 2)
## INDICADORES DE FORMA
# Coeficiente de Asimetría
asimetria <- skewness(Variable)
# Curtosis
curtosis <- kurtosis(Variable)
# Outliers
Q1 <- quantile(Variable, 0.25); Q3 <- quantile(Variable, 0.75)
IQR_val <- Q3 - Q1
lim_inf <- Q1 - 1.5 * IQR_val; lim_sup <- Q3 + 1.5 * IQR_val
outliers_data <- Variable[Variable < lim_inf | Variable > lim_sup]
num_outliers <- length(outliers_data)
rango_outliers <- ifelse(num_outliers > 0, paste0(num_outliers, " [", round(min(outliers_data), 2), "; ", round(max(outliers_data), 2), "]"), "0 [Sin Outliers]")
tabla_indicadores <- data.frame(
"Variable" = "Radiación Solar",
"Rango" = paste0("[", round(min(Variable), 2), "; ", round(max(Variable), 2), "]"),
"X" = media, "Me" = mediana, "Mo" = moda_txt, "V" = round(varianza, 2),
"Sd" = round(sd_val, 2), "Cv" = cv, "As" = round(asimetria, 2), "K" = round(curtosis, 2),
"Outliers" = rango_outliers)
tabla_indicadores %>% gt() %>%
tab_header(title = md("**Tabla N°2 de Conclusiones de Radiación Solar del Volcán Antisana**")) %>%
tab_source_note(source_note = "Autor: Grupo 1") %>%
cols_label(X="Media", Me="Mediana", Mo="Moda", V="Varianza", Sd="Desv. Est.", Cv="C.V. %", As="Asimetría", K="Curtosis")| Tabla N°2 de Conclusiones de Radiación Solar del Volcán Antisana | ||||||||||
| Variable | Rango | Media | Mediana | Moda | Varianza | Desv. Est. | C.V. % | Asimetría | Curtosis | Outliers |
|---|---|---|---|---|---|---|---|---|---|---|
| Radiación Solar | [1.26; 30.27] | 14.44 | 12.66 | 7, 11 | 69.36 | 8.33 | 57.67 | 0.3 | -1.24 | 0 [Sin Outliers] |
| Autor: Grupo 1 | ||||||||||
## CONCLUSIONES
"La variable “Radiación Solar” fluctúa entre 1.26 y 30.27 y sus valores se encuentran alrededor de 14.44, con una desviación estándar de 8.33, siendo una variable heterogénea, cuyos valores se concentran en la parte media baja de la variable con la agregación de 0 outliers; por todo lo anterior, el comportamiento de la variable es estable."## [1] "La variable “Radiación Solar” fluctúa entre 1.26 y 30.27 y sus valores se encuentran alrededor de 14.44, con una desviación estándar de 8.33, siendo una variable heterogénea, cuyos valores se concentran en la parte media baja de la variable con la agregación de 0 outliers; por todo lo anterior, el comportamiento de la variable es estable."