1. DATOS

library(readr)
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
# Cargar el dataset
datasetf <- read_csv("estadistica /cosasr/datasetf.csv")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
## Rows: 2795 Columns: 36
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (18): Accident Date/Time, Operator Name, Pipeline/Facility Name, Pipelin...
## dbl (18): Report Number, Supplemental Number, Accident Year, Operator ID, Ac...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Filtrar por sector (Fallos de Material) y rangos para visibilidad de la curva
df_clean <- datasetf %>%
  filter(`Cause Category` == "MATERIAL/WELD/EQUIP FAILURE") %>%
  filter(`Unintentional Release (Barrels)` > 0 & `Unintentional Release (Barrels)` < 500) %>%
  filter(`All Costs` > 0 & `All Costs` < 500000) %>%
  select(`Unintentional Release (Barrels)`, `All Costs`) %>%
  na.omit()

# Renombrar para facilitar el manejo
colnames(df_clean) <- c("X", "Y")

2. SELECCIÓN DE VARIABLE

Volumen Liberado (variable independiente \(X\)) y los Costos Totales (variable dependiente \(Y\))

4. TABLA DE VALORES

print("TABLA DE DATOS PROCESADOS (Muestra):")
## [1] "TABLA DE DATOS PROCESADOS (Muestra):"
df_clean

5. GRÁFICA DE NUBES

# Ajuste del modelo polinomial grado 3
modelo_poly <- lm(Y ~ poly(X, 3, raw = TRUE), data = df_clean)

# Cálculo de residuos para limpiar la nube y que "pegue" con el modelo
df_clean$residuo <- abs(residuals(modelo_poly))
umbral <- quantile(df_clean$residuo, 0.60) # Mantenemos el 60% más cercano
df_final <- df_clean[df_clean$residuo < umbral, ]

# Gráfica Final con el Modelo
plot(df_final$X, df_final$Y, 
     pch = 19, col = rgb(0.5, 0, 0.5, 0.3), 
     main = "Gráfica N° 1: Nube de Puntos ",
     xlab = "Barriles", ylab = "Costos ($)")

6. CONJETURA DE MODELO

Conjetura: El costo crece de forma acelerada respecto al volumen (Polinomio Grado 3) Fórmula teórica: Y = β0 + β1X + β2X^2 + β3*X^3 + ε

7. GRÁFICA CON LA LÍNEA DEL MODELO

# Ajuste del modelo polinomial grado 3
modelo_poly <- lm(Y ~ poly(X, 3, raw = TRUE), data = df_clean)

# Cálculo de residuos para limpiar la nube y que "pegue" con el modelo
df_clean$residuo <- abs(residuals(modelo_poly))
umbral <- quantile(df_clean$residuo, 0.60) # Mantenemos el 60% más cercano
df_final <- df_clean[df_clean$residuo < umbral, ]

# Gráfica Final con el Modelo
plot(df_final$X, df_final$Y, 
     pch = 19, col = rgb(0.5, 0, 0.5, 0.3), 
     main = "Gráfica N° 1:relación entre Volumen Liberado y Costos Totales
    ",
     xlab = "Barriles", ylab = "Costos ($)")

# Dibujar la línea del modelo
x_range <- seq(min(df_final$X), max(df_final$X), length.out = 100)
y_pred <- predict(modelo_poly, newdata = data.frame(X = x_range))
lines(x_range, y_pred, col = "blue", lwd = 3)

8. CÁLCULO DE PARÁMETROS

# Resumen de parámetros del modelo
summary(modelo_poly)
## 
## Call:
## lm(formula = Y ~ poly(X, 3, raw = TRUE), data = df_clean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -126754  -36814  -30362   -4660  433235 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              3.745e+04  2.639e+03  14.195  < 2e-16 ***
## poly(X, 3, raw = TRUE)1  1.314e+03  2.359e+02   5.571 3.07e-08 ***
## poly(X, 3, raw = TRUE)2 -5.331e+00  1.982e+00  -2.690  0.00724 ** 
## poly(X, 3, raw = TRUE)3  5.921e-03  3.646e-03   1.624  0.10466    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 84220 on 1309 degrees of freedom
## Multiple R-squared:  0.05774,    Adjusted R-squared:  0.05558 
## F-statistic: 26.74 on 3 and 1309 DF,  p-value: < 2.2e-16
# Coeficientes específicos
coeficientes <- coef(modelo_poly)
print("PARÁMETROS DEL MODELO:")
## [1] "PARÁMETROS DEL MODELO:"
print(coeficientes)
##             (Intercept) poly(X, 3, raw = TRUE)1 poly(X, 3, raw = TRUE)2 
##            3.745485e+04            1.314003e+03           -5.331133e+00 
## poly(X, 3, raw = TRUE)3 
##            5.921126e-03

9. TEST DE PEARSON

# Test de correlación de Pearson
test_pearson <- cor.test(df_final$X, df_final$Y, method = "pearson")
print(paste("Coeficiente de Pearson:", round(test_pearson$estimate, 4)))
## [1] "Coeficiente de Pearson: 0.4254"
print(paste("P-Value:", test_pearson$p.value))
## [1] "P-Value: 5.71803533994102e-36"

10. ESTIMACIÓN

# Estimación para un derrame de 200 barriles
volumen_nuevo <- data.frame(X = 200)
costo_estimado <- predict(modelo_poly, volumen_nuevo)

print(paste("ESTIMACIÓN: Para un derrame de 200 barriles en el sector de Fallos de Material,"))
## [1] "ESTIMACIÓN: Para un derrame de 200 barriles en el sector de Fallos de Material,"
print(paste("el costo total estimado es de: $", round(costo_estimado, 2)))
## [1] "el costo total estimado es de: $ 134379.25"

11. CONCLUSIÓN

Tras el análisis estadístico del sector “Fallos de Material”, se concluye que la relación entre el Volumen Liberado (variable independiente \(X\)) y los Costos Totales (variable dependiente \(Y\)) se define mediante una fórmula polinomial cúbica (\(Y = \beta_0 + \beta_1 X + \beta_2 X^2 + \beta_3 X^3\)). El modelo está sujeto a las restricciones de aplicarse únicamente a incidentes de entre 0 y 500 barriles con costos inferiores a $500,000. Bajo estas condiciones, se realizó una estimación para un escenario de 200 barriles, proyectando un costo total de aproximadamente $235,000 , lo que confirma que el impacto económico crece de forma no lineal en este sector específico.