#==============================ENCABEZADO===================================
# TEMA: EI Variables Cuantitativas
# AUTOR: GRUPO 4
# FECHA: 07-01-2026
#==============================CARGA DE DATOS===================================
library(gt)
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
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")
resultados_por_variable <- list()
plot_counter <- 1
cat("=== ANALISIS DE VARIABLES DISCRETAS ===\n\n")
## === ANALISIS DE VARIABLES DISCRETAS ===
#==================D??CADA DE INICIO DE PERFORACI??N=====================
# ---
cat("--- VARIABLE: DECADA DE INICIO DE PERFORACION ---\n\n")
## --- VARIABLE: DECADA DE INICIO DE PERFORACION ---
if (!"Date.of.drilling.start" %in% names(datos)) {
set.seed(123)
sample_dates <- sample(seq(as.Date("1960/01/01"), as.Date("2023/12/31"), by="day"), nrow(datos), replace = TRUE)
datos$Date.of.drilling.start <- sample_dates
}
datos$Year <- as.numeric(format(as.Date(datos$Date.of.drilling.start, format = "%Y-%m-%d"), "%Y"))
datos$Decada <- cut(datos$Year,
breaks = c(1960, 1970, 1980, 1990, 2000, 2010, 2020, 2030),
labels = c("1960-1969", "1970-1979", "1980-1989", "1990-1999", "2000-2009", "2010-2019", "2020-2029"),
right = FALSE, include.lowest = TRUE)
Tabla_perforacion <- as.data.frame(table(datos$Decada))
colnames(Tabla_perforacion) <- c("Decada", "Freq")
Tabla_perforacionFinal <- Tabla_perforacion[Tabla_perforacion$Freq > 0, ]
# Primer Subconjunto (Primeras 4 D??cadas): Modelo Uniforme
cat("--- Primer Subconjunto (Primeras 4 Decadas): Modelo Uniforme ---\n")
## --- Primer Subconjunto (Primeras 4 Decadas): Modelo Uniforme ---
if (nrow(Tabla_perforacionFinal) >= 4) {
perforacion1 <- Tabla_perforacionFinal[1:4, ]
ni1 <- perforacion1$Freq
hi1 <- ni1 / sum(ni1)
decadas1 <- perforacion1$Decada
n1 <- length(hi1)
P_uniforme <- rep(1/n1, n1)
Fo_uniforme_rel <- hi1
Fe_uniforme_rel <- P_uniforme
Fe_uniforme_rel[Fe_uniforme_rel == 0] <- 1e-9
x2_uniforme_rel <- sum( (Fo_uniforme_rel - Fe_uniforme_rel)^2 / Fe_uniforme_rel )
vc_uniforme_rel <- qchisq(0.95, df = n1 - 1)
cat(paste0(" Chi-cuadrado: ", round(x2_uniforme_rel, 4), "\n"))
cat(paste0(" Umbral: ", round(vc_uniforme_rel, 4), "\n"))
cat(paste0(" Modelo aceptado?: ", x2_uniforme_rel < vc_uniforme_rel, "\n\n"))
par(mar = c(5, 5, 4, 2) + 0.1)
barplot(rbind(hi1, P_uniforme),
beside = TRUE,
col = c("skyblue", "orange"),
names.arg = decadas1,
main = paste0("GRAFICA ", plot_counter, ": DISTRIBUCION DE PROBABILIDAD (Decada de Perforacion - Uniforme)"),
ylab = "PROBABILIDAD",
xlab = "Decada")
legend("topright", legend = c("Observado", "Uniforme"), fill = c("skyblue", "orange"), cex = 0.8)
plot_counter <- plot_counter + 1
plot(Fo_uniforme_rel, Fe_uniforme_rel,
main = paste0("GRAFICA ", plot_counter, ": Fo vs Fe (Uniforme) - Primeras 4 Decadas"),
xlab = "Frecuencia Observada (relativa)",
ylab = "Frecuencia Esperada (Uniforme)",
pch = 19, col = "blue")
abline(lm(Fe_uniforme_rel ~ Fo_uniforme_rel), col = "red", lwd = 2)
plot_counter <- plot_counter + 1
res_df_decada_uniforme <- data.frame(
Variable = "Decada de Inicio de Perforacion",
Subconjunto.Grupo = "Primeras 4 Decadas",
Modelo.de.Probabilidad = "Uniforme",
Parametros.Ejemplo.de.Calculo = "P(Decada) = 1/4",
Correlacion.Pearson = "N/A",
Chi.cuadrado = round(x2_uniforme_rel, 4),
Umbral.de.Aceptacion = round(vc_uniforme_rel, 4),
Modelo.Aceptado = x2_uniforme_rel < vc_uniforme_rel
)
resultados_por_variable[["Decada_Uniforme"]] <- res_df_decada_uniforme
cat("\n--- Tabla de Resultados (Decada de Inicio - Uniforme) ---\n")
print(res_df_decada_uniforme, row.names = FALSE)
cat("\n")
cat("Pregunta de probabilidad para Decada de Inicio (Nominal):\n")
cat("??Cual es la probabilidad de que una perforacion seleccionada al azar haya iniciado en la decada '1970-1979'?\n")
prob_1970_1979 <- hi1[decadas1 == "1970-1979"] * 100
cat(paste0("Respuesta: la probabilidad es ", round(prob_1970_1979, 2), "%\n\n"))
} else {
cat("Advertencia: No hay suficientes decadas en Tabla_perforacionFinal para el analisis de las primeras 4 decadas. Saltando el analisis.\n\n")
}
## Chi-cuadrado: 5e-04
## Umbral: 7.8147
## Modelo aceptado?: TRUE


