#==============================ENCABEZADO===================================
# TEMA: EI Variables Cualitativas
# AUTOR: GRUPO 4
# FECHA: 07-01-2026
#==============================CARGA DE DATOS===================================
library(gt)
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
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")
#=========================ANALISIS VARIABLES NOMINALES==========================
#================================CUENCA=======================================
cuenca_inf <- datos$Basin
TDPcuenca_inf <- as.data.frame(table(cuenca_inf))
names(TDPcuenca_inf) <- c("CUENCA", "ni_FA")
TDPcuenca_inf$FO <- round((TDPcuenca_inf$ni_FA / sum(TDPcuenca_inf$ni_FA)) * 100, 2)

TDPcuencafinal_inf <- rbind(TDPcuenca_inf, data.frame(CUENCA = "TOTAL",
                                                      ni_FA = sum(TDPcuenca_inf$ni_FA),
                                                      FO = 100))
TDPcuencafinal_inf <- TDPcuencafinal_inf[, c("CUENCA", "FO")]
names(TDPcuencafinal_inf) <- c("VARIABLE", "FO")

barplot(TDPcuencafinal_inf$FO[TDPcuencafinal_inf$VARIABLE != "TOTAL"],
        main = "GRAFICA 1: DISTRIBUCION DE PROBABILIDAD DE CUENCA", 
        xlab = "CUENCA", ylab = "PROBABILIDAD (%)", col = "darkgreen",
        names.arg = TDPcuencafinal_inf$VARIABLE[TDPcuencafinal_inf$VARIABLE != "TOTAL"],
        las = 1)

#==========================ECORREGION=============================

ecorreg_inf <- datos$Ecoregion
TDPecorreg_inf <- as.data.frame(table(ecorreg_inf))
names(TDPecorreg_inf) <- c("ECORREGION", "ni_FA")
TDPecorreg_inf$FO <- round((TDPecorreg_inf$ni_FA / sum(TDPecorreg_inf$ni_FA)) * 100, 2)

TDPecorregfinal_inf <- rbind(TDPecorreg_inf, data.frame(ECORREGION = "TOTAL",
                                                        ni_FA = sum(TDPecorreg_inf$ni_FA),
                                                        FO = 100))
TDPecorregfinal_inf <- TDPecorregfinal_inf[, c("ECORREGION", "FO")]
names(TDPecorregfinal_inf) <- c("VARIABLE", "FO")

barplot(TDPecorregfinal_inf$FO[TDPecorregfinal_inf$VARIABLE != "TOTAL"], 
        main = "GRAFICA 2: DISTRIBUCION DE PROBABILIDAD DE ECORREGION", 
        xlab = "ECORREGION", ylab = "PROBABILIDAD (%)", col = "slategray3",
        names.arg = TDPecorregfinal_inf$VARIABLE[TDPecorregfinal_inf$VARIABLE != "TOTAL"],
        las = 2)

#=========================ANALISIS VARIABLES ORDINALES==========================
#==================COMPLEJIDAD DE ESTRUCTURA DE REVESTIMIENTO================
g_complejidad <- factor(datos$Complexity.of.the.casing.structure, levels = as.character(0:7), ordered = TRUE)
Tabla_complejidad <- as.data.frame(table(g_complejidad))
names(Tabla_complejidad) <- c("COMPLEJIDAD", "Frecuencia_Absoluta")
Tabla_complejidad$Frecuencia_Relativa_Porcentaje <- round(
  (Tabla_complejidad$Frecuencia_Absoluta / sum(Tabla_complejidad$Frecuencia_Absoluta)) * 100, 2)

print(Tabla_complejidad)
##   COMPLEJIDAD Frecuencia_Absoluta Frecuencia_Relativa_Porcentaje
## 1           0                2476                          19.71
## 2           1                  33                           0.26
## 3           2                5383                          42.85
## 4           3                4138                          32.94
## 5           4                 503                           4.00
## 6           5                  25                           0.20
## 7           6                   2                           0.02
## 8           7                   1                           0.01
#------ANALISIS BERNOULLI (0 Y 1)-----
datos_0_1 <- datos$Complexity.of.the.casing.structure[datos$Complexity.of.the.casing.structure %in% c(0,1)]
datos_0_1_num <- as.numeric(as.character(datos_0_1))

