library(gt)
library(e1071)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
setwd("/cloud/project/")
datos<-read.csv("DerramesEEUU.csv", header = TRUE, sep=";" , dec=",",na.strings ="-")
Longitud <- na.omit(datos$LongitudAccidente)
# 1. Generar el histograma
png(filename = tempfile())
histoLongitud <- hist(Longitud, plot = FALSE)
dev.off()
## png
## 2
# 2. Extracción de límites y cálculo de marcas de clase
Limites <- histoLongitud$breaks
LimInf <- Limites[1:(length(Limites) - 1)]
LimSup <- Limites[2:length(Limites)]
MC <- (LimInf + LimSup) / 2
# 3. Frecuencias simples
ni <- histoLongitud$counts
hi <- (ni / sum(ni)) * 100
# 4. Frecuencias acumuladas
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 2)
Hiasc[length(Hiasc)] <- 100
Hidsc <- round(rev(cumsum(rev(hi))), 2)
Hidsc[1] <- 100
# 5. Creación del data.frame final de frecuencias
TDFLongitudR <- data.frame(
LimInf, LimSup, MC, ni,
hi = round(hi, 2),
Niasc, Nidsc, Hiasc, Hidsc
)
total_ni <- sum(ni)
total_hi <- 100
TDFLongitudRFinal <- rbind(
TDFLongitudR,
data.frame(
LimInf = "Total",
LimSup = " ",
MC = " ",
ni = total_ni,
hi = total_hi,
Niasc = " ",
Nidsc = " ",
Hiasc = " ",
Hidsc = " "
)
)
# 6. Presentación con la librería gt
library(gt)
tabla_LongitudR_gt <- TDFLongitudRFinal %>%
gt() %>%
cols_label(
LimInf = md("**LimInf**"),
LimSup = md("**LimSup**"),
MC = md("**MC**"),
ni = md("**ni**"),
hi = md("**hi (%)**"),
Niasc = md("**Ni ↑**"),
Nidsc = md("**Ni ↓**"),
Hiasc = md("**Hi ↑ (%)**"),
Hidsc = md("**Hi ↓ (%)**")
) %>%
tab_header(
title = md("**Tabla N° 2**"),
subtitle = md("**Distribución de la longitud de accidentes en oleoductos ocurridos en EE.UU (2010-2017)**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 1")
) %>%
tab_options(
table.background.color = "white",
row.striping.background_color = "white",
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black",
table.border.left.color = "black",
table.border.left.style = "solid",
table.border.left.width = px(1),
table.border.right.color = "black",
table.border.right.style = "solid",
table.border.right.width = px(1)
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = LimInf == "Total"
)
)
tabla_LongitudR_gt
| Tabla N° 2 | ||||||||
| Distribución de la longitud de accidentes en oleoductos ocurridos en EE.UU (2010-2017) | ||||||||
| LimInf | LimSup | MC | ni | hi (%) | Ni ↑ | Ni ↓ | Hi ↑ (%) | Hi ↓ (%) |
|---|---|---|---|---|---|---|---|---|
| -160 | -155 | -157.5 | 3 | 0.11 | 3 | 2760 | 0.11 | 100 |
| -155 | -150 | -152.5 | 1 | 0.04 | 4 | 2757 | 0.14 | 99.89 |
| -150 | -145 | -147.5 | 10 | 0.36 | 14 | 2756 | 0.51 | 99.86 |
| -145 | -140 | -142.5 | 0 | 0.00 | 14 | 2746 | 0.51 | 99.49 |
| -140 | -135 | -137.5 | 0 | 0.00 | 14 | 2746 | 0.51 | 99.49 |
| -135 | -130 | -132.5 | 0 | 0.00 | 14 | 2746 | 0.51 | 99.49 |
| -130 | -125 | -127.5 | 0 | 0.00 | 14 | 2746 | 0.51 | 99.49 |
| -125 | -120 | -122.5 | 45 | 1.63 | 59 | 2746 | 2.14 | 99.49 |
| -120 | -115 | -117.5 | 118 | 4.28 | 177 | 2701 | 6.41 | 97.86 |
| -115 | -110 | -112.5 | 23 | 0.83 | 200 | 2583 | 7.25 | 93.59 |
| -110 | -105 | -107.5 | 71 | 2.57 | 271 | 2560 | 9.82 | 92.75 |
| -105 | -100 | -102.5 | 438 | 15.87 | 709 | 2489 | 25.69 | 90.18 |
| -100 | -95 | -97.5 | 889 | 32.21 | 1598 | 2051 | 57.9 | 74.31 |
| -95 | -90 | -92.5 | 576 | 20.87 | 2174 | 1162 | 78.77 | 42.1 |
| -90 | -85 | -87.5 | 241 | 8.73 | 2415 | 586 | 87.5 | 21.23 |
| -85 | -80 | -82.5 | 136 | 4.93 | 2551 | 345 | 92.43 | 12.5 |
| -80 | -75 | -77.5 | 89 | 3.22 | 2640 | 209 | 95.65 | 7.57 |
| -75 | -70 | -72.5 | 120 | 4.35 | 2760 | 120 | 100 | 4.35 |
| Total | 2760 | 100.00 | ||||||
| Autor: Grupo 1 | ||||||||
options(scipen = 999)
hist(valores_comunes,freq = TRUE,
main = "Gráfica N°2: Distribucción de Longitud en los accidentes
de oleoductos en EE.UU.",
xlab = "Longitud (°)",
ylab = "Cantidad",
col = "#DBD7FB",
las=1)
Se considera que la variable Longitud, podría seguir una distribución normal. Bajo este modelo se asume que los valores de la variable se distribuyen de forma asimétrica, con una mayor concentración de observaciones en valores cercanos a un punto central positivo y una cola más extendida hacia valores superiores. Esto implica que la probabilidad de ocurrencia es mayor para valores moderados de latitud y disminuye progresivamente conforme los valores se alejan hacia la derecha, reflejando una distribución sesgada positivamente.
u<-mean(valores_comunes)
sigma<-sd(valores_comunes)
Media (u) = -95.50597
Desviación estándar (sigma) = 6.228508
Histo_long <- hist(valores_comunes, freq = FALSE,
main = "Gráfica N°3: Comparación de la realidad con el modelo normal de Longitud
en los accidentes de oleoductos en EE.UU.",
xlab = "Longitud (°)",
ylab = "Densidad de probabilidad",
col = "#DBD7FB")
# Curva normal
x_norm <- seq(min(valores_comunes), max(valores_comunes), length.out = 1000)
lines(x_norm, dnorm(x_norm, u, sigma), lwd = 3, col = "red")
# Leyenda
legend("topright", legend = "Modelo Normal",
col = "red", lwd = 2, lty = 1,
box.lty = 1,box.col = "black",
cex = 0.8)
# Correlación de frecuencias
Fo_norm <- Histo_long$counts
h <- length(Fo_norm)
P_norm <- c()
for (i in 1:h) {
P_norm[i] <- pnorm(Histo_long$breaks[i+1], mean = u, sd = sigma) -
pnorm(Histo_long$breaks[i], mean = u, sd = sigma)
}
Fe_norm <- P_norm * length(valores_comunes)
Correlacion_norm <- cor(Fo_norm, Fe_norm) * 100
La correlación de frecuencias es de = 95.82 %
# Gráfica de correlación
plot(Fo_norm, Fe_norm,
main = "Gráfica N°4: Correlación de frecuencias en el modelo normal",
xlab = "Frecuencia Observada ", ylab = "Frecuencia Esperada",
col = "#DBD7FB", pch = 19)
abline(lm(Fe_norm ~ Fo_norm), col = "red", lwd = 2)
n <- length(valores_comunes)
Fo_norm_pct <- (Fo_norm / n) * 100
Fe_norm_pct <- P_norm * 100
# Calcular estadístico Chi-cuadrado
x2_norm <- sum((Fe_norm_pct - Fo_norm_pct)^2 / Fe_norm_pct)
# Grados de libertad
gl_norm <- (h - 1) - 2
# Nivel de significancia y valor crítico al 95% de confianza
nivel_significancia <- 0.05
umbral_aceptacion <- qchisq(1 - nivel_significancia, df = gl_norm)
cat("El estadístico Chi-cuadrado calculado =", round(x2_norm, 4), "\n\n")
## El estadístico Chi-cuadrado calculado = 7.3964
cat("Grados de libertad =", gl_norm, "\n\n")
## Grados de libertad = 5
cat("El umbral de aceptación =", round(umbral_aceptacion, 4), "\n\n")
## El umbral de aceptación = 11.0705
if (x2_norm < umbral_aceptacion) {
cat(
"ESTADO: APRUEBA. ",
"Conclusión: No se rechaza H0, las longitudes de los accidentes podrían seguir una distribución normal."
)
} else {
cat(
"ESTADO: NO APRUEBA. ",
"Conclusión: Se rechaza H0, las longitudes de los accidentes NO siguen una distribución normal."
)
}
## ESTADO: APRUEBA. Conclusión: No se rechaza H0, las longitudes de los accidentes podrían seguir una distribución normal.
prob_norm <- pnorm(-90, mean = u, sd = sigma) - pnorm(-100, mean = u, sd = sigma)
La probabilidad de que las longitudes de los accidentes se encuentren entre -100° y -90°: 57.64 %
plot(x_norm, dnorm(x_norm, mean = u, sd = sigma), type = "l",
col = "blue", lwd = 2,
main = "Gráfica N°5: Cálculo de probabilidad de la longitud en los accidentes
de oleoductos en EE.UU. ",
xlab = "Longitud (°)",
ylab = "Densidad de probabilidad")
x_somb_norm <- seq(-100, -90, length.out = 1000)
y_somb_norm <- dnorm(x_somb_norm, mean = u, sd = sigma)
polygon(c(x_somb_norm, rev(x_somb_norm)),
c(y_somb_norm, rep(0, length(y_somb_norm))),
col = rgb(1,0,0,0.4), border = NA)
legend("topright", legend = c("Modelo Normal", "Área de Probabilidad"),
col = c("blue", "#B03060"), lwd = 2, pch = c(NA,15))
# 1. Media aritmética muestral
x <- mean(valores_comunes)
# 2. Desviación estándar muestral
sigma_n <- sd(valores_comunes)
# 3. Error estándar de la media (con Z = 1.96 para el 95% de confianza)
n <- length(valores_comunes)
e <- 1.96 * (sigma_n / sqrt(n))
# 4. Límites del intervalo de confianza del 95%
limite_inferior <- round(x - e, 2)
limite_superior <- round(x + e, 2)
# 5. Creación de la tabla con el formato requerido
tabla_media_exp <- data.frame(
Intervalo = paste0(
"P [",
limite_inferior,
" < µ < ",
limite_superior,
"] = 95%"
)
)
# 6. Presentación de la tabla con la librería gt
library(gt)
tabla_media_exp %>%
gt() %>%
tab_header(
title = md("**Tabla N°2**"),
subtitle = md("**Intervalo de confianza del 95% para la variable **Longitud** de los accidentes en oleoductos en EE.UU.**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 1")
) %>%
cols_align(
align = "center",
columns = everything()
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.font.weight = "bold",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "grey",
table_body.border.bottom.color = "black",
table.border.left.color = "black",
table.border.left.style = "solid",
table.border.left.width = px(1),
table.border.right.color = "black",
table.border.right.style = "solid",
table.border.right.width = px(1)
)
| Tabla N°2 |
| Intervalo de confianza del 95% para la variable Longitud de los accidentes en oleoductos en EE.UU. |
| Intervalo |
|---|
| P [-95.75 < µ < -95.26] = 95% |
| Autor: Grupo 1 |
El comportamiento de la variable Longitud se explica con un modelo normal de parámetros μ = -95.50 y σ = 6.22. Podemos afirmar con un 95% de confianza que la media aritmética real de Longitud se encuentra entre [-95.75 < µ < -95.26] y una desviación estándar de 6.23.