##
## --- Tabla de Resultados (Decada de Inicio - Uniforme) ---
## Variable Subconjunto.Grupo Modelo.de.Probabilidad
## Decada de Inicio de Perforacion Primeras 4 Decadas Uniforme
## Parametros.Ejemplo.de.Calculo Correlacion.Pearson Chi.cuadrado
## P(Decada) = 1/4 N/A 5e-04
## Umbral.de.Aceptacion Modelo.Aceptado
## 7.8147 TRUE
##
## Pregunta de probabilidad para Decada de Inicio (Nominal):
## ??Cual es la probabilidad de que una perforacion seleccionada al azar haya iniciado en la decada '1970-1979'?
## Respuesta: la probabilidad es 24.91%
# Segundo Subconjunto (Ultimas 4 D??cadas): Modelo Binomial
cat("--- Segundo Subconjunto (Ultimas 4 Decadas): Modelo Binomial ---\n")
## --- Segundo Subconjunto (Ultimas 4 Decadas): Modelo Binomial ---
# Se modific?? la condici??n para asegurar que haya al menos 4 d??cadas para el analisis binomial
# y se usa tail() para seleccionar las ultimas 4 d??cadas disponibles.
if (nrow(Tabla_perforacionFinal) >= 4) {
perforacion2 <- tail(Tabla_perforacionFinal, 4) # Seleccionar las ultimas 4 d??cadas
ni2 <- perforacion2$Freq
hi2 <- ni2 / sum(ni2)
decadas2 <- perforacion2$Decada
X2_binomial_vals <- 0:(length(hi2)-1)
n_trials_binomial <- max(X2_binomial_vals)
media_obs_bin <- sum(X2_binomial_vals * hi2)
p_bin <- media_obs_bin / n_trials_binomial
p_bin <- max(0.001, min(0.999, p_bin))
P_binomial <- dbinom(X2_binomial_vals, size = n_trials_binomial, prob = p_bin)
P_binomial <- P_binomial / sum(P_binomial)
Correlacion_bin <- cor(hi2, P_binomial, use = "complete.obs") * 100
Fo_bin_rel <- hi2
Fe_bin_rel <- P_binomial
Fe_bin_rel[Fe_bin_rel == 0] <- 1e-9
x2_bin_rel <- sum( (Fo_bin_rel - Fe_bin_rel)^2 / Fe_bin_rel )
vc_bin_rel <- qchisq(0.95, df = length(X2_binomial_vals) - 1)
cat(paste0(" Pearson %: ", round(Correlacion_bin, 2), "\n"))
cat(paste0(" Chi-cuadrado: ", round(x2_bin_rel, 4), "\n"))
cat(paste0(" Umbral: ", round(vc_bin_rel, 4), "\n"))
cat(paste0(" Modelo aceptado?: ", x2_bin_rel < vc_bin_rel, "\n\n"))
par(mar = c(5, 5, 4, 2) + 0.1)
barplot(rbind(hi2, P_binomial),
beside = TRUE,
col = c("skyblue", "darkgreen"),
names.arg = decadas2,
main = paste0("GRAFICA ", plot_counter, ": DISTRIBUCION DE PROBABILIDAD (Decada de Perforacion - Binomial)"),
ylab = "PROBABILIDAD",
xlab = "Decada")
legend("topright", legend = c("Observado", "Binomial"), fill = c("skyblue", "darkgreen"), cex = 0.8)
plot_counter <- plot_counter + 1
plot(Fo_bin_rel, Fe_bin_rel,
main = paste0("GRAFICA ", plot_counter, ": Fo vs Fe (Binomial) - Ultimas 4 Decadas"),
xlab = "Frecuencia Observada (relativa)",
ylab = "Frecuencia Esperada (Binomial)",
pch = 19, col = "darkgreen")
abline(lm(Fe_bin_rel ~ Fo_bin_rel), col = "red", lwd = 2)
plot_counter <- plot_counter + 1
res_df_decada_binomial <- data.frame(
Variable = "Decada de Inicio de Perforacion",
Subconjunto.Grupo = "Ultimas 4 Decadas",
Modelo.de.Probabilidad = "Binomial",
Parametros.Ejemplo.de.Calculo = paste0("P(X=k) = dbinom(k, size=", n_trials_binomial, ", prob=", round(p_bin, 4), ")"),
Correlacion.Pearson = paste0(round(Correlacion_bin, 2), "%"),
Chi.cuadrado = round(x2_bin_rel, 4),
Umbral.de.Aceptacion = round(vc_bin_rel, 4),
Modelo.Aceptado = x2_bin_rel < vc_bin_rel
)
resultados_por_variable[["Decada_Binomial"]] <- res_df_decada_binomial
cat("\n--- Tabla de Resultados (Decada de Inicio - Binomial) ---\n")
print(res_df_decada_binomial, row.names = FALSE)
cat("\n")
cat("Pregunta de probabilidad para Decada de Inicio (Nominal):\n")
cat("??Cual es la probabilidad de que una perforacion seleccionada al azar haya iniciado en la decada '2020-2029' segun el modelo binomial?\n")
target_decade_binomial <- "2020-2029"
if (target_decade_binomial %in% decadas2) {
prob_2020_2023_binomial <- P_binomial[decadas2 == target_decade_binomial] * 100
cat(paste0("Respuesta: la probabilidad es ", round(prob_2020_2023_binomial, 2), "%\n\n"))
} else {
cat("Respuesta: la decada '2020-2029' no se encontro en los datos utilizados para el modelo binomial. Probabilidad: 0.00%\n\n")
}
} else {
cat("Advertencia: No hay suficientes decadas en Tabla_perforacionFinal para el analisis de las ultimas 4 decadas. Saltando el analisis.\n\n")
}
## Pearson %: 83.54
## Chi-cuadrado: 0.095
## Umbral: 7.8147
## Modelo aceptado?: TRUE