if(length(datos_0_1_num) > 0){
  tabla_0_1 <- table(factor(datos_0_1, levels = c("0","1")))
  df_0_1 <- as.data.frame(tabla_0_1)
  names(df_0_1) <- c("COMPLEJIDAD", "FO")
  df_0_1$Porcentaje_Experimental <- round(df_0_1$FO / sum(df_0_1$FO) * 100, 2)
  
  p_bernoulli <- mean(datos_0_1_num)
  df_0_1$PT <- round(c(1 - p_bernoulli, p_bernoulli) * 100, 2)
  df_0_1$FE <- round((df_0_1$PT / 100) * sum(df_0_1$FO), 4)
  
  barplot(rbind(df_0_1$Porcentaje_Experimental, df_0_1$PT), beside = TRUE,
          main = "Bernoulli: Experimental vs. Teorica (0 y 1)",
          names.arg = df_0_1$COMPLEJIDAD, col = c("darkblue", "darkgreen"),
          ylab = "Probabilidad (%)", legend.text = c("Experimental", "Teorica"),
          args.legend = list(x = "topright"))
  
  x2 <- sum((df_0_1$FO - df_0_1$FE)^2 / df_0_1$FE)
  gl <- length(df_0_1$FO) - 2
  VC <- qchisq(0.95, gl)
  cat("Chi-cuadrado:", round(x2, 3), "VC (95%):", round(VC, 3), "\n")
  if(gl > 0){
    cat(ifelse(x2 < VC, "No se rechaza H0. Bernoulli adecuada.\n", "Se rechaza H0. Bernoulli no se ajusta bien.\n"))
  }
}

## Chi-cuadrado: 0 VC (95%): 0
#-----ANALISIS CHI-CUADRADO-------
## Chi-cuadrado: 0 VC (95%): 0
#--- FUNCI??N AN??LISIS GEOM??TRICO GENERAL ---
analisis_geom <- function(segmento, valores){
  cat(paste("\n--- Analisis Geometrico para COMPLEJIDAD:", segmento, "---\n"))
  datos_seg <- datos$Complexity.of.the.casing.structure[datos$Complexity.of.the.casing.structure %in% valores]
  datos_seg_num <- as.numeric(as.character(datos_seg))
  
  if(length(datos_seg_num) > 0){
    tabla_seg <- table(factor(datos_seg_num, levels = as.character(valores)))
    df <- as.data.frame(tabla_seg)
    names(df) <- c("COMPLEJIDAD", "FO")
    df$COMPLEJIDAD <- as.numeric(as.character(df$COMPLEJIDAD))
    
    x_geom <- df$COMPLEJIDAD - min(valores)
    p_geom <- 1 / (1 + mean(x_geom))
    PT_geom <- round(dgeom(x_geom, p_geom) * 100, 2)
    
    df$Porcentaje_Experimental <- round(df$FO / sum(df$FO) * 100, 2)
    df$PT <- PT_geom
    df$FE <- round(df$PT / 100 * sum(df$FO), 4)
    
    print(df)
    
    barplot(rbind(df$Porcentaje_Experimental, df$PT), beside = TRUE,
            main = paste("Geometrica:", segmento, "Experimental vs. Teorica"),
            xlab = "Complejidad", ylab = "Probabilidad (%)",
            col = c("darkblue", "darkgreen"),
            legend.text = c("Experimental", "Teorica"),
            args.legend = list(x = "topright"))
    
    x2 <- sum((df$FO - df$FE)^2 / df$FE)
    gl <- length(df$FO) - 2
    VC <- qchisq(0.95, gl)
    cat("Chi-cuadrado:", round(x2, 3), "VC (95%):", round(VC, 3), "\n")
    if(gl > 0){
      cat(ifelse(x2 < VC, "No se rechaza H0. Geometrica adecuada.\n", "Se rechaza H0. Geometrica no se ajusta bien.\n"))
    }
  } else {
    cat("No hay datos para los niveles seleccionados.\n")
  }
}

#--- APLICAR AN??LISIS GEOM??TRICO A OTROS SEGMENTOS ---
analisis_geom("Nivel 2 a 4", c(2,3,4))
## 
## --- Analisis Geometrico para COMPLEJIDAD: Nivel 2 a 4 ---
##   COMPLEJIDAD   FO Porcentaje_Experimental   PT   FE
## 1           2 5383                   53.70 50.0 5012
## 2           3 4138                   41.28 25.0 2506
## 3           4  503                    5.02 12.5 1253

## Chi-cuadrado: 1539.204 VC (95%): 3.841 
## Se rechaza H0. Geometrica no se ajusta bien.
analisis_geom("Nivel 5 a 7", c(5,6,7))
## 
## --- Analisis Geometrico para COMPLEJIDAD: Nivel 5 a 7 ---
##   COMPLEJIDAD FO Porcentaje_Experimental   PT   FE
## 1           5 25                   89.29 50.0 14.0
## 2           6  2                    7.14 25.0  7.0
## 3           7  1                    3.57 12.5  3.5

## Chi-cuadrado: 14 VC (95%): 3.841 
## Se rechaza H0. Geometrica no se ajusta bien.