1 Configuración y Carga de Datos

##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: MARTIN SARMIENTO ####
### CARRERA: INGENIERÍA EN PETRÓLEOS #####

#### VARIABLE ESTADO OPERATIVO ####
## DATASET ##
setwd("~/R INFERENCIAL/OPERATIONAL_STATUS")
# 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" ...
# 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)

2 Extraer Variable

# 1. Definir el orden específico (Categorías en Español)
orden_especifico <- c(
  "Operativo",
  "Anunciado",
  "Construcción",
  "Pre-Construcción",
  "Inactivo (Mothballed)",
  "Archivado (Shelved)",
  "Archivado (Inferred 2y)",
  "Cancelado",
  "Cancelado (Inferred 4y)"
)

# 2. Traducción y Mapeo (Lógica corregida para leer los datos en Inglés)
# Usamos case_when para traducir lo que viene en el CSV al formato esperado
Status_Traducido <- case_when(
  grepl("cancelled - inferred 4 y", Datos$operational_status, ignore.case = TRUE) ~ "Cancelado (Inferred 4y)",
  grepl("shelved - inferred 2 y", Datos$operational_status, ignore.case = TRUE) ~ "Archivado (Inferred 2y)",
  grepl("operating", Datos$operational_status, ignore.case = TRUE) ~ "Operativo",
  grepl("announced", Datos$operational_status, ignore.case = TRUE) ~ "Anunciado",
  grepl("pre-construction", Datos$operational_status, ignore.case = TRUE) ~ "Pre-Construcción", 
  grepl("construction", Datos$operational_status, ignore.case = TRUE) ~ "Construcción",
  grepl("mothballed", Datos$operational_status, ignore.case = TRUE) ~ "Inactivo (Mothballed)",
  grepl("shelved", Datos$operational_status, ignore.case = TRUE) ~ "Archivado (Shelved)",
  grepl("cancelled", Datos$operational_status, ignore.case = TRUE) ~ "Cancelado"
)

# Actualizamos la columna en el dataset original para que los subsets funcionen luego
Datos$operational_status <- Status_Traducido

# 3. Crear el Factor
Status <- factor(
  Status_Traducido,
  levels = orden_especifico,
  ordered = TRUE
)

# 4. Tabla de distribución de frecuencias
TDF_status <- table(Status)

3 Tabla de Distribución de Frecuencias

# Tabla de frecuencias absolutas
Tabla <- as.data.frame(TDF_status)

# Renombrar columna de frecuencia
colnames(Tabla) <- c("Status", "ni")

# Asegurar tipo character
Tabla$Status <- as.character(Tabla$Status)

# Crear porcentaje
Tabla$`hi (%)` <- (Tabla$ni / sum(Tabla$ni)) * 100

# Fila total
fila_total_status <- tibble(
  Status = "TOTAL",
  ni = sum(Tabla$ni),
  `hi (%)` = sum(Tabla$`hi (%)`)
)

# Unir fila total
tabla_Final <- bind_rows(Tabla, fila_total_status)

# TABLA GT
tabla_status_gt <- tabla_Final %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1 de Distribución de Frecuencias del Estado Operativo de las Plantas Solares**")
  ) %>%
  tab_source_note(
    source_note = "Autor: Martin Sarmiento"
  ) %>%
  cols_label(
    Status = "Estado Operativo",
    ni = "Frecuencia (ni)",
    `hi (%)` = "Porcentaje (hi%)"
  ) %>%
  fmt_number(
    columns = `hi (%)`,
    decimals = 2
  ) %>%
  tab_options(
    heading.title.font.size = px(16),
    column_labels.background.color = "#F0F0F0"
  )

# Mostrar tabla
tabla_status_gt
Tabla N°1 de Distribución de Frecuencias del Estado Operativo de las Plantas Solares
Estado Operativo Frecuencia (ni) Porcentaje (hi%)
Operativo 1752 34.52
Anunciado 76 1.50
Construcción 111 2.19
Pre-Construcción 2795 55.07
Inactivo (Mothballed) 2 0.04
Archivado (Shelved) 30 0.59
Archivado (Inferred 2y) 76 1.50
Cancelado 209 4.12
Cancelado (Inferred 4y) 24 0.47
TOTAL 5075 100.00
Autor: Martin Sarmiento

4 Análisis Gráfico

4.1 Diagramas de Barras de Cantidad

# 
Tabla$Status <- factor(Tabla$Status, levels = orden_especifico)

