DISTRITO ## Carga de datos
setwd("/cloud/project")
datos <- read.csv("DATOS.csv", header = TRUE, sep = ";" , dec = ".")
str(datos)
## 'data.frame': 10190 obs. of 17 variables:
## $ Distrito_edit : chr "1" "1" "1" "1" ...
## $ Year_edit_Fecha_del_derrame : int 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
## $ Mes_edit_Fecha_del_derrame : int 6 3 4 4 6 6 3 9 10 6 ...
## $ Categoria_Instalaciones : chr "Instalacion fija" "Pozos" "Pozos" "Pozos" ...
## $ Operacion_general : chr "Produccion" "Otro" "Produccion" "Produccion" ...
## $ Categoria_Fuente : chr NA "Tanques/Almacenamiento" "Lineas/Tuberias" "Infraestructura Fija" ...
## $ Grupo_causas_probable : chr NA "Afectaciones externas" "Factores humanos" "Problemas tecnicos" ...
## $ Liberacion_petroleo_crudo_edicion : num 0 0 0 0 0 ...
## $ Edicion_recuperacion_petroleo_crudo : num NA 0 0 0 0 0 0 0 0 NA ...
## $ Volumen_liberado_Cond_Final : num 0 0 0 10 0 0 0 1 0 0 ...
## $ Liberacion_agua_de_produccion_edicion: num 6720 3780 5040 420 10920 ...
## $ Liberacion_volumen_gas : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Volumen_condensado_recuperado : num NA 0 0 1 0 0 0 0 0 NA ...
## $ Edicion_Recuperacion_agua_producida : num NA 420 4620 0 10920 ...
## $ Derrame_sobre_agua_limpio : chr "NO" "NO" "NO" "NO" ...
## $ Estado_general : chr "Observaciones tecnicas" NA NA NA ...
## $ Codigo_area : int 1 1 1 1 1 1 1 1 1 3 ...
# Filtrar valores NA, -1 y vacíos
Codigo_area <- Codigo_area[!is.na(Codigo_area) & Codigo_area != -1 & Codigo_area != ""]
# Crear la tabla de frecuencias
TDF_Codigo_area <- table(Codigo_area)
Tabla <- as.data.frame(TDF_Codigo_area)
colnames(Tabla) <- c("Codigo_area", "ni")
# Calcular la frecuencia relativa (hi)
Tabla$hi <- (Tabla$ni / sum(Tabla$ni)) * 100
Tabla$Codigo_area <- as.character(Tabla$Codigo_area)
# Agregar fila total
fila_total <- data.frame(Codigo_area = "Total",
ni = sum(Tabla$ni),
hi = sum(Tabla$hi),
stringsAsFactors = FALSE)
# Agregar fila total a la tabla
Tabla <- rbind(Tabla, fila_total)
# Mostrar tabla final
print(Tabla)
## Codigo_area ni hi
## 1 1 7285 92.34376981
## 2 2 366 4.63937128
## 3 3 78 0.98871847
## 4 4 155 1.96476106
## 5 5 3 0.03802763
## 6 7 2 0.02535176
## 7 Total 7889 100.00000000
# Ajustar márgenes para etiquetas largas
par(mar = c(8, 4, 3, 2))
# Gráfico de barras (solo sin la fila Total)
barplot(TDF_Codigo_area,
main = "Gráfica No.1:
Distribución de los codigos Area ",
xlab = "Código Área",
ylab = "Frecuencia Absoluta",
col = "aquamarine",
las = 3, # Rotar etiquetas en eje x
cex.names = 0.8,
cex.axis = 0.9,
cex.main = 1.2,
ylim = c(0, max(TDF_Codigo_area) * 1.2),
border = "black")
Modelo binomial
Codigo_area <- as.numeric(Codigo_area)
Fo <- table(Codigo_area)
Fo_df <- as.data.frame(Fo)
colnames(Fo_df) <- c("X", "ni")
Fo_df$X <- as.numeric(as.character(Fo_df$X))
Test de Pearson
Codigo_area <- as.numeric(Codigo_area)
Fo <- table(Codigo_area)
Fo_df <- as.data.frame(Fo)
colnames(Fo_df) <- c("X", "ni")
Fo_df$X <- as.numeric(as.character(Fo_df$X))
n_bin <- 10
p_bin <- mean(Codigo_area) / n_bin
p_bin
## [1] 0.1128153
## [1] 3030.5143424 1734.1348680 588.0383036 130.8572164 19.9679250
## [6] 0.1537523
barplot(
rbind(Fo_df$ni, Fo_df$esperados),
beside = TRUE,
col = c("aquamarine2", "aquamarine4"),
legend = c("Observada", "Esperada"),
names.arg = Fo_df$X,
main = "Gráfica Nº2:
Distribución Binomial de Código Área",
xlab = "Codigo Área",
ylab = "Frecuencia",
ylim = c(0, max(c(Fo_df$ni, Fo_df$esperados)) * 1.2)
)
correlacion_bin <- cor(Fo_df$ni, Fo_df$esperados)
cat("Correlación Observado vs Esperado (Binomial):", round(correlacion_bin, 3), "\n")
## Correlación Observado vs Esperado (Binomial): 0.866
# Gráfico de correlación - Binomial
plot(Fo_df$esperados, Fo_df$ni,
main = "Gráfica Nº3:
Correlación Binomial: Frecuencia Teórica vs Experimental",
xlab = "Teórica (Binomial)",
ylab = "Experimental",
pch = 19, col = "aquamarine3")
abline(lm(ni ~ esperados, data = Fo_df), col = "red", lwd = 2)
text(x = min(Fo_df$esperados), y = max(Fo_df$ni),
labels = paste("r =", round(correlacion_bin, 3)),
pos = 4, col = "black", cex = 0.9)
# Eliminar la fila "Total" para graficar
Tabla <- Tabla[Tabla$Codigo_area != "Total", ] # Eliminar fila "Total" para graficar
# Convertir Codigo_area a factor con orden correcto
Tabla$Codigo_area <- factor(Tabla$Codigo_area, levels = Tabla$Codigo_area) # asegurar orden
# Gráfico de barras de frecuencia relativa (%)
barplot(Tabla$hi,
names.arg = Tabla$Codigo_area,
main = "Gráfica No.2: Distribución Relativa de Codigo_area",
xlab = "Código de Área",
ylab = "Frecuencia Relativa (%)",
col = "aquamarine2",
las = 3,
cex.names = 0.8,
cex.axis = 0.9,
cex.main = 1.2,
ylim = c(0, max(Tabla$hi) * 1.2),
border = "black")
Chi-cuadrado
x2_bin <- sum(((Fo_df$ni - Fo_df$esperados)^2) / Fo_df$esperados)
gl_bin <- length(Fo_df$X) - 1
vc_bin <- qchisq(0.95, df = gl_bin)
cat("Chi-cuadrado Binomial:", round(x2_bin, 3), "\n")
## Chi-cuadrado Binomial: 7535.606
## Valor crítico (0.95): 11.07
## Valor crítico (0.95): 16.919
if (x2_bin < vc_bin) {
cat("No se rechaza H0: El modelo binomial se ajusta bien a los datos.\n")
} else {
cat("Se rechaza H0: El modelo binomial no se ajusta a los datos.\n")
}
## Se rechaza H0: El modelo binomial no se ajusta a los datos.
##Modelo de Pearson
## [1] 1.128153
## [1] 2880.310648 1624.715729 610.976042 172.318633 38.880361 1.178195
Test de Pearson
correlacion_pois <- cor(Fo_df$ni, Fo_df$esperados)
cat("Correlación Observado vs Esperado (Poisson):", round(correlacion_pois, 3), "\n")
## Correlación Observado vs Esperado (Poisson): 0.87
## Correlación Observado vs Esperado (Poisson): 0.933
# Gráfico de correlación - Poisson
plot(Fo_df$esperados, Fo_df$ni,
main = "Gráfica Nº5:
Correlación Poisson: Frecuencia Teórica vs Experimental",
xlab = "Teórica (Poisson)",
ylab = "Experimental",
pch = 19, col = "aquamarine4")
abline(lm(ni ~ esperados, data = Fo_df), col = "red", lwd = 2)
text(x = min(Fo_df$esperados), y = max(Fo_df$ni),
labels = paste("r =", round(correlacion_pois, 3)),
pos = 4, col = "black", cex = 0.9)
Chi-cuadrado
x2_pois <- sum(((Fo_df$ni - Fo_df$esperados)^2) / Fo_df$esperados)
gl_pois <- length(Fo_df$X) - 1
vc_pois <- qchisq(0.95, df = gl_pois)
cat("Chi-cuadrado Poisson:", round(x2_pois, 3), "\n")
## Chi-cuadrado Poisson: 8211.356
## Valor crítico (0.95): 11.07
if (x2_pois < vc_pois) {
cat("No se rechaza H0: El modelo Poisson se ajusta bien a los datos.\n")
} else {
cat("Se rechaza H0: El modelo Poisson no se ajusta a los datos.\n")
}
## Se rechaza H0: El modelo Poisson no se ajusta a los datos.