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.