ANÁLISIS ESTADÍSTICO

1. CARGA DE LIBRERÍAS Y DATOS

                    #==============================ENCABEZADO===================
                    # TEMA: ESTADÍSTICA DESCRIPTIVA - LATITUD
                    # AUTOR: GRUPO 3
                    # FECHA: 03-2026
                    #===========================================================
library(dplyr)
library(e1071)
library(gt)

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

2. SELECCIÓN DE VARIABLE

Asignamos nuestra variable Latitude.of.well.pad (Latitud) con el nombre de latitud_pozos

latitud_pozos <- as.numeric(datos$Latitude.of.well.pad)
latitud_pozos <- na.omit(latitud_pozos)
n <- length(latitud_pozos)

3. TABLA DE DISTRIBUCIÓN DE CANTIDAD

TABLA DE DISTRIBUCIÓN CON STURGES

# REGLA DE STURGES
k <- floor(1 + 3.322 * log10(n))
k 
## [1] 14
minimo <- min(latitud_pozos)
maximo <- max(latitud_pozos)
R <- maximo - minimo
R
## [1] 4.998391
#Amplitud
A <- R / k
A 
## [1] 0.3570279
Li_s <- round(seq(from = minimo, to = maximo - A, by = A), 2)

Ls_s <- round(seq(from = minimo + A, to = maximo, by = A), 2)

MC_s <- round((Li_s + Ls_s) / 2, 2)

ni_s <- numeric(length(Li_s))

for (i in 1:length(Li_s)) {
  ni_s[i] <- sum(latitud_pozos >= Li_s[i] & latitud_pozos < Ls_s[i])
}
ni_s[length(Li_s)] <- sum(latitud_pozos >= Li_s[length(Li_s)] & latitud_pozos <= maximo)

TDF_Sturges <- data.frame(Li=Li_s, Ls=Ls_s, MC=MC_s, ni=ni_s, hi=round((ni_s/n)*100, 2))
TDF_Sturges_P <- rbind(TDF_Sturges, data.frame(Li="TOTAL", Ls="", MC="", ni=sum(ni_s), hi=100))
Tabla Nº 1. Tabla de distribución de cantidad de latitud de los pozos de gas natural en Nuevo México
Li Ls MC ni hi
32 32.36 32.18 707 5.63
32.36 32.71 32.53 1290 10.27
32.71 33.07 32.89 638 5.08
33.07 33.43 33.25 74 0.59
33.43 33.79 33.61 413 3.29
33.79 34.14 33.97 155 1.23
34.14 34.5 34.32 0 0.00
34.5 34.86 34.68 0 0.00
34.86 35.21 35.03 0 0.00
35.21 35.57 35.39 0 0.00
35.57 35.93 35.75 0 0.00
35.93 36.28 36.11 303 2.41
36.28 36.64 36.46 3563 28.37
36.64 37 36.82 5418 43.13
TOTAL 12561 100.00
Tabla 1 de 4

TABLA DE DISTRIBUCIÓN AGRUPADA

Debido a los valores decimales resultantes de aplicar la regla de Sturges, se procedió a agrupar los datos en intervalos prácticos.

h_f <- hist(latitud_pozos, breaks = seq(32, 37, by = 1), plot = FALSE)
lis <- h_f$breaks[1:(length(h_f$breaks)-1)]
lss <- h_f$breaks[2:length(h_f$breaks)]
MC_f  <- h_f$mids
ni_f  <- h_f$counts
hi_f  <- (ni_f / sum(ni_f)) * 100

Niasc <- cumsum(ni_f); Nidsc <- rev(cumsum(rev(ni_f)))
Hiasc <- round(cumsum(hi_f), 2); Hidsc <- round(rev(cumsum(rev(hi_f))), 2)

TDF_Simp <- data.frame(Li=lis, Ls=lss, MC=MC_f, ni=ni_f, hi=round(hi_f, 2), 
                       Niasc, Nidsc, Hiasc, Hidsc)