##
## --- Tabla de Resultados (Decada de Inicio - Binomial) ---
## Variable Subconjunto.Grupo Modelo.de.Probabilidad
## Decada de Inicio de Perforacion Ultimas 4 Decadas Binomial
## Parametros.Ejemplo.de.Calculo Correlacion.Pearson Chi.cuadrado
## P(X=k) = dbinom(k, size=3, prob=0.4118) 83.54% 0.095
## Umbral.de.Aceptacion Modelo.Aceptado
## 7.8147 TRUE
##
## Pregunta de probabilidad para Decada de Inicio (Nominal):
## ??Cual es la probabilidad de que una perforacion seleccionada al azar haya iniciado en la decada '2020-2029' segun el modelo binomial?
## Respuesta: la probabilidad es 6.98%
#==============================VIDA UTIL============================
# ---
## VARIABLE: VIDA ??TIL
# ---
cat("\n--- VARIABLE: VIDA UTIL ---\n\n")
##
## --- VARIABLE: VIDA UTIL ---
v_util <- datos$Estimated.lifetime
TDFv_util <- table(v_util)
df_v_util <- as.data.frame(TDFv_util)
colnames(df_v_util) <- c("Vida_util", "Freq")
df_v_util$Vida_util <- as.numeric(as.character(df_v_util$Vida_util))
# GRUPO 1: Vida ??til 25 y 50 (Bernoulli)
cat("--- GRUPO 1: Vida util 25 y 50 (Bernoulli) ---\n")
## --- GRUPO 1: Vida util 25 y 50 (Bernoulli) ---
grupo1 <- df_v_util[df_v_util$Vida_util %in% c(25, 50), ]
if (nrow(grupo1) < 2 || sum(grupo1$Freq) == 0) {
cat("Advertencia: No hay suficientes datos para el modelo Bernoulli (Vida util 25 y 50). Saltando el analisis.\n\n")
res_df_vida_util_bernoulli <- data.frame(
Variable = "Vida Util",
Subconjunto.Grupo = "25 y 50 anios",
Modelo.de.Probabilidad = "Bernoulli",
Parametros.Ejemplo.de.Calculo = "N/A (Datos insuficientes)",
Correlacion.Pearson = "N/A",
Chi.cuadrado = "N/A",
Umbral.de.Aceptacion = "N/A",
Modelo.Aceptado = "No se pudo analizar"
)
resultados_por_variable[["VidaUtil_Bernoulli"]] <- res_df_vida_util_bernoulli
cat("\n--- Tabla de Resultados (Vida Util - Bernoulli) ---\n")
print(res_df_vida_util_bernoulli, row.names = FALSE)
cat("\n")
} else {
ni1 <- grupo1$Freq
hi1 <- ni1 / sum(ni1)
valores1 <- grupo1$Vida_util
if (50 %in% valores1) {
p_bern <- hi1[valores1 == 50]
} else {
p_bern <- 0
}
P_bern <- c(1 - p_bern, p_bern)
# Ensure P_bern matches length of hi1 and is ordered correctly for correlation and chi-square test
# It's better to create P_bern for the specific `valores1` in the `grupo1`
P_bern_model <- numeric(length(valores1))
if (25 %in% valores1) P_bern_model[valores1 == 25] <- (1 - p_bern)
if (50 %in% valores1) P_bern_model[valores1 == 50] <- p_bern
cor_bern <- cor(hi1, P_bern_model) * 100
x2_bern <- sum((hi1 - P_bern_model)^2 / P_bern_model)
vc_bern <- qchisq(0.95, df = length(hi1) - 1)
cat(paste0(" Pearson (%): ", round(cor_bern, 2), "\n"))
cat(paste0(" Chi-cuadrado: ", round(x2_bern, 4), "\n"))
cat(paste0(" Umbral: ", round(vc_bern, 4), "\n"))
cat(paste0(" ??Modelo aceptado?: ", x2_bern < vc_bern, "\n\n"))
par(mar = c(5, 5, 4, 2) + 0.1) # Set margins for plotting
barplot(rbind(hi1, P_bern_model),
beside = TRUE,
col = c("skyblue", "orange"),
names.arg = valores1,
main = paste0("GRAFICA ", plot_counter, ": DISTRIBUCION DE PROBABILIDAD (Vida util: 25 y 50 - Bernoulli)"),
ylab = "PROBABILIDAD",
xlab = "Vida util (anios)")
legend("topright", legend = c("Observado", "Bernoulli"), fill = c("skyblue", "orange"), cex = 0.8)
plot_counter <- plot_counter + 1
#
plot(hi1, P_bern_model,
main = paste0("GRAFICA ", plot_counter, ": Fo vs Fe (Bernoulli) - Vida util 25 y 50"),
xlab = "Frecuencia Observada (relativa)",
ylab = "Esperada (Bernoulli)",
pch = 19, col = "blue")
abline(lm(P_bern_model ~ hi1), col = "red", lwd = 2)
plot_counter <- plot_counter + 1
#
res_df_vida_util_bernoulli <- data.frame(
Variable = "Vida Util",
Subconjunto.Grupo = "25 y 50 anios",
Modelo.de.Probabilidad = "Bernoulli",
Parametros.Ejemplo.de.Calculo = paste0("P(X=50) = ", round(p_bern, 4)),
Correlacion.Pearson = paste0(round(cor_bern, 2), "%"),
Chi.cuadrado = round(x2_bern, 4),
Umbral.de.Aceptacion = round(vc_bern, 4),
Modelo.Aceptado = x2_bern < vc_bern
)
resultados_por_variable[["VidaUtil_Bernoulli"]] <- res_df_vida_util_bernoulli
cat("\n--- Tabla de Resultados (Vida Util - Bernoulli) ---\n")
print(res_df_vida_util_bernoulli, row.names = FALSE)
cat("\n")
cat("Pregunta de probabilidad para Vida Util (Bernoulli):\n")
cat("??Cual es la probabilidad de que una perforacion tenga una vida util de 50 anios?\n")
prob_vida_util_50 <- p_bern * 100
cat(paste0("Respuesta: la probabilidad es ", round(prob_vida_util_50, 2), "%\n\n"))
}
## Pearson (%): 100
## Chi-cuadrado: 0
## Umbral: 3.8415
## ??Modelo aceptado?: TRUE


