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 ="-")
EvacuacionesPublicas <- datos$EvacuacionesPublicas
EvacuacionesPublicas <- na.omit(EvacuacionesPublicas)
Evacuaciones_1_90 <- subset(EvacuacionesPublicas, EvacuacionesPublicas >= 1 & EvacuacionesPublicas <= 100)
limites <- seq(1, 91, by = 10)
clasificacion <- cut(Evacuaciones_1_90,
breaks = limites,
include.lowest = TRUE,
right = FALSE)
TablaEvacuacion <- as.data.frame(table(clasificacion))
colnames(TablaEvacuacion) <- c("Intervalo", "ni")
TablaEvacuacion$hi <- round((TablaEvacuacion$ni / sum(TablaEvacuacion$ni)) * 100, 2)
# Frecuencia acumulada absoluta
TablaEvacuacion$Niasc <- cumsum(TablaEvacuacion$ni)
TablaEvacuacion$Nidsc <- rev(cumsum(rev(TablaEvacuacion$ni)))
# Frecuencia acumulada relativa
TablaEvacuacion$Hiasc <- cumsum(TablaEvacuacion$hi)
TablaEvacuacion$Hiasc[length(TablaEvacuacion$Hiasc)] <- 100
TablaEvacuacion$Hidsc <- rev(cumsum(rev(TablaEvacuacion$hi)))
TablaEvacuacion$Hidsc[1] <- 100
TDFFinalEvacuaciones<- rbind(TablaEvacuacion, data.frame(
Intervalo = "TOTAL",
ni = sum(TablaEvacuacion$ni),
hi = 100,
Niasc = " ",
Hiasc = " ",
Nidsc = " ",
Hidsc = " "
))
library(gt)
tablaEvacuaciones <- TDFFinalEvacuaciones %>%
gt() %>%
cols_label(
Intervalo = md("**Intervalo**"),
ni = md("**ni**"),
hi = md("**hi (%)**"),
Niasc = md("**Ni ↑**"),
Hiasc = md("**Hi ↑ (%)**"),
Nidsc = md("**Ni ↓**"),
Hidsc = md("**Hi ↓ (%)**")
) %>%
tab_header(
title = md("**Tabla N°1**"),
subtitle = md("**Distribución de las Evacuaciones públicas por accidentes 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"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Intervalo == "TOTAL"
)
)
tablaEvacuaciones
| Tabla N°1 | ||||||
| Distribución de las Evacuaciones públicas por accidentes ocurridos en EE.UU (2010-2017) | ||||||
| Intervalo | ni | hi (%) | Ni ↑ | Ni ↓ | Hi ↑ (%) | Hi ↓ (%) |
|---|---|---|---|---|---|---|
| [1,11) | 23 | 46.94 | 23 | 49 | 46.94 | 100 |
| [11,21) | 10 | 20.41 | 33 | 26 | 67.35 | 53.05 |
| [21,31) | 6 | 12.24 | 39 | 16 | 79.59 | 32.64 |
| [31,41) | 4 | 8.16 | 43 | 10 | 87.75 | 20.4 |
| [41,51) | 1 | 2.04 | 44 | 6 | 89.79 | 12.24 |
| [51,61) | 1 | 2.04 | 45 | 5 | 91.83 | 10.2 |
| [61,71) | 2 | 4.08 | 47 | 4 | 95.91 | 8.16 |
| [71,81) | 1 | 2.04 | 48 | 2 | 97.95 | 4.08 |
| [81,91] | 1 | 2.04 | 49 | 1 | 100 | 2.04 |
| TOTAL | 49 | 100.00 | ||||
| Autor: Grupo 1 | ||||||
par(mar = c(7, 6, 4, 2))
barplot(
TablaEvacuacion$ni,
main = "Gráfica N°2: Distribución de evacuaciones públicas\npor accidentes en oleoductos de EE.UU.",
ylab = "Cantidad",
names.arg = TablaEvacuacion$Intervalo,
col = "darkseagreen2",
las = 1,
cex.main = 1.1,
cex.lab = 1.1,
cex.axis = 0.9,
cex.names = 0.8,
)
mtext("Evacuaciones públicas", side = 1, line = 4, cex = 1)
Se conjetura que la variable EvacuacionesPublicas, podría seguir una distribución geometrica, bajo el supuesto de que la probabilidad de ocurrencia es máxima para valores bajos de la variable y disminuye progresivamente a medida que el número de evacuaciones aumenta..
media_obs <- mean(Evacuaciones_1_90)
p <- 1 / (media_obs + 1)
Parámetro estimado (p): 0.05
# Frecuencias Observadas
Fo <- TablaEvacuacion$ni
# Probabilidades geométricas y frecuencias esperadas
k <- length(Inicio)
P_geom <- numeric(k)
Fe <- numeric(k)
for(i in 1:k){
P_geom[i] <- pgeom(Fin[i]-1, prob = p) - pgeom(Inicio[i]-1, prob = p)
Fe[i] <- P_geom[i] * sum(TablaEvacuacion$ni)
}
barplot(rbind(Fo, Fe),
main = "Gráfica N°3: Comparación Modelo Geométrico con la Realidad",
beside = TRUE,
col = c("darkseagreen2", "#FFC685"),
names.arg = TablaEvacuacion$Intervalo,
ylab = "Probabilidad",
las = 1,
cex.names = 0.8,
cex.axis = 1,
cex.main = 1.1)
mtext("Evacuaciones públicas", side = 1, line = 3.5, cex = 1)
legend(x = 27, y = 170,
legend = c("Realidad", "Uniforme"),
fill = c("darkseagreen2", "#FFC685"),
bty = "o",
y.intersp = 0.7,
cex = 0.8)
Correlacion_geo <- cor(Fo, Fe) * 100
La correlación de frecuencias es de = 97.94 %
# Gráfica de correlación
plot(Fo, Fe,
main = "Gráfica N°4: Correlación de frecuencias en el modelo Geométrico",
xlab = "Frecuencia Observada ",
ylab = "Frecuencia Esperada",
col = "darkseagreen3", pch = 19)
abline(lm(Fe ~ Fo), col = "red", lwd = 2)
# Chi-cuadrado calculado con frecuencias relativas
x2_g <- sum((Fo - Fe)^2 / Fe)
# Grados de libertad
gl_g <- (k - 1) - 1
# Nivel de significancia
nivel_significancia <- 0.05
# Umbral de aceptación
umbral_aceptacion<- qchisq(1 - nivel_significancia, gl_g)
cat("El estadístico Chi-cuadrado calculado =", round(x2_g, 4), "\n\n")
## El estadístico Chi-cuadrado calculado = 5.6375
cat("Grados de libertad =", gl_g, "\n\n")
## Grados de libertad = 7
cat("El umbral de aceptación =", round(umbral_aceptacion, 4), "\n\n")
## El umbral de aceptación = 14.0671
if (x2_g < umbral_aceptacion) {
cat(
"ESTADO: APRUEBA. ",
"No existe una diferencia significativa ",
"entre los valores observados y los esperados."
)
} else {
cat(
"ESTADO: NO APRUEBA. ",
"Existe una diferencia significativa ",
"entre los valores observados y los esperados."
)
}
## ESTADO: APRUEBA. No existe una diferencia significativa entre los valores observados y los esperados.
# Rango de valores
rango_inicio <- 1
rango_fin <- 11
# Probabilidad total para el rango
prob_rango <- pgeom(rango_fin - 1, prob = p) - pgeom(rango_inicio - 1, prob = p)
Probabilidad de que se de, de 1 a 11 evacuaciones: 38.06 %
TablaEvacuacion$P_geom <- P_geom
colores <- ifelse(Inicio >= rango_inicio & Fin <= rango_fin, "#D75C20", "#FFC685")
# Gráfico
barplot(height = TablaEvacuacion$P_geom,
names.arg = TablaEvacuacion$Intervalo,
main = "Gráfica N°5: Probabilidad Geométrica - Evacuaciones públicas",
ylab = "Probabilidad (%)",
col = colores,
las = 1,
cex.names = 0.8,
ylim = c(0, max(TablaEvacuacion$P_geom)+0.1)
)
mtext("Evacuaciones públicas", side = 1, line = 3.5, cex = 1)
# Leyenda
legend("topright",
legend = c("Evacuaciones fuera del rango", "Rango de Evacuaciones"),
fill = c("#FFC685", "#D75C20"),
border = NA,
cex = 0.8)
# ==============================================================================
# 10. INTERVALO DE CONFIANZA
# ==============================================================================
# 1. Media aritmética muestral
x <- mean(Evacuaciones_1_90)
# 2. Desviación estándar muestral
sigma_g <- sd(Evacuaciones_1_90)
# 3. Error estándar de la media
n <- length(Evacuaciones_1_90)
e <- sigma_g/ 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°3**"),
subtitle = md("**Intervalo de confianza del 95% para la variable **EvacuacionesPublicas** de los accidentes en oleoductos ocurridos en EE.UU. (2010-2017)**")
) %>%
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°3 |
| Intervalo de confianza del 95% para la variable EvacuacionesPublicas de los accidentes en oleoductos ocurridos en EE.UU. (2010-2017) |
| Intervalo |
|---|
| P [16.05 < µ < 22.03] = 95% |
| Autor: Grupo 1 |
El comportamiento de la variable
EvacuacionesPublicas se explica con un modelo
geométrico de parámetros (p = 0.05). Podemos afirmar con un 95% de
confianza que la media aritmética real de
EvacuacionesPublicas se encuentra entre [16.05 < µ
< 22.03] y una desviación estándar de 20.91.