TDF_Simp_P <- rbind(TDF_Simp, data.frame(Li="TOTAL", Ls=" ", MC=" ", ni=sum(ni_f), hi=100, Niasc=" ", Nidsc=" ", Hiasc=" ", Hidsc=" "))
TABLA°2: Tabla de distribución de cantidad de la latitud en pozos de gas natural en Nuevo México
Li Ls MC ni hi Niasc Nidsc Hiasc Hidsc
32 33 32.5 2602 20.71 2602 12561 20.71 100
33 34 33.5 670 5.33 3272 9959 26.05 79.29
34 35 34.5 5 0.04 3277 9289 26.09 73.95
35 36 35.5 3 0.02 3280 9284 26.11 73.91
36 37 36.5 9281 73.89 12561 9281 100 73.89
TOTAL 12561 100.00
Tabla 2 de 4

4. GRÁFICAS DE DISTRIBUCIÓN

Creación de Polígono de Frecuencia

h_datos23 <- hist(latitud_pozos, breaks = mis_breaks, plot = FALSE)

limite_inferior <- h_datos23$breaks[1]
limite_superior <- tail(h_datos23$breaks, 1)

x_cant <- c(limite_inferior, h_datos23$mids, limite_superior)
y_cant <- c(0, h_datos23$counts, 0)


