Modelo de Probabilidad del Estado de los pozos petrolíferos
Se importan los datos de los pozos petrolíferos y se verifica su estructura.
setwd("C:/Users/majke/Downloads/Proyecto Estadistica/RMARKDOWN")
Datos <- read.csv("Pozos brasil 2.csv", header = TRUE, sep = ";", dec = ",", fileEncoding = "Latin1")
str(Datos)
## 'data.frame': 29575 obs. of 59 variables:
## $ POCO : chr "7-RO-123HP-RJS" "1-BP-7-RJS" "7-ARGO-4H-ESS" "7-ARGO-5H-ESS" ...
## $ CADASTRO : num 7.43e+10 7.43e+10 3.43e+10 3.43e+10 3.43e+10 ...
## $ OPERADOR : chr "Petrobras" "BP Energy" "Shell Brasil" "Shell Brasil" ...
## $ POCO_OPERADOR : chr "7RO123HPRJS" "ANU" "7ARGO4HESS" "7ARGO5HESS" ...
## $ ESTADO : chr "RJ" "RJ" "ES" "ES" ...
## $ BACIA : chr "Campos" "Campos" "Campos" "Campos" ...
## $ BLOCO : chr "" "C-M-473" "" "" ...
## $ SIG_CAMPO : chr "RO " "" "ARGO " "ARGO " ...
## $ CAMPO : chr "RONCADOR" "" "ARGONAUTA" "ARGONAUTA" ...
## $ TERRA_MAR : chr "M" "M" "M" "M" ...
## $ POCO_POS_ANP : chr "S" "S" "S" "S" ...
## $ TIPO : chr "Explotatório" "Exploratório" "Explotatório" "Explotatório" ...
## $ CATEGORIA : chr "Desenvolvimento" "Pioneiro" "Desenvolvimento" "Desenvolvimento" ...
## $ RECLASSIFICACAO : chr "PRODUTOR COMERCIAL DE PETRÓLEO" "PORTADOR DE PETRÓLEO" "ABANDONADO POR OUTRAS RAZÕES" "INDEFINIDO" ...
## $ SITUACAO : chr "PRODUTOR" "ABANDONADO POR LOGÍSTICA EXPLORATÓRIA" "ABANDONADO DEFINITIVAMENTE" "PRODUTOR" ...
## $ INICIO : chr "03/03/2012" "14/03/2012" "12/04/2012" "14/04/2012" ...
## $ TERMINO : chr "10/03/2013" "20/09/2012" "19/09/2012" "02/05/2013" ...
## $ CONCLUSAO : chr "10/03/2013" "19/10/2012" "28/09/2012" "13/05/2013" ...
## $ TITULARIDADE : chr "Público" "Público" "Público" "Público" ...
## $ LATITUDE_BASE_4C : chr "-21:57:45,630" "-23:06:09,622" "-21:08:06,801" "-21:08:12,535" ...
## $ LONGITUDE_BASE_4C : chr "-39:44:01,130" "-40:00:41,295" "-39:46:53,226" "-39:46:49,296" ...
## $ LATITUDE_BASE_DD : num -22 -23.1 -21.1 -21.1 -21.1 ...
## $ LONGITUDE_BASE_DD : num -39.7 -40 -39.8 -39.8 -39.8 ...
## $ DATUM_HORIZONTAL : chr "SIRGAS2000" "SIRGAS2000" "SIRGAS2000" "SIRGAS2000" ...
## $ TIPO_DE_COORDENADA_DE_BASE: chr "Definitiva" "Definitiva" "Definitiva" "Definitiva" ...
## $ DIRECAO : chr "Horizontal" "Vertical" "Horizontal" "Horizontal" ...
## $ PROFUNDIDADE_VERTICAL_M : num -3145 6900 2937 2934 2953 ...
## $ PROFUNDIDADE_SONDADOR_M : num 4050 6925 3809 4575 4570 ...
## $ PROFUNDIDADE_MEDIDA_M : num 4050 6925 3809 4575 4570 ...
## $ REFERENCIA_DE_PROFUNDIDADE: chr "MR" "MR" "MR" "MR" ...
## $ MESA_ROTATIVA : num 24 25 24.2 24.2 24.2 ...
## $ COTA_ALTIMETRICA_M : num 0 0 0 0 0 ...
## $ LAMINA_D_AGUA_M : num 1827 2730 1706 1705 1654 ...
## $ DATUM_VERTICAL : chr "NM" "NM" "NM" "NM" ...
## $ UNIDADE_ESTRATIGRAFICA : chr "" "" "" "" ...
## $ GEOLOGIA_GRUPO_FINAL : chr "Campos" "Lagoa Feia" "Campos" "Campos" ...
## $ GEOLOGIA_FORMACAO_FINAL : chr "Carapebus" "Macabu" "Ubatuba" "Ubatuba" ...
## $ GEOLOGIA_MEMBRO_FINAL : chr "" "" "" "" ...
## $ CDPE : chr "Existe" "Existe" "Existe" "" ...
## $ AGP : chr "" "" "" "" ...
## $ PC : chr "" "Existe" "" "" ...
## $ PAG : chr "" "" "" "" ...
## $ PERFIS_CONVENCIONAIS : chr "" "Existe" "" "" ...
## $ DURANTE_PERFURACAO : chr "Existe" "Existe" "Existe" "Existe" ...
## $ PERFIS_DIGITAIS : chr "" "" "" "" ...
## $ PERFIS_PROCESSADOS : chr "" "" "" "" ...
## $ PERFIS_ESPECIAIS : chr "" "" "" "" ...
## $ AMOSTRA_LATERAL : chr "" "Existe" "" "" ...
## $ SISMICA : chr "" "Existe" "" "" ...
## $ TABELA_TEMPO_PROFUNDIDADE : chr "" "" "" "" ...
## $ DADOS_DIRECIONAIS : chr "Existe" "Existe" "Existe" "Existe" ...
## $ TESTE_A_CABO : chr "Existe" "Existe" "" "" ...
## $ TESTE_DE_FORMACAO : chr "" "" "" "" ...
## $ CANHONEIO : chr "" "" "" "" ...
## $ TESTEMUNHO : chr "" "" "" "" ...
## $ GEOQUIMICA : chr "" "" "" "" ...
## $ SIG_SONDA : chr "SS-49" "DS4" "NB2" "NB2" ...
## $ NOM_SONDA : chr "SEDCO 707" "Deep Ocean Clarion" "Bully 2" "Bully 2" ...
## $ DHA_ATUALIZACAO : chr "28/1/18 5:00" "28/1/18 5:00" "28/1/18 5:00" "28/1/18 5:00" ...
Se agrupan las categorías de la variable, se calculan las frecuencias absolutas y relativas, y se incorporan los totales correspondientes.
Situación <- Datos$SITUACAO
TDFSituación <- as.data.frame(table(Situación))
TDFSituación
## Situación
## 1
## 2 ABANDONADO AGUARDANDO ABANDONO DEFINITIVO/ARRASAMENTO
## 3 ABANDONADO AGUARDANDO REINÍCIO DE PERFURAÇÃO
## 4 ABANDONADO DEFINITIVAMENTE
## 5 ABANDONADO POR LOGÍSTICA EXPLORATÓRIA
## 6 ABANDONADO/PARADO AGUARDANDO INTERVENÇÃO PARA AVALIAÇÃO, COMPLETAÇÃO OU RESTAURAÇÃO
## 7 ARRASADO
## 8 CEDIDO PARA PRODUÇÃO DE ÁGUA
## 9 DE DESCARTE
## 10 DEVOLVIDO
## 11 EM ABANDONO
## 12 EM INTERVENÇÃO PARA AVALIAÇÃO, COMPLETAÇÃO OU RESTAURAÇÃO
## 13 EM PERFURAÇÃO
## 14 EQUIPADO AGUARDANDO INÍCIO DE INJEÇÃO
## 15 EQUIPADO AGUARDANDO INÍCIO DE PRODUÇÃO
## 16 INJETOR
## 17 OUTRO
## 18 PRODUÇÃO DE AGUA PARA INJEÇÃO
## 19 PRODUTOR
## Freq
## 1 824
## 2 3120
## 3 2
## 4 5074
## 5 719
## 6 253
## 7 2193
## 8 262
## 9 40
## 10 1446
## 11 8
## 12 2711
## 13 6
## 14 9
## 15 60
## 16 2653
## 17 96
## 18 187
## 19 9912
Agrupación
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
TDFSituación$Condición <- ifelse(TDFSituación$Situación %in% c("ABANDONADO AGUARDANDO ABANDONO DEFINITIVO/ARRASAMENTO", "ABANDONADO AGUARDANDO REINÍCIO DE PERFURAÇÃO", "ABANDONADO DEFINITIVAMENTE", "ABANDONADO POR LOGÍSTICA EXPLORATÓRIA", "ABANDONADO/PARADO AGUARDANDO INTERVENÇÃO PARA AVALIAÇÃO, COMPLETAÇÃO OU RESTAURAÇÃO", "EM ABANDONO"), "Abandonados",
ifelse(TDFSituación$Situación %in% c("EM PERFURAÇÃO"), "Intervención",
ifelse(TDFSituación$Situación %in% c("EQUIPADO AGUARDANDO INÍCIO DE PRODUÇÃO0", "EQUIPADO AGUARDANDO INÍCIO DE INJEÇÃO"), "Equipado en espera",
ifelse(TDFSituación$Situación %in% c("INJETOR", "PRODUTOR"), "En funcionamiento",
ifelse(TDFSituación$Situación %in% c("CEDIDO PARA PRODUÇÃO DE ÁGUA", "PRODUÇÃO DE AGUA PARA INJEÇÃO"), "Producción de agua",
ifelse(TDFSituación$Situación %in% c("DEVOLVIDO", "DE DESCARTE"), "Descartado",
ifelse(TDFSituación$Situación %in% c("ARRASADO"), "Devastado","Otros")))))))
head(TDFSituación$Condición)
## [1] "Otros" "Abandonados" "Abandonados" "Abandonados" "Abandonados"
## [6] "Abandonados"
TDFSituación$Freq <- as.numeric(as.character(TDFSituación$Freq))
library(dplyr)
TDFSituación1 <- TDFSituación %>%
group_by(Condición) %>%
summarise(
ni = sum(Freq),
hi = round(sum(Freq) / sum(TDFSituación$Freq)*100, 5))
TDFSituación1 <- data.frame(TDFSituación1)
Agregar totales
TDFSituación1 <- TDFSituación1 [, c("Condición", "ni", "hi")]
total_ni <- sum(TDFSituación1$ni)
total_hi <- sum(TDFSituación1$hi)
TDFSituacióncompleta <- rbind(TDFSituación1, data.frame( Condición = "Total",
ni = total_ni,
hi = total_hi))
print(TDFSituacióncompleta)
## Condición ni hi
## 1 Abandonados 9176 31.02620
## 2 Descartado 1486 5.02451
## 3 Devastado 2193 7.41505
## 4 En funcionamiento 12565 42.48521
## 5 Equipado en espera 9 0.03043
## 6 Intervención 6 0.02029
## 7 Otros 3691 12.48014
## 8 Producción de agua 449 1.51817
## 9 Total 29575 100.00000
library(gt)
gt(TDFSituacióncompleta) %>%
tab_header(
title = md("**DISTRIBUCIÓN DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL**"),
subtitle = "Situación de los pozos petrolíferos en Brasil") %>%
fmt_number(
columns = hi,
decimals = 2) %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
locations = cells_title()
) %>%
tab_style(
style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
locations = cells_column_labels()
) %>%
tab_options(
table.border.top.color = "#2E4053",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(6))
| DISTRIBUCIÓN DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL | ||
| Situación de los pozos petrolíferos en Brasil | ||
| Condición | ni | hi |
|---|---|---|
| Abandonados | 9176 | 31.03 |
| Descartado | 1486 | 5.02 |
| Devastado | 2193 | 7.42 |
| En funcionamiento | 12565 | 42.49 |
| Equipado en espera | 9 | 0.03 |
| Intervención | 6 | 0.02 |
| Otros | 3691 | 12.48 |
| Producción de agua | 449 | 1.52 |
| Total | 29575 | 100.00 |
Se representa gráficamente la cantidad de pozos por condición.
TDFSituaciónfinal <- TDFSituacióncompleta[TDFSituacióncompleta$Condición != "Total", ]
par(mar = c(9, 4, 4, 2))
barplot(TDFSituaciónfinal$ni,
main = "Gráfica N°1: Estado de los pozos petrolíferos en Brasil",
ylab = "Cantidad",
col = "#263238", names.arg = TDFSituaciónfinal$Condición,
las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
mtext("Condición", side = 1, line = 7)
Se representa el porcentaje correspondiente a cada condición.
par(mar = c(9, 4, 4, 2))
barplot(TDFSituaciónfinal$hi,
main = "Gráfica N°3: Porcentaje de la condición de los pozos en Brasil",
ylab = "Porcentaje",
col = "#263238", names.arg = TDFSituaciónfinal$Condición,
las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
mtext("Condición", side = 1, line = 7)
A partir de las frecuencias relativas se construye un modelo empírico de probabilidad para la condición de los pozos.
P_Condicion <- TDFSituaciónfinal$ni / sum(TDFSituaciónfinal$ni)
par(mar = c(9, 4, 4, 2))
barplot(P_Condicion,
main = "Distribución de probabilidad de la condición de los pozos en Brasil",
ylab = "Probabilidad",
col = "#263238", names.arg = TDFSituaciónfinal$Condición,
las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
mtext("Condición", side = 1, line = 7)
Se construyó un Modelo de Probabilidad Categórico basado en las frecuencias observadas. Para validar la relevancia de este modelo, se aplicó una prueba de Bondad de Ajuste Chi-cuadrado contrastándolo contra una distribución uniforme
observados <- TDFSituaciónfinal$ni
k <- length(observados)
gl <- k - 1
alpha <- 0.05
prob_esperadas <- rep(1 / k, k)
chi_resultado <- chisq.test(observados, p = prob_esperadas)
chi_critico <- qchisq(1 - alpha, df = gl)
chi_calculado <- chi_resultado$statistic
cat("Chi-cuadrado calculado:", chi_calculado, "\n")
## Chi-cuadrado calculado: 41544.76
cat("Chi-cuadrado crítico:", chi_critico, "\n")
## Chi-cuadrado crítico: 14.06714
if (chi_calculado > chi_critico) {
cat("Se rechaza la hipótesis nula.")
} else {
cat("No se rechaza la hipótesis nula.")
}
## Se rechaza la hipótesis nula.
Dado que el valor de chi-cuadrado calculado (\(41544.76\)) supera ampliamente el umbral crítico (\(14.06714\)), se rechaza la hipótesis nula (\(H_0\)) con un nivel de confianza del 95%.
El rechazo de la hipótesis de uniformidad demuestra estadísticamente que la condición de los pozos en Brasil no es aleatoria ni equitativa. Esto valida la necesidad de nuestro modelo de probabilidad empírico, ya que confirma que existen factores operativos y logísticos que causan una predominancia clara de ciertas condiciones, como los pozos ‘En funcionamiento’ y ‘Abandonados’, sobre otras categorías.
¿Cuál es la probabilidad de que un pozo petrolero se encuentre en condición de Abandonado?
x <- round(
(TDFSituaciónfinal$ni[TDFSituaciónfinal$Condición == "Abandonados"] /
sum(TDFSituaciónfinal$ni)) * 100, 1)
print(paste("La probabilidad es de:", x, "%"))
## [1] "La probabilidad es de: 31 %"
La probabilidad obtenida indica que aproximadamente 31 % de los pozos petrolíferos en Brasil se encuentran en condición de abandono, según los datos analizados.