ANÁLISIS ESTADÍSTICO

1. CARGA DE LIBRERÍAS Y DATOS

#==============================ENCABEZADO================================
# TEMA: MODELOS PROBABILISTICOS- DISTANCIA ESTIMADA
# AUTOR: GRUPO 3
# FECHA: 03-2026
#========================================================================
library(dplyr)
library(knitr)
library(gt)

setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")

2. GRÁFICA Y TABLA DE DISTRIBUCIÓN DE FRECUENCIA

distance <- as.numeric(datos$Distance.estimation)
distance <- na.omit(distance)
histograma_dist <- hist(distance,
                        main = "Gráfica Nº1: Distribución de la Distancia
                        Estimada de los pozos de gas natural",
                        xlab = "Distancia Estimada",
                        ylab = "Cantidad",
                        col = "gray")

lis <- histograma_dist$breaks[-length(histograma_dist$breaks)]
lss <- histograma_dist$breaks[-1]
MC_f <- histograma_dist$mids
ni_f <- histograma_dist$counts
hi_f <- (ni_f / sum(ni_f)) * 100
TDFlat_f <- round(data.frame(lis, lss, MC_f, ni_f, hi_f), 2)

fila_total_f <- data.frame(
  lis = "TOTAL",
  lss = " ",
  MC_f = " ",
  ni_f = sum(ni_f),
  hi_f = round(sum(hi_f), 2)
)