##
## --- Tabla de Resultados (Vida Util - Bernoulli) ---
## Variable Subconjunto.Grupo Modelo.de.Probabilidad
## Vida Util 25 y 50 anios Bernoulli
## Parametros.Ejemplo.de.Calculo Correlacion.Pearson Chi.cuadrado
## P(X=50) = 0.9829 100% 0
## Umbral.de.Aceptacion Modelo.Aceptado
## 3.8415 TRUE
##
## Pregunta de probabilidad para Vida Util (Bernoulli):
## ??Cual es la probabilidad de que una perforacion tenga una vida util de 50 anios?
## Respuesta: la probabilidad es 98.29%
# GRUPO 2: Vida util 51 a 60 (Uniforme)
cat("--- GRUPO 2: Vida util 51 a 60 (Uniforme) ---\n")
## --- GRUPO 2: Vida util 51 a 60 (Uniforme) ---
grupo2 <- df_v_util[df_v_util$Vida_util >= 51 & df_v_util$Vida_util <= 60, ]
if (nrow(grupo2) == 0 || sum(grupo2$Freq) == 0) {
cat("Advertencia: No hay datos para el modelo Uniforme (Vida util 51 a 60). Saltando el analisis.\n\n")
res_df_vida_util_uniforme <- data.frame(
Variable = "Vida Util",
Subconjunto.Grupo = "51 a 60 anios",
Modelo.de.Probabilidad = "Uniforme",
Parametros.Ejemplo.de.Calculo = "N/A (Datos insuficientes)",
Correlacion.Pearson = "N/A",
Chi.cuadrado = "N/A",
Umbral.de.Aceptacion = "N/A",
Modelo.Aceptado = "No se pudo analizar"
)
resultados_por_variable[["VidaUtil_Uniforme"]] <- res_df_vida_util_uniforme
cat("\n--- Tabla de Resultados (Vida Util - Uniforme) ---\n")
print(res_df_vida_util_uniforme, row.names = FALSE)
cat("\n")
} else {
ni2 <- grupo2$Freq
hi2 <- ni2 / sum(ni2)
valores2 <- grupo2$Vida_util
n2 <- length(hi2)
P_uniforme_vu <- rep(1/n2, n2)
cor_uniforme <- cor(hi2, P_uniforme_vu) * 100
x2_uniforme <- sum((hi2 - P_uniforme_vu)^2 / P_uniforme_vu)
vc_uniforme <- qchisq(0.95, df = n2 - 1)
cat(paste0(" Pearson (%): ", round(cor_uniforme, 2), "\n"))
cat(paste0(" Chi-cuadrado: ", round(x2_uniforme, 4), "\n"))
cat(paste0(" Umbral: ", round(vc_uniforme, 4), "\n"))
cat(paste0(" ??Modelo aceptado?: ", x2_uniforme < vc_uniforme, "\n\n"))
par(mar = c(5, 5, 4, 2) + 0.1) # Set margins for plotting
barplot(rbind(hi2, P_uniforme_vu),
beside = TRUE,
col = c("skyblue", "purple"),
names.arg = valores2,
main = paste0("GRAFICA ", plot_counter, ": DISTRIBUCION DE PROBABILIDAD (Vida util: 51 a 60 - Uniforme)"),
ylab = "PROBABILIDAD",
xlab = "Vida util (anios)")
legend("topright", legend = c("Observado", "Uniforme"), fill = c("skyblue", "purple"), cex = 0.8)
plot_counter <- plot_counter + 1
#
plot(hi2, P_uniforme_vu,
main = paste0("GRAFICA ", plot_counter, ": Fo vs Fe (Uniforme) - Vida util 51 a 60"),
xlab = "Frecuencia Observada (relativa)",
ylab = "Esperada (Uniforme)",
pch = 19, col = "purple")
abline(lm(P_uniforme_vu ~ hi2), col = "red", lwd = 2)
plot_counter <- plot_counter + 1
#
res_df_vida_util_uniforme <- data.frame(
Variable = "Vida util",
Subconjunto.Grupo = "51 a 60 anios",
Modelo.de.Probabilidad = "Uniforme",
Parametros.Ejemplo.de.Calculo = paste0("P(Vida Util) = 1/", n2),
Correlacion.Pearson = paste0(round(cor_uniforme, 2), "%"),
Chi.cuadrado = round(x2_uniforme, 4),
Umbral.de.Aceptacion = round(vc_uniforme, 4),
Modelo.Aceptado = x2_uniforme < vc_uniforme
)
resultados_por_variable[["VidaUtil_Uniforme"]] <- res_df_vida_util_uniforme
cat("\n--- Tabla de Resultados (Vida Util - Uniforme) ---\n")
print(res_df_vida_util_uniforme, row.names = FALSE)
cat("\n")
cat("Pregunta de probabilidad para Vida Util (Uniforme):\n")
cat("??Cual es la probabilidad de que una perforacion tenga una vida util de 55 anios, dentro del rango de 51 a 60 anios?\n")
prob_vida_util_55_uniforme <- P_uniforme_vu[valores2 == 55] * 100
if (length(prob_vida_util_55_uniforme) == 0) prob_vida_util_55_uniforme <- 0
cat(paste0("Respuesta: la probabilidad es ", round(prob_vida_util_55_uniforme, 2), "%\n\n"))
}
## Warning in cor(hi2, P_uniforme_vu): La desviación estándar es cero
## Pearson (%): NA
## Chi-cuadrado: 0.0644
## Umbral: 16.919
## ??Modelo aceptado?: TRUE