# Extraemos los valores para graficar
alturas_hi <- Tabla$`hi (%)`
nombres_eje <- Tabla$Status

par(mar = c(12, 4, 4, 2))
barplot(height = alturas_hi,
        names.arg = nombres_eje,
        main = "Gráfica N°1: Distribución Porcentual de las Plantas Solares por Estado Operativo",
        ylab = "Porcentaje %",
        col = "#D8BFD8",
        las = 2,
        cex.names = 0.6,
        cex.main = 0.9,
        ylim = c(0, max(alturas_hi) * 1.2))
mtext("Estado Operativo", side = 1, line = 10)

5 Agrupación 1 (Fase Activa) - Opcion A BINOMIAL

# Definimos niveles
niveles_Bin <- c("Pre-Construcción", "Anunciado", "Construcción", "Operativo")

# Extracción 
Datos_G1_Bin <- subset(Datos, operational_status %in% niveles_Bin)
Datos_G1_Bin$operational_status <- factor(Datos_G1_Bin$operational_status, 
                                          levels = niveles_Bin, ordered = TRUE)

# Crear Tabla de Frecuencias y Mapeo
TDF_G1_Bin <- as.data.frame(table(Datos_G1_Bin$operational_status))
colnames(TDF_G1_Bin) <- c("Status", "ni")

# Mapeo
TDF_G1_Bin$X <- 0:(nrow(TDF_G1_Bin) - 1) 

TDF_G1_Bin$hi <- TDF_G1_Bin$ni / sum(TDF_G1_Bin$ni)