TDFlat_t <- rbind(TDFlat_f, fila_total_f)
tabla_dist <- TDFlat_t %>%
  gt() %>%
  cols_label(
    lis = "Limite inferior",
    lss = "Limite superior",
    MC_f = "Marca de Clase",
    ni_f = "ni",
    hi_f = "hi (%)"
  ) %>%
  tab_header(
    title = md("Tabla Nº1: Distribución de cantidad de la 
               Distancia Estimada de los pozos de gas natural")
  ) %>%
  tab_source_note(
    source_note = md("Las unidades de medida estan en: metros")
  ) %>%
  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = cells_body(rows = lis == "TOTAL")
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(
    table.width = pct(80),
    heading.title.font.size = px(20),
    heading.title.font.weight = "bold",
    table.font.names = "Open Sans",
    column_labels.font.weight = "bold"
  )
tabla_dist
Tabla Nº1: Distribución de cantidad de la Distancia Estimada de los pozos de gas natural
Limite inferior Limite superior Marca de Clase ni hi (%)
0 20 10 1021 8.13
20 40 30 2125 16.92
40 60 50 2524 20.09
60 80 70 2395 19.07
80 100 90 1685 13.41
100 120 110 933 7.43
120 140 130 422 3.36
140 160 150 427 3.40
160 180 170 268 2.13
180 200 190 365 2.91
200 220 210 386 3.07
220 240 230 10 0.08
TOTAL 12561 100.00
Las unidades de medida estan en: metros

3. CONJETURA DEL MODELO

u_1 <- mean(distance)
sigma_1 <- sd(distance)
n1 <- length(distance)
hist(distance,
     freq = FALSE,
     breaks = 20,
     main = "Gráfica Nº2: Comparación de la realidad con el modelo de
     probabilidad normal en la Distancia Estimada de los pozos de gas 
     natural",
     xlab = "Distancia Estimada",
     ylab = "Densidad de probabilidad",
     col = "lightgray",
     border = "black")

x <- seq(min(distance), max(distance), 0.01)
curve(dnorm(x, u_1, sigma_1), col = "blue", lwd = 2, add = TRUE)

4. TESTS DE APROBACIÓN

Fo_1 <- histograma_dist$counts
P1 <- numeric(length(Fo_1))
for (i in 1:length(Fo_1)) {
  P1[i] <- pnorm(histograma_dist$breaks[i+1], u_1, sigma_1) -
    pnorm(histograma_dist$breaks[i], u_1, sigma_1)
}
Fe_1 <- P1 * n1
Fo_1 <- (Fo_1 / n1) * 100
Fe_1 <- (Fe_1 / n1) * 100
plot(Fo_1, Fe_1,
     main = "Grafica Nro.3: Correlacion de frecuencias en el modelo normal
                 de la Distancia Estimada de los pozos de gas natural",
     xlab = "Frecuencia observada (%)",
     ylab = "Frecuencia esperada (%)",
     col = "blue3")
abline(lm(Fe_1 ~ Fo_1), col = "red", lwd = 2)

Correlacion_1 <- cor(Fo_1, Fe_1) * 100
x2_1 <- sum((Fe_1 - Fo_1)^2 / Fe_1)
grados_libertad_1 <- length(Fo_1) - 1
umbral_aceptacion_1 <- qchisq(0.9999, grados_libertad_1)

tabla_resumen <- data.frame(
  Variable = "Distancia Estimada",
  Pearson = round(Correlacion_1, 2),
  Chi = round(x2_1, 2),
  Umbral = round(umbral_aceptacion_1, 2)
)

tabla_resumen %>%
  gt() %>%
  cols_label(
    Variable = "Variable",
    Pearson = "Test Pearson (%)",
    Chi = "Chi Cuadrado",
    Umbral = "Umbral de aceptacion"
  ) %>%
  tab_header(title = md("Tabla Nº2: Resumen del test de bondad de ajuste al modelo normal")) %>%

  tab_style(
    style = list(cell_fill(color = "lightgray"), cell_text(weight = "bold")),
    locations = cells_body(rows = Variable == "TOTAL") # Ajuste menor si hubiera total
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(
    table.width = pct(80),
    heading.title.font.size = px(20),
    heading.title.font.weight = "bold",
    table.font.names = "Open Sans",
    column_labels.font.weight = "bold"
  )
Tabla Nº2: Resumen del test de bondad de ajuste al modelo normal
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptacion
Distancia Estimada 85.59 36.03 37.37

5. CÁLCULO DE PROBABILIDADES

##GENERAMOS LA PREGUNTA DE PROBABILIDAD

plot.new()
plot.window(xlim = c(0, 100), ylim = c(0, 100))

# Dibujamos los textos
text(50, 55, "¿Cuál es la probabilidad de que la Distancia Estimada", cex = 1.25, font = 2) 
text(50, 35, "se encuentre entre 10 y 50 unidades?", cex = 1.25, font = 2) 

# Diseñamos el marco
rect(0, 15, 100, 75, border = "#2A9D8F", lwd = 3)

Probabilidad_1 <- (pnorm(50, u_1, sigma_1) -
                     pnorm(10, u_1, sigma_1)) * 100
Probabilidad_1
## [1] 21.33135
plot(x, dnorm(x, u_1, sigma_1),
     col = "skyblue3",
     lwd = 2,
     main = "Gráfica Nº4: Cálculo de probabilidades",
     ylab = "Densidad de probabilidad",
     xlab = "Distancia Estimada")

x_section <- seq(10, 50, 0.01)
y_section <- dnorm(x_section, u_1, sigma_1)

lines(x_section, y_section, col = "red", lwd = 2)

polygon(c(x_section, rev(x_section)),
        c(y_section, rep(0, length(y_section))),
        col = rgb(1, 0, 0, 0.6))

legend("topright",
       legend = c("Modelo Normal", "Area de Probabilidad"),
       col = c("skyblue3", "red"),
       lwd = 2,
       cex = 0.7)

text(min(x)+15,
     max(dnorm(x, u_1, sigma_1)) * 0.9,
     paste0("Prob.= ",
            round(Probabilidad_1, 2), "%"),
     cex = 0.8,
     font = 2)

6. INTERVALOS DE CONFIANZA

# Media aritmetica
x_m <- mean(distance)
x_m
## [1] 74.86054
# Desviacion estandar
sigma <- sd(distance)
sigma
## [1] 48.80406
# Tamano muestral
n <- length(distance)
n
## [1] 12561
# Error estandar (sigma / sqrt(n))
e <- sigma / sqrt(n)
e
## [1] 0.4354556
# Intervalo de confianza aproximado
li <- x_m - 2 * e
li
## [1] 73.98963
ls <- x_m + 2 * e
ls
## [1] 75.73145
tabla_media <- data.frame(
  Limite_Inferior = round(li, 2),
  Media_Poblacional = "Distancia Estimada",
  Limite_Superior = round(ls, 2),
  Error_Estandar = round(e, 4)
)

tabla_media %>%
  gt() %>%
  cols_label(
    Limite_Inferior = "Límite inferior",
    Media_Poblacional = "Media poblacional",
    Limite_Superior = "Límite superior",
    Error_Estandar = "Error estándar poblacional"
  ) %>%
  tab_header(title = md("Tabla Nº3: Intervalo de confianza para la media poblacional")) %>%

  cols_align(align = "center", columns = everything()) %>%
  tab_options(
    table.width = pct(80),
    heading.title.font.size = px(20),
    heading.title.font.weight = "bold",
    table.font.names = "Open Sans",
    column_labels.font.weight = "bold"
  )
Tabla Nº3: Intervalo de confianza para la media poblacional
Límite inferior Media poblacional Límite superior Error estándar poblacional
73.99 Distancia Estimada 75.73 0.4355

7. CONCLUSIÓN

## # La variable Distancia estimada se ajusta adecuadamente a un modelo de distribucion normal, con una media aritmetica de 74.86 puntos y una desviacion estandar de 48.86 puntos, lo que indica una concentracion de los valores en torno a este nivel.
## # A partir del modelo normal, se determino que la probabilidad de que la Distancia estimada se encuentre entre 10 y 50 es de aproximadamente 21.33 %, lo que refleja la frecuencia de estos valores.
## # Finalmente, mediante la aplicacion del Teorema del Limite Central y considerando un tamano muestral de 12561 observaciones, se estimo que la media poblacional de la Distancia estimada se encuentra entre 73.99 y 75.73 puntos, con un 85.59 % de confianza, lo que respalda la validez de las inferencias realizadas bajo el modelo normal.