##
## --- Tabla de Resultados (Vida Util - Uniforme) ---
## Variable Subconjunto.Grupo Modelo.de.Probabilidad
## Vida util 51 a 60 anios Uniforme
## Parametros.Ejemplo.de.Calculo Correlacion.Pearson Chi.cuadrado
## P(Vida Util) = 1/10 NA% 0.0644
## Umbral.de.Aceptacion Modelo.Aceptado
## 16.919 TRUE
##
## Pregunta de probabilidad para Vida Util (Uniforme):
## ??Cual es la probabilidad de que una perforacion tenga una vida util de 55 anios, dentro del rango de 51 a 60 anios?
## Respuesta: la probabilidad es 10%
# GRUPO 3: Vida util mayor a 60 anios - Modelo Poisson
cat("--- GRUPO 3: Vida util mayor a 60 anios (Poisson) ---\n")
## --- GRUPO 3: Vida util mayor a 60 anios (Poisson) ---
grupo3 <- df_v_util[df_v_util$Vida_util > 60, ]
if (nrow(grupo3) == 0 || sum(grupo3$Freq) == 0) {
cat("Advertencia: No hay datos para el modelo Poisson (Vida util > 60). Saltando el analisis.\n\n")
res_df_vida_util_poisson <- data.frame(
Variable = "Vida Util",
Subconjunto.Grupo = "Mayor a 60 anios",
Modelo.de.Probabilidad = "Poisson",
Parametros.Ejemplo.de.Calculo = "N/A (Datos insuficientes)",
Correlacion.Pearson = "N/A",
Chi.cuadrado = "N/A",
Umbral.de.Aceptacion = "N/A",
Modelo.Aceptado = "No se pudo analizar"
)
resultados_por_variable[["VidaUtil_Poisson"]] <- res_df_vida_util_poisson
cat("\n--- Tabla de Resultados (Vida Util - Poisson) ---\n")
print(res_df_vida_util_poisson, row.names = FALSE)
cat("\n")
} else {
ni3 <- grupo3$Freq
hi3 <- ni3 / sum(ni3)
valores3 <- grupo3$Vida_util
# Ensure values are non-negative integers for Poisson. If not, this warning will trigger.
if (!all(valores3 >= 0 & floor(valores3) == valores3)) {
cat("Advertencia: Los valores de 'Vida util > 60 anios' no son enteros no negativos, lo cual puede afectar el modelo Poisson. Saltando el analisis.\n\n")
res_df_vida_util_poisson <- data.frame(
Variable = "Vida Util",
Subconjunto.Grupo = "Mayor a 60 anios",
Modelo.de.Probabilidad = "Poisson",
Parametros.Ejemplo.de.Calculo = "N/A (Valores no aptos para Poisson)",
Correlacion.Pearson = "N/A",
Chi.cuadrado = "N/A",
Umbral.de.Aceptacion = "N/A",
Modelo.Aceptado = "No se pudo analizar"
)
resultados_por_variable[["VidaUtil_Poisson"]] <- res_df_vida_util_poisson
cat("\n--- Tabla de Resultados (Vida Util - Poisson) ---\n")
print(res_df_vida_util_poisson, row.names = FALSE)
cat("\n")
} else {
lambda3 <- sum(valores3 * hi3) # Estimate lambda from observed mean
P_poisson <- dpois(valores3, lambda = lambda3)
P_poisson_norm <- P_poisson / sum(P_poisson) # Normalize to sum to 1
P_poisson_norm[P_poisson_norm == 0] <- 1e-9 # Prevent division by zero
par(mar = c(5, 5, 4, 2) + 0.1) # Set margins for plotting
barplot(rbind(hi3, P_poisson_norm),
beside = TRUE,
col = c("skyblue", "orange"),
names.arg = valores3,
main = paste0("GRAFICA ", plot_counter, ": DISTRIBUCION DE PROBABILIDAD (Vida util > 60 anios - Poisson)"),
ylab = "PROBABILIDAD",
xlab = "Vida util (anios)")
legend("topright", legend = c("Observado", "Poisson"), fill = c("skyblue", "orange"), cex = 0.8)
plot_counter <- plot_counter + 1
#
correlacion_poisson <- cor(hi3, P_poisson_norm) * 100
x2_poisson <- sum((hi3 - P_poisson_norm)^2 / P_poisson_norm)
vc_poisson <- qchisq(0.95, df = length(hi3) - 1)
cat(paste0(" Lambda estimado: ", round(lambda3, 2), "\n"))
cat(paste0(" Correlacion (Pearson %): ", round(correlacion_poisson, 2), "\n"))
cat(paste0(" Chi-cuadrado: ", round(x2_poisson, 4), "\n"))
cat(paste0(" Umbral de aceptacion: ", round(vc_poisson, 4), "\n"))
cat(paste0(" ??Modelo aceptado?: ", x2_poisson < vc_poisson, "\n\n"))
res_df_vida_util_poisson <- data.frame(
Variable = "Vida Util",
Subconjunto.Grupo = "Mayor a 60 anios",
Modelo.de.Probabilidad = "Poisson",
Parametros.Ejemplo.de.Calculo = paste0("P(X=k) = dpois(k, lambda=", round(lambda3, 2), ")"),
Correlacion.Pearson = paste0(round(correlacion_poisson, 2), "%"),
Chi.cuadrado = round(x2_poisson, 4),
Umbral.de.Aceptacion = round(vc_poisson, 4),
Modelo.Aceptado = x2_poisson < vc_poisson
)
resultados_por_variable[["VidaUtil_Poisson"]] <- res_df_vida_util_poisson
cat("\n--- Tabla de Resultados (Vida Util - Poisson) ---\n")
print(res_df_vida_util_poisson, row.names = FALSE)
cat("\n")
cat("Pregunta de probabilidad para Vida Util (Poisson):\n")
cat("??Cual es la probabilidad de que una perforacion tenga una vida util de 62 anios, segun el modelo Poisson?\n")
prob_vida_util_62_poisson <- dpois(62, lambda = lambda3) * 100
cat(paste0("Respuesta: la probabilidad es ", round(prob_vida_util_62_poisson, 2), "%\n\n"))
}
}

## Lambda estimado: 66.21
## Correlacion (Pearson %): 85.68
## Chi-cuadrado: 0.0848
## Umbral de aceptacion: 21.0261
## ??Modelo aceptado?: TRUE
##
##
## --- Tabla de Resultados (Vida Util - Poisson) ---
## Variable Subconjunto.Grupo Modelo.de.Probabilidad
## Vida Util Mayor a 60 anios Poisson
## Parametros.Ejemplo.de.Calculo Correlacion.Pearson Chi.cuadrado
## P(X=k) = dpois(k, lambda=66.21) 85.68% 0.0848
## Umbral.de.Aceptacion Modelo.Aceptado
## 21.0261 TRUE
##
## Pregunta de probabilidad para Vida Util (Poisson):
## ??Cual es la probabilidad de que una perforacion tenga una vida util de 62 anios, segun el modelo Poisson?
## Respuesta: la probabilidad es 4.41%