Variable Cuantitativa Discreta - Años
setwd("C:/Users/Usuario/Documents/Trabajo Estadistica/PROYECTO/")
datos <- read.csv("database.csv", header = TRUE, sep = ",", dec = ".")
Verificamos que rstudio nos lea correctamente los datos:
## 'data.frame': 38113 obs. of 81 variables:
## $ Vehicle.ID : int 26587 27705 26561 27681 27550 28426 27549 28425 27593 28455 ...
## $ Year : int 1984 1984 1984 1984 1984 1984 1984 1984 1984 1984 ...
## $ Make : chr "Alfa Romeo" "Alfa Romeo" "Alfa Romeo" "Alfa Romeo" ...
## $ Model : chr "GT V6 2.5" "GT V6 2.5" "Spider Veloce 2000" "Spider Veloce 2000" ...
## $ Class : chr "Minicompact Cars" "Minicompact Cars" "Two Seaters" "Two Seaters" ...
## $ Drive : chr "" "" "" "" ...
## $ Transmission : chr "Manual 5-Speed" "Manual 5-Speed" "Manual 5-Speed" "Manual 5-Speed" ...
## $ Transmission.Descriptor : chr "" "" "" "" ...
## $ Engine.Index : int 9001 9005 9002 9006 1830 1880 1831 1881 1524 1574 ...
## $ Engine.Descriptor : chr "(FFS)" "(FFS) CA model" "(FFS)" "(FFS) CA model" ...
## $ Engine.Cylinders : int 6 6 4 4 4 4 6 6 6 6 ...
## $ Engine.Displacement : num 2.5 2.5 2 2 2.5 2.5 4.2 4.2 4.2 4.2 ...
## $ Turbocharger : logi NA NA NA NA NA NA ...
## $ Supercharger : chr "" "" "" "" ...
## $ Fuel.Type : chr "Regular" "Regular" "Regular" "Regular" ...
## $ Fuel.Type.1 : chr "Regular Gasoline" "Regular Gasoline" "Regular Gasoline" "Regular Gasoline" ...
## $ Fuel.Type.2 : chr "" "" "" "" ...
## $ City.MPG..FT1. : int 17 17 18 18 18 18 13 13 15 15 ...
## $ Unrounded.City.MPG..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ City.MPG..FT2. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Unrounded.City.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ City.Gasoline.Consumption..CD. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ City.Electricity.Consumption : num 0 0 0 0 0 0 0 0 0 0 ...
## $ City.Utility.Factor : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.MPG..FT1. : int 24 24 25 25 17 17 13 13 20 19 ...
## $ Unrounded.Highway.MPG..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.MPG..FT2. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Unrounded.Highway.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Gasoline.Consumption..CD. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Electricity.Consumption : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Utility.Factor : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Unadjusted.City.MPG..FT1. : num 21 21 23 23 22 22 16 16 19 19 ...
## $ Unadjusted.Highway.MPG..FT1. : num 34 34 35 35 24 24 18 18 27 26 ...
## $ Unadjusted.City.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Unadjusted.Highway.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.MPG..FT1. : int 20 20 21 21 17 17 13 13 17 17 ...
## $ Unrounded.Combined.MPG..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.MPG..FT2. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Unrounded.Combined.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.Electricity.Consumption : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.Gasoline.Consumption..CD. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.Utility.Factor : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Annual.Fuel.Cost..FT1. : int 1750 1750 1650 1650 2050 2050 2700 2700 2050 2050 ...
## $ Annual.Fuel.Cost..FT2. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Gas.Guzzler.Tax : chr "" "" "" "" ...
## $ Save.or.Spend..5.Year. : int -2000 -2000 -1500 -1500 -3500 -3500 -6750 -6750 -3500 -3500 ...
## $ Annual.Consumption.in.Barrels..FT1.: num 16.5 16.5 15.7 15.7 19.4 ...
## $ Annual.Consumption.in.Barrels..FT2.: num 0 0 0 0 0 0 0 0 0 0 ...
## $ Tailpipe.CO2..FT1. : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ Tailpipe.CO2.in.Grams.Mile..FT1. : num 444 444 423 423 523 ...
## $ Tailpipe.CO2..FT2. : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ Tailpipe.CO2.in.Grams.Mile..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Fuel.Economy.Score : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ GHG.Score : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ GHG.Score..Alt.Fuel. : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ My.MPG.Data : chr "N" "N" "N" "N" ...
## $ X2D.Passenger.Volume : int 74 74 0 0 0 0 0 0 0 0 ...
## $ X2D.Luggage.Volume : int 7 7 0 0 0 0 0 0 0 0 ...
## $ X4D.Passenger.Volume : int 0 0 0 0 0 0 0 0 0 0 ...
## $ X4D.Luggage.Volume : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Hatchback.Passenger.Volume : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Hatchback.Luggage.Volume : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Start.Stop.Technology : chr "" "" "" "" ...
## $ Alternative.Fuel.Technology : chr "" "" "" "" ...
## $ Electric.Motor : chr "" "" "" "" ...
## $ Manufacturer.Code : chr "" "" "" "" ...
## $ Gasoline.Electricity.Blended..CD. : chr "False" "False" "False" "False" ...
## $ Vehicle.Charger : chr "" "" "" "" ...
## $ Alternate.Charger : chr "" "" "" "" ...
## $ Hours.to.Charge..120V. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Hours.to.Charge..240V. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Hours.to.Charge..AC.240V. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Composite.City.MPG : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Composite.Highway.MPG : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Composite.Combined.MPG : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Range..FT1. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ City.Range..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Range..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Range..FT2. : chr "" "" "" "" ...
## $ City.Range..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Range..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## Warning: package 'knitr' was built under R version 4.4.3
## Warning: package 'kableExtra' was built under R version 4.4.3
anios <- datos$Year
tabla_anios <- table(anios)
tabla_anios_df <- as.data.frame(tabla_anios)
colnames(tabla_anios_df) <- c("Año", "ni")
# Calcular frecuencias relativas y acumuladas
hi <- tabla_anios_df$ni / sum(tabla_anios_df$ni)
hi_porc <- round(hi * 100, 2)
Ni_asc <- cumsum(tabla_anios_df$ni)
Ni_dsc <- rev(cumsum(rev(tabla_anios_df$ni)))
Hi_asc <- cumsum(hi_porc)
Hi_dsc <- rev(cumsum(rev(hi_porc)))
# Crear tabla final
TDFanios <- data.frame(
Año = tabla_anios_df$Año,
`Frecuencia Absoluta (ni)` = tabla_anios_df$ni,
`Frecuencia Relativa (%)` = hi_porc,
`Frecuencia Acumulada Ascendente (Ni↑)` = Ni_asc,
`Frecuencia Acumulada Descendente (Ni↓)` = Ni_dsc,
`Frecuencia Relativa Acumulada Ascendente (Hi↑)` = Hi_asc,
`Frecuencia Relativa Acumulada Descendente (Hi↓)` = Hi_dsc,
check.names = FALSE
)
# Crear fila total
fila_total <- data.frame(
Año = "Total",
`Frecuencia Absoluta (ni)` = sum(TDFanios$`Frecuencia Absoluta (ni)`),
`Frecuencia Relativa (%)` = round(sum(TDFanios$`Frecuencia Relativa (%)`), 2),
`Frecuencia Acumulada Ascendente (Ni↑)` = NA,
`Frecuencia Acumulada Descendente (Ni↓)` = NA,
`Frecuencia Relativa Acumulada Ascendente (Hi↑)` = NA,
`Frecuencia Relativa Acumulada Descendente (Hi↓)` = NA,
check.names = FALSE
)
# Unir fila total
TDFanios2 <- rbind(TDFanios, fila_total)
# Mostrar tabla formateada
kable(TDFanios2, format = "html", caption = "Tabla Nº1: Distribución de Frecuencias del Año del Vehículo") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE, position = "center") %>%
column_spec(1, bold = TRUE) %>%
row_spec(nrow(TDFanios2), bold = TRUE, color = "white", background = "#0073C2")
Año | Frecuencia Absoluta (ni) | Frecuencia Relativa (%) | Frecuencia Acumulada Ascendente (Ni↑) | Frecuencia Acumulada Descendente (Ni↓) | Frecuencia Relativa Acumulada Ascendente (Hi↑) | Frecuencia Relativa Acumulada Descendente (Hi↓) |
---|---|---|---|---|---|---|
1984 | 1964 | 5.15 | 1964 | 38113 | 5.15 | 100.00 |
1985 | 1701 | 4.46 | 3665 | 36149 | 9.61 | 94.85 |
1986 | 1210 | 3.17 | 4875 | 34448 | 12.78 | 90.39 |
1987 | 1247 | 3.27 | 6122 | 33238 | 16.05 | 87.22 |
1988 | 1130 | 2.96 | 7252 | 31991 | 19.01 | 83.95 |
1989 | 1153 | 3.03 | 8405 | 30861 | 22.04 | 80.99 |
1990 | 1078 | 2.83 | 9483 | 29708 | 24.87 | 77.96 |
1991 | 1132 | 2.97 | 10615 | 28630 | 27.84 | 75.13 |
1992 | 1121 | 2.94 | 11736 | 27498 | 30.78 | 72.16 |
1993 | 1093 | 2.87 | 12829 | 26377 | 33.65 | 69.22 |
1994 | 982 | 2.58 | 13811 | 25284 | 36.23 | 66.35 |
1995 | 967 | 2.54 | 14778 | 24302 | 38.77 | 63.77 |
1996 | 773 | 2.03 | 15551 | 23335 | 40.80 | 61.23 |
1997 | 762 | 2.00 | 16313 | 22562 | 42.80 | 59.20 |
1998 | 812 | 2.13 | 17125 | 21800 | 44.93 | 57.20 |
1999 | 852 | 2.24 | 17977 | 20988 | 47.17 | 55.07 |
2000 | 840 | 2.20 | 18817 | 20136 | 49.37 | 52.83 |
2001 | 911 | 2.39 | 19728 | 19296 | 51.76 | 50.63 |
2002 | 975 | 2.56 | 20703 | 18385 | 54.32 | 48.24 |
2003 | 1044 | 2.74 | 21747 | 17410 | 57.06 | 45.68 |
2004 | 1122 | 2.94 | 22869 | 16366 | 60.00 | 42.94 |
2005 | 1166 | 3.06 | 24035 | 15244 | 63.06 | 40.00 |
2006 | 1104 | 2.90 | 25139 | 14078 | 65.96 | 36.94 |
2007 | 1126 | 2.95 | 26265 | 12974 | 68.91 | 34.04 |
2008 | 1187 | 3.11 | 27452 | 11848 | 72.02 | 31.09 |
2009 | 1178 | 3.09 | 28630 | 10661 | 75.11 | 27.98 |
2010 | 1100 | 2.89 | 29730 | 9483 | 78.00 | 24.89 |
2011 | 1121 | 2.94 | 30851 | 8383 | 80.94 | 22.00 |
2012 | 1142 | 3.00 | 31993 | 7262 | 83.94 | 19.06 |
2013 | 1169 | 3.07 | 33162 | 6120 | 87.01 | 16.06 |
2014 | 1203 | 3.16 | 34365 | 4951 | 90.17 | 12.99 |
2015 | 1270 | 3.33 | 35635 | 3748 | 93.50 | 9.83 |
2016 | 1250 | 3.28 | 36885 | 2478 | 96.78 | 6.50 |
2017 | 1228 | 3.22 | 38113 | 1228 | 100.00 | 3.22 |
Total | 38113 | 100.00 | NA | NA | NA | NA |
# Gráfico de barras
barplot(TDFanios$`Frecuencia Absoluta (ni)`,
main = "Gráfica Nº1:
Distribución de Frecuencia por Año",
xlab = "Año", ylab = "Cantidad",
col = "yellow",
ylim = c(0, max(TDFanios$`Frecuencia Absoluta (ni)`) + 5),
names.arg = TDFanios$Año,
las = 2)
Dividimos los valores para obtener un modelo adecuado para aplicar:
Primero será de 1984 a 1994
Segundo será de 1995 a 2005
Tercero será de 2006 a 2017
Extraemos la variable y agrupamos
# Filtrar años entre 1984 y 1994
anios_84_94 <- as.numeric(datos$Year)
anios_84_94 <- anios_84_94[!is.na(anios_84_94) & anios_84_94 >= 1984 & anios_84_94 <= 1994]
tabla_84_94 <- table(anios_84_94)
df_84_94 <- as.data.frame(tabla_84_94)
colnames(df_84_94) <- c("Año", "ni")
# Calcular frecuencias relativas y acumuladas
hi <- df_84_94$ni / sum(df_84_94$ni)
hi_porc <- round(hi * 100, 2)
Ni_asc <- cumsum(df_84_94$ni)
Ni_dsc <- rev(cumsum(rev(df_84_94$ni)))
Hi_asc <- cumsum(hi_porc)
Hi_dsc <- rev(cumsum(rev(hi_porc)))
# Crear tabla final
tabla_84_94 <- data.frame(
Año = df_84_94$Año,
`Frecuencia Absoluta (ni)` = df_84_94$ni,
`Frecuencia Relativa (%)` = hi_porc,
`Frecuencia Acumulada Ascendente (Ni↑)` = Ni_asc,
`Frecuencia Acumulada Descendente (Ni↓)` = Ni_dsc,
`Frecuencia Relativa Acumulada Ascendente (Hi↑)` = Hi_asc,
`Frecuencia Relativa Acumulada Descendente (Hi↓)` = Hi_dsc,
check.names = FALSE
)
# Fila total
fila_total <- data.frame(
Año = "Total",
`Frecuencia Absoluta (ni)` = sum(tabla_84_94$`Frecuencia Absoluta (ni)`),
`Frecuencia Relativa (%)` = 100.00,
`Frecuencia Acumulada Ascendente (Ni↑)` = NA,
`Frecuencia Acumulada Descendente (Ni↓)` = NA,
`Frecuencia Relativa Acumulada Ascendente (Hi↑)` = NA,
`Frecuencia Relativa Acumulada Descendente (Hi↓)` = NA,
check.names = FALSE
)
# Unir fila total
tabla_84_94_completa <- rbind(tabla_84_94, fila_total)
# Mostrar tabla con estilo
kable(tabla_84_94_completa, format = "html", caption = "Tabla Nº2: Distribución de Frecuencias (1984–1994)") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE, position = "center") %>%
column_spec(1, bold = TRUE) %>%
row_spec(nrow(tabla_84_94_completa), bold = TRUE, color = "white", background = "#0073C2")
Año | Frecuencia Absoluta (ni) | Frecuencia Relativa (%) | Frecuencia Acumulada Ascendente (Ni↑) | Frecuencia Acumulada Descendente (Ni↓) | Frecuencia Relativa Acumulada Ascendente (Hi↑) | Frecuencia Relativa Acumulada Descendente (Hi↓) |
---|---|---|---|---|---|---|
1984 | 1964 | 14.22 | 1964 | 13811 | 14.22 | 100.01 |
1985 | 1701 | 12.32 | 3665 | 11847 | 26.54 | 85.79 |
1986 | 1210 | 8.76 | 4875 | 10146 | 35.30 | 73.47 |
1987 | 1247 | 9.03 | 6122 | 8936 | 44.33 | 64.71 |
1988 | 1130 | 8.18 | 7252 | 7689 | 52.51 | 55.68 |
1989 | 1153 | 8.35 | 8405 | 6559 | 60.86 | 47.50 |
1990 | 1078 | 7.81 | 9483 | 5406 | 68.67 | 39.15 |
1991 | 1132 | 8.20 | 10615 | 4328 | 76.87 | 31.34 |
1992 | 1121 | 8.12 | 11736 | 3196 | 84.99 | 23.14 |
1993 | 1093 | 7.91 | 12829 | 2075 | 92.90 | 15.02 |
1994 | 982 | 7.11 | 13811 | 982 | 100.01 | 7.11 |
Total | 13811 | 100.00 | NA | NA | NA | NA |
# Gráfico de barras
barplot(tabla_84_94$`Frecuencia Absoluta (ni)`,
names.arg = tabla_84_94$Año,
main = "Gráfico Nº2: Distribución de Frecuencia
por Año (1984–1994)",
xlab = "Año", ylab = "Cantidad",
col = "skyblue",
las = 2, # Gira etiquetas del eje X
cex.names = 0.8, # Tamaño de texto en eje X
ylim = c(0, max(tabla_84_94$`Frecuencia Absoluta (ni)`) + 5))
# Número de categorías (años)
k <- nrow(tabla_84_94)
Fo <- tabla_84_94$`Frecuencia Relativa (%)` # Observadas
Fe <- rep(sum(Fo)/k, k) # Esperadas bajo uniforme
# Frecuencia relativa observada
hi_obs <- round((Fo / sum(Fo)) * 100, 2)
# Tabla comparativa
tabla_uniforme <- data.frame(
Año = tabla_84_94$Año,
`hi (observada %)` = hi_obs,
`Fe (esperada)` = round(Fe, 2)
)
print(tabla_uniforme)
## Año hi..observada... Fe..esperada.
## 1 1984 14.22 9.09
## 2 1985 12.32 9.09
## 3 1986 8.76 9.09
## 4 1987 9.03 9.09
## 5 1988 8.18 9.09
## 6 1989 8.35 9.09
## 7 1990 7.81 9.09
## 8 1991 8.20 9.09
## 9 1992 8.12 9.09
## 10 1993 7.91 9.09
## 11 1994 7.11 9.09
# Gráfico comparativo
barplot(rbind(hi_obs, Fe),
beside = TRUE,
names.arg = tabla_84_94$Año,
col = c("lightgreen", "orange"),
legend.text = c("Frecuencia Observada", "Frecuencia Esperada (Uniforme)"),
main = "Gráfico Nº3: Modelo de Probabilidad
Uniform de los años (1984-1994)",
xlab = "Año", ylab = "Cantidad-Probabilidad",
las = 2,
cex.names = 0.8)
## Warning in cor(hi_obs, Fe): La desviación estándar es cero
## Correlación observadas vs esperadas: NA
# Gráfico de correlación
plot(hi_obs, Fe,
main = "Gráfico Nº4: Correlación de Frecuencias
en el Modelo Uniform de los años (1984-1994)",
xlab = "Observada (hi)",
ylab = "Esperada (P)",
pch = 19, col = "darkgreen")
abline(lm(Fe ~ hi_obs), col = "red", lwd = 2)
Se observa que los puntos están dispersos horizontalmente alrededor de la línea esperada, lo cual es característico de un modelo uniforme, donde se espera una distribución equilibrada.
x2_uniforme <- sum((Fo - Fe)^2 / Fe)
vc_uniforme <- qchisq(0.95, df = k - 1)
cat("Estadístico Chi-cuadrado:", round(x2_uniforme, 4), "\n")
## Estadístico Chi-cuadrado: 5.1609
## Valor crítico Chi-cuadrado (95%): 18.307
## ¿x² < valor crítico? TRUE
if (x2_uniforme < vc_uniforme) {
cat("No se rechaza (buen ajuste al modelo uniforme).\n")
} else {
cat("Se rechaza (mal ajuste al modelo uniforme).\n")
}
## No se rechaza (buen ajuste al modelo uniforme).
# Filtrar años entre 1995 y 2005
anios_95_05 <- as.numeric(datos$Year)
anios_95_05 <- anios_95_05[!is.na(anios_95_05) & anios_95_05 >= 1995 & anios_95_05 <= 2005]
tabla_95_05 <- table(anios_95_05)
df_95_05 <- as.data.frame(tabla_95_05)
colnames(df_95_05) <- c("Año", "Frecuencia Absoluta (ni)")
hi <- df_95_05$`Frecuencia Absoluta (ni)` / sum(df_95_05$`Frecuencia Absoluta (ni)`)
hi_porc <- round(hi * 100, 2)
diferencia <- 100 - sum(hi_porc)
hi_porc[length(hi_porc)] <- hi_porc[length(hi_porc)] + diferencia
Ni_asc <- cumsum(df_95_05$`Frecuencia Absoluta (ni)`)
Ni_dsc <- rev(cumsum(rev(df_95_05$`Frecuencia Absoluta (ni)`)))
Hi_asc <- cumsum(hi_porc)
Hi_dsc <- rev(cumsum(rev(hi_porc)))
# Crear tabla final
tabla_95_05 <- data.frame(
Año = df_95_05$Año,
`Frecuencia Absoluta (ni)` = df_95_05$`Frecuencia Absoluta (ni)`,
`Frecuencia Relativa (%)` = hi_porc,
`Frecuencia Acumulada Ascendente (Ni↑)` = Ni_asc,
`Frecuencia Acumulada Descendente (Ni↓)` = Ni_dsc,
`Frecuencia Relativa Acumulada Ascendente (Hi↑)` = Hi_asc,
`Frecuencia Relativa Acumulada Descendente (Hi↓)` = Hi_dsc,
check.names = FALSE
)
fila_total <- data.frame(
Año = "Total",
`Frecuencia Absoluta (ni)` = sum(tabla_95_05$`Frecuencia Absoluta (ni)`),
`Frecuencia Relativa (%)` = 100.00,
`Frecuencia Acumulada Ascendente (Ni↑)` = NA,
`Frecuencia Acumulada Descendente (Ni↓)` = NA,
`Frecuencia Relativa Acumulada Ascendente (Hi↑)` = NA,
`Frecuencia Relativa Acumulada Descendente (Hi↓)` = NA,
check.names = FALSE
)
tabla_95_05_completa <- rbind(tabla_95_05, fila_total)
# Mostrar tabla con formato
kable(tabla_95_05_completa, format = "html", caption = "Tabla Nº3: Distribución de Frecuencias (1995–2005)") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE, position = "center") %>%
column_spec(1, bold = TRUE) %>%
row_spec(nrow(tabla_95_05_completa), bold = TRUE, color = "white", background = "#0073C2")
Año | Frecuencia Absoluta (ni) | Frecuencia Relativa (%) | Frecuencia Acumulada Ascendente (Ni↑) | Frecuencia Acumulada Descendente (Ni↓) | Frecuencia Relativa Acumulada Ascendente (Hi↑) | Frecuencia Relativa Acumulada Descendente (Hi↓) |
---|---|---|---|---|---|---|
1995 | 967 | 9.46 | 967 | 10224 | 9.46 | 100.00 |
1996 | 773 | 7.56 | 1740 | 9257 | 17.02 | 90.54 |
1997 | 762 | 7.45 | 2502 | 8484 | 24.47 | 82.98 |
1998 | 812 | 7.94 | 3314 | 7722 | 32.41 | 75.53 |
1999 | 852 | 8.33 | 4166 | 6910 | 40.74 | 67.59 |
2000 | 840 | 8.22 | 5006 | 6058 | 48.96 | 59.26 |
2001 | 911 | 8.91 | 5917 | 5218 | 57.87 | 51.04 |
2002 | 975 | 9.54 | 6892 | 4307 | 67.41 | 42.13 |
2003 | 1044 | 10.21 | 7936 | 3332 | 77.62 | 32.59 |
2004 | 1122 | 10.97 | 9058 | 2288 | 88.59 | 22.38 |
2005 | 1166 | 11.41 | 10224 | 1166 | 100.00 | 11.41 |
Total | 10224 | 100.00 | NA | NA | NA | NA |
# Gráfico de barras
barplot(tabla_95_05$`Frecuencia Absoluta (ni)`,
names.arg = tabla_95_05$Año,
main = "Gráfico Nº5: Distribución de Frecuencia
por Años (1995–2005)",
xlab = "Año", ylab = "Cantidad",
col = "lightgreen",
las = 2,
cex.names = 0.8,
ylim = c(0, max(tabla_95_05$`Frecuencia Absoluta (ni)`) + 100))
# Número de categorías (años)
k <- nrow(tabla_95_05)
Fo <- tabla_95_05$`Frecuencia Relativa (%)` # Frecuencias observadas
Fe <- rep(sum(Fo) / k, k) # Frecuencia esperada uniforme
# Tabla comparativa
tabla_uniforme <- data.frame(
Año = tabla_95_05$Año,
Observado = Fo,
Esperado = Fe
)
print(tabla_uniforme)
## Año Observado Esperado
## 1 1995 9.46 9.090909
## 2 1996 7.56 9.090909
## 3 1997 7.45 9.090909
## 4 1998 7.94 9.090909
## 5 1999 8.33 9.090909
## 6 2000 8.22 9.090909
## 7 2001 8.91 9.090909
## 8 2002 9.54 9.090909
## 9 2003 10.21 9.090909
## 10 2004 10.97 9.090909
## 11 2005 11.41 9.090909
# Gráfico comparativo Observado vs Esperado
barplot(rbind(Fo, Fe),
beside = TRUE,
names.arg = tabla_95_05$Año,
col = c("lightgreen", "orange"),
legend.text = c("Real", "Modelo"),
main = "Gráfico No.6: Modelo de Probabilidad
Uniform de los años (1995–2005)",
xlab = "Año", ylab = "Cantidad-Probabilidad",
las = 2,
cex.names = 0.8)
## Warning in cor(Fo, Fe): La desviación estándar es cero
## Correlación observadas vs esperadas: NA
# Gráfico de correlación
plot(Fo, Fe,
main = "Gráfico No.7: Correlación de Frecuencias
en el Modelo Uniform de los años (1995–2005)",
xlab = "Observada (hi)",
ylab = "Esperada (P)",
pch = 19, col = "darkgreen")
abline(lm(Fe ~ Fo), col = "red", lwd = 2)
Se observa que los puntos están dispersos horizontalmente alrededor de la línea esperada, lo cual es característico de un modelo uniforme, donde se espera una distribución equilibrada.
x2_uniforme <- sum((Fo - Fe)^2 / Fe)
vc_uniforme <- qchisq(0.95, df = k - 1)
cat("Estadístico Chi-cuadrado (Uniforme):", x2_uniforme, "\n")
## Estadístico Chi-cuadrado (Uniforme): 2.005354
## Valor crítico Chi-cuadrado (95%): 18.30704
## ¿x2 < valor crítico? TRUE
if (x2_uniforme < vc_uniforme) {
cat("No se rechaza (buen ajuste al modelo uniforme)\n")
} else {
cat("Se rechaza (mal ajuste al modelo uniforme)\n")
}
## No se rechaza (buen ajuste al modelo uniforme)
# Filtrar años entre 2006 y 2017
anios_06_17 <- as.numeric(datos$Year)
anios_06_17 <- anios_06_17[!is.na(anios_06_17) & anios_06_17 >= 2006 & anios_06_17 <= 2017]
tabla_06_17 <- table(anios_06_17)
df_06_17 <- as.data.frame(tabla_06_17)
colnames(df_06_17) <- c("Año", "Frecuencia Absoluta (ni)")
hi <- df_06_17$`Frecuencia Absoluta (ni)` / sum(df_06_17$`Frecuencia Absoluta (ni)`)
hi_porc <- round(hi * 100, 2)
diferencia <- 100 - sum(hi_porc)
hi_porc[length(hi_porc)] <- hi_porc[length(hi_porc)] + diferencia
Ni_asc <- cumsum(df_06_17$`Frecuencia Absoluta (ni)`)
Ni_dsc <- rev(cumsum(rev(df_06_17$`Frecuencia Absoluta (ni)`)))
Hi_asc <- cumsum(hi_porc)
Hi_dsc <- rev(cumsum(rev(hi_porc)))
# Crear tabla final
tabla_06_17 <- data.frame(
Año = df_06_17$Año,
`Frecuencia Absoluta (ni)` = df_06_17$`Frecuencia Absoluta (ni)`,
`Frecuencia Relativa (%)` = hi_porc,
`Frecuencia Acumulada Ascendente (Ni↑)` = Ni_asc,
`Frecuencia Acumulada Descendente (Ni↓)` = Ni_dsc,
`Frecuencia Relativa Acumulada Ascendente (Hi↑)` = Hi_asc,
`Frecuencia Relativa Acumulada Descendente (Hi↓)` = Hi_dsc,
check.names = FALSE
)
fila_total <- data.frame(
Año = "Total",
`Frecuencia Absoluta (ni)` = sum(tabla_06_17$`Frecuencia Absoluta (ni)`),
`Frecuencia Relativa (%)` = 100.00,
`Frecuencia Acumulada Ascendente (Ni↑)` = NA,
`Frecuencia Acumulada Descendente (Ni↓)` = NA,
`Frecuencia Relativa Acumulada Ascendente (Hi↑)` = NA,
`Frecuencia Relativa Acumulada Descendente (Hi↓)` = NA,
check.names = FALSE
)
# Unir tabla y fila total
tabla_06_17_completa <- rbind(tabla_06_17, fila_total)
# Mostrar tabla con formato
kable(tabla_06_17_completa, format = "html", caption = "Tabla Nº5: Distribución de Frecuencias (2006–2017)") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE, position = "center") %>%
column_spec(1, bold = TRUE) %>%
row_spec(nrow(tabla_06_17_completa), bold = TRUE, color = "white", background = "#0073C2")
Año | Frecuencia Absoluta (ni) | Frecuencia Relativa (%) | Frecuencia Acumulada Ascendente (Ni↑) | Frecuencia Acumulada Descendente (Ni↓) | Frecuencia Relativa Acumulada Ascendente (Hi↑) | Frecuencia Relativa Acumulada Descendente (Hi↓) |
---|---|---|---|---|---|---|
2006 | 1104 | 7.84 | 1104 | 14078 | 7.84 | 100.00 |
2007 | 1126 | 8.00 | 2230 | 12974 | 15.84 | 92.16 |
2008 | 1187 | 8.43 | 3417 | 11848 | 24.27 | 84.16 |
2009 | 1178 | 8.37 | 4595 | 10661 | 32.64 | 75.73 |
2010 | 1100 | 7.81 | 5695 | 9483 | 40.45 | 67.36 |
2011 | 1121 | 7.96 | 6816 | 8383 | 48.41 | 59.55 |
2012 | 1142 | 8.11 | 7958 | 7262 | 56.52 | 51.59 |
2013 | 1169 | 8.30 | 9127 | 6120 | 64.82 | 43.48 |
2014 | 1203 | 8.55 | 10330 | 4951 | 73.37 | 35.18 |
2015 | 1270 | 9.02 | 11600 | 3748 | 82.39 | 26.63 |
2016 | 1250 | 8.88 | 12850 | 2478 | 91.27 | 17.61 |
2017 | 1228 | 8.73 | 14078 | 1228 | 100.00 | 8.73 |
Total | 14078 | 100.00 | NA | NA | NA | NA |
# Barplot de frecuencias observadas
barplot(tabla_06_17$`Frecuencia Absoluta (ni)`,
names.arg = tabla_06_17$Año,
main = "Gráfico Nº8: Distribución de Frecuencia
por Años (2006–2017)",
xlab = "Año", ylab = "Cantidad",
col = "skyblue",
las = 2,
cex.names = 0.8,
ylim = c(0, max(tabla_06_17$`Frecuencia Absoluta (ni)`) + 100))
k <- nrow(tabla_06_17) # número de años
Fo <- tabla_06_17$`Frecuencia Relativa (%)` # observadas
Fe <- rep(sum(Fo)/k, k) # esperadas uniformes
# Tabla comparativa
tabla_uniforme <- data.frame(
Año = tabla_06_17$Año,
Observado = Fo,
Esperado = Fe
)
tabla_uniforme
## Año Observado Esperado
## 1 2006 7.84 8.333333
## 2 2007 8.00 8.333333
## 3 2008 8.43 8.333333
## 4 2009 8.37 8.333333
## 5 2010 7.81 8.333333
## 6 2011 7.96 8.333333
## 7 2012 8.11 8.333333
## 8 2013 8.30 8.333333
## 9 2014 8.55 8.333333
## 10 2015 9.02 8.333333
## 11 2016 8.88 8.333333
## 12 2017 8.73 8.333333
# Gráfico comparativo
barplot(rbind(Fo, Fe),
beside = TRUE,
names.arg = tabla_06_17$Año,
col = c("skyblue", "darkorange"),
legend.text = c("Real", "Modelo"),
main = "Gráfico Nº9: Modelo de Probabilidad
Uniform de los años (2006–2017)",
xlab = "Año", ylab = "Cantidad-Probabilidad",
las = 2,
cex.names = 0.8)
plot(Fo, Fe,
main = "Gráfico Nº10: Correlación de Frecuencias
en el Modelo Uniform de los años (2006–2017)",
xlab = "Observada (hi)",
ylab = "Esperada (P)",
pch = 19, col = "darkblue")
abline(lm(Fe ~ Fo), col = "red", lwd = 2)
Se observa que los puntos están dispersos horizontalmente alrededor de la línea esperada, lo cual es característico de un modelo uniforme, donde se espera una distribución equilibrada.
x2_uniforme <- sum((Fo - Fe)^2 / Fe)
vc_uniforme <- qchisq(0.95, df = k - 1)
cat("Estadístico Chi-cuadrado (Uniforme):", x2_uniforme, "\n")
## Estadístico Chi-cuadrado (Uniforme): 0.216488
## Valor crítico Chi-cuadrado (95%): 19.67514
if (x2_uniforme < vc_uniforme) {
cat("No se rechaza (buen ajuste al modelo uniforme)\n")
} else {
cat("Se rechaza (mal ajuste al modelo uniforme)\n")
}
## No se rechaza (buen ajuste al modelo uniforme)
La variable “Año” fue analizada en tres periodos: 1984–1994, 1995–2005 y 2006–2017. En todos los casos, la distribución de frecuencias se ajusta bien a un modelo uniforme discreto, según el test de Chi-cuadrado. Esto indica que los registros de vehículos están distribuidos de forma equilibrada a lo largo de los años, sin concentraciones atípicas.