# Visualización del Mapeo
TDF_G1_Bin %>% 
  select(Status, X, ni, hi) %>%
  gt() %>% 
  tab_header(
    title = md("**Tabla N°2 de Distribución de Frecuencias del Estado Operativo de las Plantas Solares - Mapeado**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  cols_label(
    Status = "Estado Operativo",
    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 del Estado Operativo de las Plantas Solares - Mapeado
Estado Operativo Valor Asignado Frecuencia (ni) Porcentaje (hi%)
Pre-Construcción 0 2795 0.5904
Anunciado 1 76 0.0161
Construcción 2 111 0.0234
Operativo 3 1752 0.3701
Autor: Martin Sarmiento

5.1 Conjetura del Modelo

# Usamos la columna X que acabamos de mapear
n_total_Bin <- sum(TDF_G1_Bin$ni)

# Parámetros Binomiales
size_binom_A <- nrow(TDF_G1_Bin) - 1            
media_obs_A <- sum(TDF_G1_Bin$X * TDF_G1_Bin$ni) / n_total_Bin # Suma de X * ni
prob_p_A <- media_obs_A / size_binom_A

# Probabilidades Teóricas
P_Binomial_A <- dbinom(TDF_G1_Bin$X, size = size_binom_A, prob = prob_p_A)

# Gráfico
par(mar = c(8, 4, 4, 2))
barplot(rbind(TDF_G1_Bin$hi, P_Binomial_A), 
        beside = TRUE,
        main = "Gráfica N°2: Comparado de lo Observado frente a lo Esperado del Estado Operativo de las Plantas Solares",
        ylab = "Porcentaje (%)",
        names.arg = TDF_G1_Bin$Status, 
        col = c("#D8BFD8", "purple"),
        legend.text = c("Observado", "Esperado"), 
        args.legend = list(x = "topright"),
        las = 2, 
        cex.names = 0.8,
        cex.main = 0.7)
mtext("Estado Operativo", side = 1, line = 6)

5.2 Test de Pearson

# Definir Frecuencia Observada y Esperada
Fo_A <- TDF_G1_Bin$hi
Fe_A <- P_Binomial_A

# Gráfico de Correlación
plot(Fo_A, Fe_A, 
     main = "Gráfica N°3: Correlación del Modelo Observado y Esperado del Estado Operativo de las Plantas Solares",
     cex.main = 0.7,
     xlab = "Frecuencia Observada", 
     ylab = "Frecuencia Esperada", 
     pch = 19, col = "#68228B")
abline(lm(Fe_A ~ Fo_A), col = "red", lwd = 2)

# Cálculo del coeficiente
Correlacion_A <- cor(Fo_A, Fe_A) * 100
Correlacion_A
## [1] -62.17285

5.3 Test de Chi-cuadrado

# Cálculo de Chi-cuadrado
x2_A <- sum(((Fo_A - Fe_A)^2) / Fe_A)

# Grados de libertad (k - 1)
gl_A <- length(Fo_A) - 1

# Valor crítico 
vc_A <- qchisq(0.95, gl_A)

# Mostrar resultados
x2_A
## [1] 2.83646
vc_A
## [1] 7.814728
# Validación lógica
x2_A < vc_A
## [1] TRUE

5.4 Tabla Resumen del Test

# Crear data frame resumen
tabla_resumen_A <- data.frame(
  Variable = "Estado Operativo",
  Pearson = round(Correlacion_A, 2),
  Chi2    = round(x2_A, 4),
  Umbral  = round(vc_A, 2)
)

# Visualizar con GT
tabla_resumen_A %>% 
  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
Estado Operativo -62.17 2.8365 7.81
Autor: Martin Sarmiento

5.5 Cálculo de Probabilidades

¿Cuál es la probabilidad de encontrar una planta solar que ya esté totalmente Operativa?

prob_op <- dbinom(3, size = size_binom_A, prob = prob_p_A)
paste0(round(prob_op * 100, 2), "%")
## [1] "5.98%"

6 Agrupación 1 (Fase Activa) - Opcion B GEOMETRICO

# Definimos niveles
niveles_Geom <- c("Pre-Construcción", "Anunciado", "Construcción")

# Extracción
Datos_G1_Geom <- subset(Datos, operational_status %in% niveles_Geom)
Datos_G1_Geom$operational_status <- factor(Datos_G1_Geom$operational_status, 
                                           levels = niveles_Geom, ordered = TRUE)

# Crear Tabla de Frecuencias y Mapeo
TDF_G1_Geom <- as.data.frame(table(Datos_G1_Geom$operational_status))
colnames(TDF_G1_Geom) <- c("Status", "ni")

# Mapeo
TDF_G1_Geom$X <- 0:(nrow(TDF_G1_Geom) - 1)

TDF_G1_Geom$hi <- TDF_G1_Geom$ni / sum(TDF_G1_Geom$ni)

# Visualización del Mapeo
TDF_G1_Geom %>% 
  select(Status, X, ni, hi) %>%
  gt() %>% 
  tab_header(
    title = md("**Tabla N°2 de Distribución de Frecuencias del Estado Operativo de las Plantas Solares - Mapeado**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  cols_label(
    Status = "Estado Operativo",
    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 del Estado Operativo de las Plantas Solares - Mapeado
Estado Operativo Valor Asignado Frecuencia (ni) Porcentaje (hi%)
Pre-Construcción 0 2795 0.9373
Anunciado 1 76 0.0255
Construcción 2 111 0.0372
Autor: Martin Sarmiento

6.1 Conjentura del Modelo

# Usamos la columna X que acabamos de Mapear
n_total_Geom <- sum(TDF_G1_Geom$ni)

# Parámetros Geométricos 
media_obs_B <- sum(TDF_G1_Geom$X * TDF_G1_Geom$ni) / n_total_Geom
prob_geom_B <- 1 / (media_obs_B + 1)

# Probabilidades Teóricas
P_Geom_B <- dgeom(TDF_G1_Geom$X, prob = prob_geom_B)
P_Geom_B <- P_Geom_B / sum(P_Geom_B) 

# Gráfico
par(mar = c(8, 4, 4, 2))
barplot(rbind(TDF_G1_Geom$hi, P_Geom_B), 
        beside = TRUE,
        main = "Gráfica N°2: Comparado de lo Observado frente a lo Esperado del Estado Operativo de las Plantas Solares",
        ylab = "Porcentaje (%)",
        names.arg = TDF_G1_Geom$Status, 
        col = c("#D8BFD8", "purple"),
        legend.text = c("Observado", "Esperado"), 
        args.legend = list(x = "topright"),
        las = 2, 
        cex.names = 0.8,
        cex.main = 0.7)
mtext("Estado Operativo", side = 1, line = 6)

6.2 Test de Pearson

# Definir Frecuencia Observada y Esperada
Fo_B <- TDF_G1_Geom$hi
Fe_B <- P_Geom_B

# Gráfico de Correlación
plot(Fo_B, Fe_B, 
     main = "Gráfica N°3: Correlación del Modelo Observado y Esperado del Estado Operativo de las Plantas Solares",
     cex.main = 0.7,
     xlab = "Frecuencia Observada", 
     ylab = "Frecuencia Esperada", 
     pch = 19, col = "#68228B")
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.6275

6.3 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.1579347
vc_B
## [1] 5.991465
# Validación lógica
x2_B < vc_B
## [1] TRUE

6.4 Tabla Resumen del Test

# Crear data frame resumen
tabla_resumen_B <- data.frame(
  Variable = "Estado Operativo",
  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
Estado Operativo 99.63 0.1579 5.99
Autor: Martin Sarmiento

6.5 Cálculo de Probabilidades

¿Cuál es la probabilidad de seleccionar una planta solar que apenas se encuentre en fase de Pre-Construcción?

prob_pre <- dgeom(0, prob = prob_geom_B)
paste0(round(prob_pre * 100, 2), "%")
## [1] "90.91%"

7 Agrupación 2 (Fase Inactiva)

# Definimos niveles
niveles_G2 <- c("Inactivo (Mothballed)", "Archivado (Shelved)", "Archivado (Inferred 2y)", "Cancelado", "Cancelado (Inferred 4y)")

# Extracción
Datos_G2 <- subset(Datos, operational_status %in% niveles_G2)
Datos_G2$operational_status <- factor(Datos_G2$operational_status, levels = niveles_G2)

# Crear Tabla de Frecuencias y Mapeo
TDF_G2 <- as.data.frame(table(Datos_G2$operational_status))
colnames(TDF_G2) <- c("Status", "ni")

# Mapeo
TDF_G2$X <- 0:(nrow(TDF_G2) - 1)

TDF_G2$hi <- TDF_G2$ni / sum(TDF_G2$ni)

# Visualización del Mapeo
TDF_G2 %>% 
  select(Status, X, ni, hi) %>%
  gt() %>% 
  tab_header(
    title = md("**Tabla N°4 de Distribución de Frecuencias del Estado Operativo de las Plantas Solares - Mapeado**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  cols_label(
    Status = "Estado Operativo",
    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 del Estado Operativo de las Plantas Solares - Mapeado
Estado Operativo Valor Asignado Frecuencia (ni) Porcentaje (hi%)
Inactivo (Mothballed) 0 2 0.0059
Archivado (Shelved) 1 30 0.0880
Archivado (Inferred 2y) 2 76 0.2229
Cancelado 3 209 0.6129
Cancelado (Inferred 4y) 4 24 0.0704
Autor: Martin Sarmiento

7.1 Conjentura del Modelo

# Usamos la columna X que acabamos de mapear
n_total_G2 <- sum(TDF_G2$ni)

# Parámetros Binomiales
size_binom2 <- nrow(TDF_G2) - 1
media_G2 <- sum(TDF_G2$X * TDF_G2$ni) / n_total_G2
prob_p2 <- media_G2 / size_binom2

# Probabilidades Teóricas
P_Binom_G2 <- dbinom(TDF_G2$X, size = size_binom2, prob = prob_p2)

# Gráfico
par(mar = c(10, 4, 4, 2))
barplot(rbind(TDF_G2$hi, P_Binom_G2), 
        beside = TRUE,
        main = "Gráfica N°4: Comparado de lo Observado frente a lo Esperado del Estado Operativo de las Plantas Solares",
        ylab = "Porcentaje (%)",
        names.arg = TDF_G2$Status, 
        col = c("#D8BFD8", "purple"),
        legend.text = c("Observado", "Esperado"), 
        args.legend = list(x = "topright"),
        las = 2, 
        cex.names = 0.8,
        cex.main = 0.7)
mtext("Estado Operativo", side = 1, line = 8)

7.2 Test de Pearson

# Definir Frecuencia Observada y Esperada
Fo_G2 <- TDF_G2$hi
Fe_G2 <- P_Binom_G2

# Gráfico de Correlación
plot(Fo_G2, Fe_G2, 
     main = "Gráfica N°5: Correlación del Modelo Observado y Esperado del Estado Operativo de las Plantas Solares",
     cex.main = 0.7,
     xlab = "Frecuencia Observada", 
     ylab = "Frecuencia Esperada", 
     pch = 19, col = "#68228B")
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] 88.01604

7.3 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.2263328
vc_G2
## [1] 9.487729
# Validación lógica
x2_G2 < vc_G2
## [1] TRUE

7.4 Tabla Resumen del Test

# Crear data frame resumen
tabla_resumen_G2 <- data.frame(
  Variable = "Fases Inactivas",
  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
Fases Inactivas 88.02 0.2263 9.49
Autor: Martin Sarmiento

7.5 Cálculo de Probabilidades

¿Cuál es la probabilidad estimada de que un proyecto se encuentre catalogado específicamente como Archivado (Shelved)?

prob_canc <- dbinom(1, size = size_binom2, prob = prob_p2)
paste0(round(prob_canc * 100, 2), "%")
## [1] "10.11%"