# GRÁFICA 1 
hist(latitud_pozos, breaks = mis_breaks, col = colores, xlab = "Latitud (grados)", ylab = "Cantidad (ni)",
     main = "Gráfica N°1: Distribución de cantidad de la latitud en pozos
      de gas natural en Nuevo México")
lines(x_cant, y_cant, type = "b", col = "red", pch = 19, lwd = 2) 
box(which = "outer", col = "black")

# GRÁFICA 2
hist(latitud_pozos, breaks = mis_breaks, col = colores, xlab = "Latitud (grados)", ylab = "Cantidad (ni)",
     ylim = c(0, 12561), 
     main = "Gráfica N°2: Distribución de cantidad de la latitud en pozos
      de gas natural en Nuevo México")
box(which = "outer", col = "black")

# GRÁFICA 3
h_porcentaje <- hist(latitud_pozos, breaks = mis_breaks, plot = FALSE)
h_porcentaje$counts <- (h_porcentaje$counts / sum(h_porcentaje$counts)) * 100

plot(h_porcentaje, col = colores, xlab = "Latitud (grados)", ylab = "Porcentaje (%)",
     main = "Gráfica N°3: Distribución de cantidad en porcentaje 
        de la latitud en pozos de gas natural en Nuevo México")
box(which = "outer", col = "black")

# GRÁFICA 4
plot(h_porcentaje, col = colores, xlab = "Latitud (grados)", ylab = "Porcentaje (%)",
     ylim = c(0, 100),
     main = "Gráfica N°4: Distribución de cantidad en porcentaje 
        de la latitud en pozos de gas natural en Nuevo México")
box(which = "outer", col = "black")

# GRÁFICA 5
par(mar = c(7, 4, 4, 2) + 0.1)

todos_x <- c(lss, lis)
todos_y <- c(Nidsc, Niasc)

plot(lss, Nidsc, type = "b", col = "blue", pch = 19, bg = "white", 
     xlim = range(todos_x), 
     ylim = range(todos_y),
     xlab = "", 
     ylab = "Cant. Acumulada (Ni)",
     main = "Gráfica N°5: Ojivas combinadas de cantidad acumulada de la\nlatitud en pozos de gas natural en Nuevo México")

lines(lis, Niasc, col = "black", type = "b", pch = 19)
legend("top", legend = c("Descendente", "Ascendente"), col = c("blue", "black"), pch = c(19, 19), pt.bg = "white", bty = "n")
box(which = "outer", col = "black")
mtext("Latitud (grados)", side = 1, line = 5.5, cex = 1)

# GRÁFICA 6
plot(lss, Hidsc, type="b", col="blue", pch=19, bg="white", ylim=c(0, 100),
     xlab="Latitud (grados)", ylab="Porcentaje Acumulado (Hi)",
     main="Gráfica N°6: Ojivas combinadas de porcentaje acumulado de la 
     latitud en pozos de gas natural en Nuevo México")
lines(lis, Hiasc, col="black", type="b", pch=19)
legend("bottomright", legend=c("Descendente", "Ascendente"), col=c("blue", "black"), pch=c(19, 19), pt.bg="white", bty="n")
box(which = "outer", col = "black")

# GRÁFICA 7
boxplot(latitud_pozos, horizontal = TRUE, col = "skyblue", xlab = "Latitud (grados)",
        main = "Gráfica N°7: Distribución de cantidad de la latitud 
        en pozos de gas natural en Nuevo México")
box(which = "outer", col = "black")

summary(latitud_pozos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   32.00   33.80   36.58   35.65   36.79   37.00
# GRÁFICA N°8: SUPERPOSICIÓN DE BOXPLOT SOBRE HISTOGRAMA
hist(latitud_pozos, breaks = mis_breaks, prob = TRUE,
     col = colores, xlab = "Latitud (grados)", ylab = "Densidad",
     main = "Gráfica N°8: Distribución de cantidad de la latitud 
        en pozos de gas natural en Nuevo México")
par(new = TRUE)
boxplot(latitud_pozos, horizontal = TRUE, axes = FALSE,
        col = rgb(0, 0.8, 1, alpha = 0.5))
box(which = "outer", col = "black")

5. INDICADORES ESTADÍSTICOS Y OUTLIERS

TablaInd <- data.frame(Variable="Latitud", min=min(latitud_pozos), max=max(latitud_pozos),
                       x=round(mean(latitud_pozos),1), Me=median(latitud_pozos), 
                       sd=round(sd(latitud_pozos),1), Cv=round((sd(latitud_pozos)/mean(latitud_pozos))*100,1),
                       As=round(skewness(latitud_pozos),1), K=round(kurtosis(latitud_pozos),2))

#media
media_val <- mean(latitud_pozos)
media_val
## [1] 35.65062
#desviacion estandar
desv_val <- sd(latitud_pozos)
desv_val
## [1] 1.757531
#minimo
min_val <- min(latitud_pozos)
min_val
## [1] 32.00058
#maximo
max_val <- max(latitud_pozos)
max_val
## [1] 36.99897
cv_analisis <- (desv_val / media_val) * 100
cv_analisis
## [1] 4.929873
tipo_datos <- if(cv_analisis > 30) "heterogeneos" else "homogeneos"
conteo_atipicos <- length(boxplot.stats(latitud_pozos)$out)
Indicadores estadísticos de la variable latitud
Variable min max x Me sd Cv As K
Latitud 32.00058 36.99897 35.7 36.58063 1.8 4.9 -1.1 -0.61
Tabla 3 de 4
valores_atipicos <- boxplot.stats(latitud_pozos)$out 
n_atipicos <- length(valores_atipicos) 

min_atipico <- if(n_atipicos > 0) min(valores_atipicos) else 0
max_atipico <- if(n_atipicos > 0) max(valores_atipicos) else 0

TablaOutliers <- data.frame(Cantidad = n_atipicos, Mínimo = min_atipico, Máximo = max_atipico) 
TABLA N°4: Valores atípicos de la variable Latitud
Cantidad Mínimo Máximo
0 0 0
Tabla 4 de 4

6. CONCLUSIÓN

La variable latitud, medida en grados, fluctúa entre 32 y 37, con valores que se encuentran en torno a la media de 35.6, y una desviación estándar de 1.76, lo que indica un conjunto de datos muy homogéneos tambien refleja una marcada asimetría hacia hacia el sur y se identifican 0 valores atípicos. Por todo lo anterior mencionado, el comportamiento de la latitud es altamente beneficioso, ya que la baja dispersión de los datos refleja una alta concentración de los pozos, lo cual favorece la consistencia del análisis