Cargar Datos

# Cargar los datos
datos <- read.csv("D:/Data/database.csv", header = TRUE, sep = ";", dec = ".")
# Función para calcular la moda
get_mode <- function(v) {
  uniqv <- unique(v)
  uniqv[which.max(tabulate(match(v, uniqv)))]
}

Variable: Cilindrada del motor

c_motor <- as.numeric(as.character(datos$Engine.Index))
## Warning: NAs introducidos por coerción
c_motor <- na.omit(c_motor)
c_motor <- c_motor[c_motor > 10000]

R <- max(c_motor) - min(c_motor)
k <- floor(1 + (3.3 * log10(length(c_motor))))
A <- R / k

liminf <- seq(from = min(c_motor), by = A, length.out = k)
limsup <- liminf + A
limsup[k] <- max(c_motor) + 0.01
breaks <- c(liminf, max(limsup) + 0.01)

MC <- (liminf + limsup) / 2

ni <- c()
for (i in 1:k) {
  if (i == k) {
    ni[i] <- length(subset(c_motor, c_motor >= liminf[i] & c_motor <= limsup[i]))
  } else {
    ni[i] <- length(subset(c_motor, c_motor >= liminf[i] & c_motor < limsup[i]))
  }
}

hi <- (ni / length(c_motor)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))

TDFcu_c_motor <- data.frame(
  liminf = round(liminf, 2),
  limsup = round(limsup, 2),
  MC = round(MC, 2),
  ni = ni,
  hi_perc = round(hi, 2),
  Niasc = Niasc,
  Nidsc = Nidsc,
  Hiasc_perc = round(Hiasc, 2),
  Hidsc_perc = round(Hidsc, 2)
)
print(TDFcu_c_motor)
##      liminf   limsup       MC   ni hi_perc Niasc Nidsc Hiasc_perc Hidsc_perc
## 1  10010.00 14555.54 12282.77  288    4.31   288  6681       4.31     100.00
## 2  14555.54 19101.08 16828.31   43    0.64   331  6393       4.95      95.69
## 3  19101.08 23646.62 21373.85  511    7.65   842  6350      12.60      95.05
## 4  23646.62 28192.15 25919.38  577    8.64  1419  5839      21.24      87.40
## 5  28192.15 32737.69 30464.92  383    5.73  1802  5262      26.97      78.76
## 6  32737.69 37283.23 35010.46  115    1.72  1917  4879      28.69      73.03
## 7  37283.23 41828.77 39556.00  691   10.34  2608  4764      39.04      71.31
## 8  41828.77 46374.31 44101.54  276    4.13  2884  4073      43.17      60.96
## 9  46374.31 50919.85 48647.08  991   14.83  3875  3797      58.00      56.83
## 10 50919.85 55465.38 53192.62  302    4.52  4177  2806      62.52      42.00
## 11 55465.38 60010.92 57738.15 1687   25.25  5864  2504      87.77      37.48
## 12 60010.92 64556.46 62283.69  402    6.02  6266   817      93.79      12.23
## 13 64556.46 69102.01 66829.24  415    6.21  6681   415     100.00       6.21

GRÁFICA NO.1 DISTRIBUCIÓN DE LA CILINDRADA DEL MOTOR

hist(c_motor,
     breaks = breaks,
     freq = TRUE,
     main = "GRÁFICA NO.1 DISTRIBUCIÓN DE LA CILINDRADA DEL MOTOR",
     xlab = "CILINDRADA",
     ylab = "CANTIDAD",
     col = "steelblue",
     border = "black",
     xlim = c(liminf[1], limsup[k]))
## Warning in plot.histogram(r, freq = freq1, col = col, border = border, angle =
## angle, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'

boxplot(c_motor, horizontal = TRUE, col = "darkorange",
        main = "GRÁFICA NO.2 DISTRIBUCIÓN DE LA CILINDRADA DEL MOTOR",
        xlab = "CILINDRADA DEL MOTOR")

x_asc <- c(min(TDFcu_c_motor$liminf), TDFcu_c_motor$limsup)
y_asc <- c(0, TDFcu_c_motor$Niasc)

x_desc <- c(TDFcu_c_motor$liminf, max(TDFcu_c_motor$limsup))
y_desc <- c(TDFcu_c_motor$Nidsc, 0)

x_plot_range <- c(liminf[1], limsup[k])
y_plot_range <- c(0, max(c(y_asc, y_desc), na.rm = TRUE))

plot(x_asc, y_asc, type = "o",
     main = "GRÁFICA NO.3 OJIVA ASCENDENTE Y DESCENDENTE",
     xlab = "CILINDRADA DEL MOTOR", ylab = "CANTIDAD",
     col = "darkgreen",
     xlim = x_plot_range,
     ylim = y_plot_range)
lines(x_desc, y_desc, col = "darkblue", type = "o")

mean_c_motor <- mean(c_motor)
median_c_motor <- median(c_motor)
sd_c_motor <- sd(c_motor)

indicadores_c_motor <- data.frame(
  Indicador = c("Moda", "Mediana", "Media(x)", "Desviacion Estandar", "Varianza", "Coef Variacion (%)", "Asimetria", "Curtosis"),
  Valor = c(
    round(get_mode(c_motor), 2),
    round(median_c_motor, 2),
    round(mean_c_motor, 2),
    round(sd_c_motor, 2),
    round(var(c_motor), 2),
    round((sd_c_motor / mean_c_motor) * 100, 2),
    round(skewness(c_motor), 2),
    round(kurtosis(c_motor), 2)
  )
)
print(indicadores_c_motor)
##             Indicador        Valor
## 1                Moda     49010.00
## 2             Mediana     49032.00
## 3            Media(x)     44464.49
## 4 Desviacion Estandar     15473.68
## 5            Varianza 239434782.27
## 6  Coef Variacion (%)        34.80
## 7           Asimetria        -0.51
## 8            Curtosis        -0.93
boxplot.stats(c_motor)$out
## numeric(0)
length(boxplot.stats(c_motor)$out)
## [1] 0
outliers <- boxplot.stats(c_motor)$out
range(outliers)
## Warning in min(x): ningún argumento finito para min; retornando Inf
## Warning in max(x): ningun argumento finito para max; retornando -Inf
## [1]  Inf -Inf
## Conclusión Cilindrada

El comportamiento de la variable de la cilindrada del motor fluctúa entre 10010 y 69102.01. La mediana es de 44464.49 con una desviación estándar de 15473.68. Se observa una distribución altamente dispersa, con sesgo positivo y sin valores atípicos.

Variable: Costo anual del combustible

c_anual <- as.numeric(as.character(datos$Annual.Fuel.Cost..FT1.))
c_anual <- na.omit(c_anual)
c_anual <- c_anual[c_anual > 0]

R <- max(c_anual) - min(c_anual)
k <- floor(1 + (3.3 * log10(length(c_anual))))
A <- R / k

liminf <- seq(from = min(c_anual), by = A, length.out = k)
limsup <- liminf + A
limsup[k] <- max(c_anual) + 0.01
breaks <- c(liminf, max(limsup) + 0.01)

MC <- (liminf + limsup) / 2

ni <- c()
for (i in 1:k) {
  if (i == k) {
    ni[i] <- length(subset(c_anual, c_anual >= liminf[i] & c_anual <= limsup[i]))
  } else {
    ni[i] <- length(subset(c_anual, c_anual >= liminf[i] & c_anual < limsup[i]))
  }
}

hi <- (ni / length(c_anual)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))

TDFcu_c_anual <- data.frame(
  liminf = round(liminf, 2),
  limsup = round(limsup, 2),
  MC = round(MC, 2),
  ni = ni,
  hi_perc = round(hi, 2),
  Niasc = Niasc,
  Nidsc = Nidsc,
  Hiasc_perc = round(Hiasc, 2),
  Hidsc_perc = round(Hidsc, 2)
)
print(TDFcu_c_anual)
##     liminf  limsup      MC   ni hi_perc Niasc Nidsc Hiasc_perc Hidsc_perc
## 1   500.00  846.88  673.44  178    0.50   178 35723       0.50     100.00
## 2   846.88 1193.75 1020.31 1294    3.62  1472 35545       4.12      99.50
## 3  1193.75 1540.62 1367.19 6655   18.63  8127 34251      22.75      95.88
## 4  1540.62 1887.50 1714.06 9015   25.24 17142 27596      47.99      77.25
## 5  1887.50 2234.38 2060.94 8509   23.82 25651 18581      71.81      52.01
## 6  2234.38 2581.25 2407.81 6170   17.27 31821 10072      89.08      28.19
## 7  2581.25 2928.12 2754.69 2332    6.53 34153  3902      95.61      10.92
## 8  2928.12 3275.00 3101.56  995    2.79 35148  1570      98.39       4.39
## 9  3275.00 3621.88 3448.44  304    0.85 35452   575      99.24       1.61
## 10 3621.88 3968.75 3795.31  175    0.49 35627   271      99.73       0.76
## 11 3968.75 4315.62 4142.19   52    0.15 35679    96      99.88       0.27
## 12 4315.62 4662.50 4489.06   31    0.09 35710    44      99.96       0.12
## 13 4662.50 5009.38 4835.94    6    0.02 35716    13      99.98       0.04
## 14 5009.38 5356.25 5182.81    2    0.01 35718     7      99.99       0.02
## 15 5356.25 5703.12 5529.69    0    0.00 35718     5      99.99       0.01
## 16 5703.12 6050.01 5876.57    5    0.01 35723     5     100.00       0.01

GRÁFICA NO.4 DISTRIBUCIÓN DEL COSTO ANUAL DE COMBUSTIBLE

hist(c_anual,
     breaks = breaks,
     freq = TRUE,
     main = "GRÁFICA NO.4 DISTRIBUCIÓN DEL COSTO ANUAL DE COMBUSTIBLE",
     xlab = "COSTO ANUAL",
     ylab = "CANTIDAD",
     col = "steelblue",
     border = "black",
     xlim = c(liminf[1], limsup[k]))
## Warning in plot.histogram(r, freq = freq1, col = col, border = border, angle =
## angle, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'

boxplot(c_anual, horizontal = TRUE, col = "darkorange",
        main = "GRÁFICA NO.5 DISTRIBUCIÓN DEL COSTO ANUAL DE COMBUSTIBLE",
        xlab = "COSTO ANUAL")

x_asc <- c(min(TDFcu_c_anual$liminf), TDFcu_c_anual$limsup)
y_asc <- c(0, TDFcu_c_anual$Niasc)

x_desc <- c(TDFcu_c_anual$liminf, max(TDFcu_c_anual$limsup))
y_desc <- c(TDFcu_c_anual$Nidsc, 0)

plot(x_asc, y_asc, type = "o",
     main = "GRÁFICA NO.6 OJIVA COSTO ANUAL COMBUSTIBLE",
     xlab = "COSTO ANUAL", ylab = "CANTIDAD",
     col = "darkgreen",
     xlim = c(liminf[1], limsup[k]),
     ylim = c(0, max(c(y_asc, y_desc))))
lines(x_desc, y_desc, col = "darkblue", type = "o")

mean_c_anual <- mean(c_anual)
median_c_anual <- median(c_anual)
sd_c_anual <- sd(c_anual)

indicadores_c_anual <- data.frame(
  Indicador = c("Moda", "Mediana", "Media(x)", "Desviacion Estandar", "Varianza", "Coef Variacion (%)", "Asimetria", "Curtosis"),
  Valor = c(
    round(get_mode(c_anual), 2),
    round(median_c_anual, 2),
    round(mean_c_anual, 2),
    round(sd_c_anual, 2),
    round(var(c_anual), 2),
    round((sd_c_anual / mean_c_anual) * 100, 2),
    round(skewness(c_anual), 2),
    round(kurtosis(c_anual), 2)
  )
)
print(indicadores_c_anual)
##             Indicador     Valor
## 1                Moda   2350.00
## 2             Mediana   1950.00
## 3            Media(x)   1959.10
## 4 Desviacion Estandar    533.64
## 5            Varianza 284768.16
## 6  Coef Variacion (%)     27.24
## 7           Asimetria      0.83
## 8            Curtosis      1.80
boxplot.stats(c_anual)$out
##   [1] 3900 3900 3900 3900 4350 4350 3900 3500 3500 3500 3500 3500 3500 3500 3500
##  [16] 3500 3500 3500 3500 3500 3500 4350 4350 4350 4350 4350 4350 3900 3900 4350
##  [31] 4350 3500 3500 4350 4350 4350 4350 4350 4350 3500 3500 3500 3500 3500 3500
##  [46] 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 4350 3500 4350 4350
##  [61] 3900 4350 3500 3500 3500 3500 6050 4350 3250 3250 4350 4350 3900 4350 3900
##  [76] 3900 3900 3500 3900 3500 3500 3500 3500 3900 6050 3250 3250 4350 4350 3900
##  [91] 3900 4350 3900 4350 3900 3900 4350 3900 3900 4350 3900 3900 4350 3900 3900
## [106] 3900 3500 3500 3900 3500 3500 3900 3900 6050 3250 3250 3250 3500 3900 3900
## [121] 3900 3900 3900 3900 3900 3900 3500 3500 3500 3500 3500 3500 3500 3500 3500
## [136] 3500 3500 3250 6050 3500 3250 3250 3500 3500 3500 3500 3500 3500 3900 3500
## [151] 3500 3500 3500 3250 3250 6050 4250 3250 3250 3250 4250 4250 4250 4250 3500
## [166] 3500 3250 3500 3500 3250 3500 3500 3500 3500 3500 3250 3850 3850 3250 4250
## [181] 3250 3250 4250 4250 4250 4250 3500 3500 4250 3250 3250 3250 3250 3250 3250
## [196] 3250 3850 3500 3250 3500 3500 3500 3500 3500 3250 3250 3850 3850 3250 4250
## [211] 3250 3850 3850 3250 3850 3850 3850 3850 3850 3850 3500 3850 3850 3850 3850
## [226] 3500 4250 3250 3250 3250 3250 3250 3500 3250 3250 3850 3500 3250 3500 3250
## [241] 3850 3250 3250 3500 3500 4250 4250 3500 3500 3250 3250 3500 3250 3250 3850
## [256] 3850 3850 3850 3850 3500 3500 3250 3250 3850 3250 3250 3250 3250 4250 3250
## [271] 3250 3500 3500 3250 3250 3250 3250 3850 3850 3850 3850 3850 3250 3250 3850
## [286] 3850 5300 3850 3500 3250 3250 4250 4250 3250 3250 3500 3250 3250 3500 3250
## [301] 3250 3250 3250 3850 3850 3850 3850 3850 3850 3500 4250 3250 3500 3500 3500
## [316] 3500 3500 4700 4250 3850 3850 4250 3250 3250 3250 3500 3500 3500 3500 3500
## [331] 4700 3500 3500 3850 3500 3500 3500 3500 3250 3250 3850 3850 4250 3850 3850
## [346] 3250 4250 3250 3250 3250 3250 3500 3850 3250 3500 3850 3500 3500 3500 3500
## [361] 3250 3250 3500 3850 3850 3850 4250 3850 3850 3250 4250 3250 3250 3250 3250
## [376] 3250 3250 3250 3500 3850 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500
## [391] 3850 3850 3850 3850 4700 3250 3250 3250 3500 3250 3250 3500 3500 3500 3500
## [406] 3500 3500 3250 3250 3850 3850 3850 3850 4700 3250 3850 3250 3250 3500 3500
## [421] 3500 3500 3250 3250 3250 3850 3250 3250 3250 3850 3850 3850 3850 3850 3850
## [436] 3500 4250 4250 3250 3500 3250 3250 3500 3500 3500 3500 3500 3500 3250 3250
## [451] 3500 3850 3850 3850 3250 3500 3500 3500 3250 3850 3850 3500 3500 3500 3500
## [466] 3850 3500 3850 3850 3850 3850 3850 5300 3250 4250 4250 3500 3250 3250 3250
## [481] 3500 3500 3500 3500 3500 3250 3250 3850 3850 3500 4250 3250 3500 3850 3850
## [496] 3850 3850 3250 3850 4250 3850 4250 3500 3500 3250 3250 3500 3500 3500 3500
## [511] 3250 3250 3500 3250 3250 3850 3250 3250 3250 3500 3250 3500 3500 3850 3850
## [526] 3500 3250 3250 3250 3450 3450 4700 4250 3250 3850 3850 3850 3850 3850 3500
## [541] 3500 3500 3450 3450 3250 3250 3850 4250 3850 4250 3500 3250 3250 3250 3500
## [556] 3500 3500 3500 3500 3250 3250 3250 3500 3500 3250 3250 3250 3850 3250 3250
## [571] 3250 3500 3250 3500 3500 3850 3850 3500 3250 3250 3250 4250 3250 3250 3250
## [586] 4700 4250 3250 3850 3500 3850 3850 3250 3250 3250 3500 3250 3500 3500 3500
## [601] 3850 4250 3250 3250 3250 3250 3250 3500 3500 3500 3250 3250 3250 3500 3500
## [616] 3500 3500 3500 3500 3500 3250 3250 3500 3250 3500 3850 3850 3850 3250 3250
## [631] 3250 3250 3250 3250 3250 3250 3250 3500 3850 3850 3500 3250 3250 3500 3250
## [646] 3250 3250 3500 3500 3850 4250 3250 3250 3500 3500 3500 3500 3250 3500 3500
## [661] 3500 3250 3250 3500 3500 3500 3500 3500 3500 3250 3500 3250 3500 3850 3850
## [676] 3850 3500 3250 3500 3250 3250 3250 3250 3250 3250 4250 3250 3500 3500 3850
## [691] 3500 3250 3250 3500 3250 3250 3500 3500 3850 4250 3850 3850 4250 3500 3500
## [706] 3500 3500 3250 3250 3250 3500 3500 3250 3250 3250 3250 3250 3250 3250 3250
## [721] 3250 3250 3250 3250 3250 3250 3250 3250 3250 3850 3850 3850 3850 3500 3250
## [736] 3500 3250 3250 3250 3250 3250 3250 3500 3500 3850 3500 3250 3250 3500 3850
## [751] 4250 3850 4250 3500 3500 3500 3500 3250 3250 3500 3500 3250 3250 3250 3250
## [766] 3250 3250 3250 3850 3850 3500 3250 3500 3250 3250 3250 3250 3250 3250 4250
## [781] 3500 3500 3850 3500 3250 3850 4250 3850 3850 4250 3500 3500 3500 3250 3500
## [796] 3250 3500 3250 3250 3250 3250 3250 3250 3250 3250 3250 3250 4250 3500 3250
## [811] 3500 3500 3850 3500 3500 3500 3500 3500 3500 3250 3500 3250 3250 3250 3250
## [826] 4250 3250  600 3250 3250 3500 3500 3500 3500 3500 3250  600 3250 4250 3250
## [841]  550  600  550 3250 3500 3250 3250  600  550  550  600  600 3250  550 4250
## [856]  550 3250 3250  550  600  550 3250 3500 3250 3250 3250  600  600 3250 3850
## [871] 3250 3250 3850 3850  600  600 3250  550 4250  550 3250 3250  550  600  600
## [886] 3250 3500 3250 3250 3250  600  600  600  550  550  550 3250 3500 3250 3250
## [901]  600  600  600 3250 3500 3250 3500 3250  600  600  600 3250 3250 3250  600
## [916]  600  600  600  550 3500 3250  550  550  550 3250 3500 3250 3250  600  600
## [931]  600  500  600 3250 3500 3250 3500 3250 3500 3250 3850  600  600  600  600
length(boxplot.stats(c_anual)$out)
## [1] 945
outliers <- boxplot.stats(c_anual)$out
range(outliers)
## [1]  500 6050
## Conclusión Costo Anual

El comportamiento del costo anual de combustible fluctúa entre 0 y 6050.01, con una mediana de 1950 y desviación estándar de 533.64. Es una distribución moderadamente dispersa, con sesgo negativo y presencia de valores atípicos entre 500 y 6050.

Variable: MPG en ciudad

mpg_c <- as.numeric(as.character(datos$Unadjusted.City.MPG..FT1.))
## Warning: NAs introducidos por coerción
mpg_c <- na.omit(mpg_c)
mpg_c <- mpg_c[mpg_c > 0]

R <- max(mpg_c) - min(mpg_c)
k <- floor(1 + (3.3 * log10(length(mpg_c))))
A <- R / k

liminf <- seq(from = min(mpg_c), by = A, length.out = k)
limsup <- liminf + A
limsup[k] <- max(mpg_c) + 0.01
breaks <- c(liminf, max(limsup) + 0.01)

MC <- (liminf + limsup) / 2

ni <- c()
for (i in 1:k) {
  if (i == k) {
    ni[i] <- length(subset(mpg_c, mpg_c >= liminf[i] & mpg_c <= limsup[i]))
  } else {
    ni[i] <- length(subset(mpg_c, mpg_c >= liminf[i] & mpg_c < limsup[i]))
  }
}

hi <- (ni / length(mpg_c)) * 100
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))

TDFcu_mpg_c <- data.frame(
  liminf = round(liminf, 2),
  limsup = round(limsup, 2),
  MC = round(MC, 2),
  ni = ni,
  hi_perc = round(hi, 2),
  Niasc = Niasc,
  Nidsc = Nidsc,
  Hiasc_perc = round(Hiasc, 2),
  Hidsc_perc = round(Hidsc, 2)
)
print(TDFcu_mpg_c)
##    liminf limsup     MC    ni hi_perc Niasc Nidsc Hiasc_perc Hidsc_perc
## 1    7.00  61.99  34.50 24084   67.50 24084 35679      67.50     100.00
## 2   61.99 116.98  89.49   135    0.38 24219 11595      67.88      32.50
## 3  116.98 171.97 144.48  2228    6.24 26447 11460      74.12      32.12
## 4  171.97 226.96 199.47  4308   12.07 30755  9232      86.20      25.88
## 5  226.96 281.95 254.46  3134    8.78 33889  4924      94.98      13.80
## 6  281.95 336.94 309.45  1012    2.84 34901  1790      97.82       5.02
## 7  336.94 391.93 364.44   518    1.45 35419   778      99.27       2.18
## 8  391.93 446.92 419.43   109    0.31 35528   260      99.58       0.73
## 9  446.92 501.91 474.42    43    0.12 35571   151      99.70       0.42
## 10 501.91 556.90 529.41    32    0.09 35603   108      99.79       0.30
## 11 556.90 611.89 584.40    40    0.11 35643    76      99.90       0.21
## 12 611.89 666.88 639.39     3    0.01 35646    36      99.91       0.10
## 13 666.88 721.87 694.38    22    0.06 35668    33      99.97       0.09
## 14 721.87 776.86 749.37     4    0.01 35672    11      99.98       0.03
## 15 776.86 831.85 804.36     1    0.00 35673     7      99.98       0.02
## 16 831.85 886.85 859.35     6    0.02 35679     6     100.00       0.02

GRÁFICA NO.7 DISTRIBUCIÓN DE MPG EN CIUDAD

hist(mpg_c,
     breaks = breaks,
     freq = TRUE,
     main = "GRÁFICA NO.7 DISTRIBUCIÓN DE MPG EN CIUDAD",
     xlab = "MPG EN CIUDAD",
     ylab = "CANTIDAD",
     col = "steelblue",
     border = "black",
     xlim = c(liminf[1], limsup[k]))
## Warning in plot.histogram(r, freq = freq1, col = col, border = border, angle =
## angle, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'

boxplot(mpg_c, horizontal = TRUE, col = "darkorange",
        main = "GRÁFICA NO.8 DISTRIBUCIÓN DE MPG EN CIUDAD",
        xlab = "MPG EN CIUDAD")

x_asc <- c(min(TDFcu_mpg_c$liminf), TDFcu_mpg_c$limsup)
y_asc <- c(0, TDFcu_mpg_c$Niasc)

x_desc <- c(TDFcu_mpg_c$liminf, max(TDFcu_mpg_c$limsup))
y_desc <- c(TDFcu_mpg_c$Nidsc, 0)

plot(x_asc, y_asc, type = "o",
     main = "GRÁFICA NO.9 OJIVA MPG EN CIUDAD",
     xlab = "MPG EN CIUDAD", ylab = "CANTIDAD",
     col = "darkgreen",
     xlim = c(liminf[1], limsup[k]),
     ylim = c(0, max(c(y_asc, y_desc))))
lines(x_desc, y_desc, col = "darkblue", type = "o")

mean_mpg_c <- mean(mpg_c)
median_mpg_c <- median(mpg_c)
sd_mpg_c <- sd(mpg_c)

indicadores_mpg_c <- data.frame(
  Indicador = c("Moda", "Mediana", "Media(x)", "Desviacion Estandar", "Varianza", "Coef Variacion (%)", "Asimetria", "Curtosis"),
  Valor = c(
    round(get_mode(mpg_c), 2),
    round(median_mpg_c, 2),
    round(mean_mpg_c, 2),
    round(sd_mpg_c, 2),
    round(var(mpg_c), 2),
    round((sd_mpg_c / mean_mpg_c) * 100, 2),
    round(skewness(mpg_c), 2),
    round(kurtosis(mpg_c), 2)
  )
)
print(indicadores_mpg_c)
##             Indicador    Valor
## 1                Moda    20.00
## 2             Mediana    25.00
## 3            Media(x)    88.56
## 4 Desviacion Estandar   104.43
## 5            Varianza 10905.14
## 6  Coef Variacion (%)   117.92
## 7           Asimetria     1.43
## 8            Curtosis     2.00
boxplot.stats(mpg_c)$out
##   [1] 522.222 422.222 544.444 522.222 522.222 444.444 611.111 444.444 486.176
##  [10] 486.176 486.176 486.212 556.406 488.605 488.605 591.796 557.061 508.241
##  [19] 592.769 591.577 507.739 507.068 507.739 591.568 488.889 507.739 507.739
##  [28] 506.704 591.796 591.553 433.333 433.333 489.244 432.225 748.889 687.755
##  [37] 432.225 428.354 428.354 432.429 502.985 886.842 717.021 468.056 687.755
##  [46] 502.985 432.429 464.177 464.177 464.177 886.842 681.881 464.977 464.977
##  [55] 464.977 624.074 886.842 673.878 464.592 464.592 464.592 624.074 675.368
##  [64] 465.427 465.427 465.427 673.785 464.302 464.302 464.302 418.692 418.692
##  [73] 418.691 417.052 417.052 417.052 442.454 442.454 442.454 543.737 546.779
##  [82] 442.454 719.537 454.121 463.474 543.153 546.039 579.193 414.485 442.454
##  [91] 718.162 859.694 463.474 554.746 579.193 471.821 414.485 451.156 451.156
## [100] 585.479 550.557 717.588 717.716 522.498 604.817 604.817 605.262 554.695
## [109] 716.404 414.485 604.817 428.341 451.156 451.156 550.636 716.404 717.931
## [118] 522.461 415.772 603.697 702.278 648.901 611.467 554.695 414.485 603.697
## [127] 494.465 444.503 427.422 550.738 718.675 598.417 603.507 702.278 611.467
## [136] 448.998 720.295 560.848 462.546 441.145 414.485 604.066 494.465 444.503
## [145] 560.848 585.479 550.694 720.295 718.226 598.528 415.766 605.605 448.998
## [154] 529.735 579.193 560.848 462.473 424.747 415.243 605.605 415.018 434.626
## [163] 560.848 585.479 550.793 760.467 835.598 599.822 458.712 415.782 472.789
## [172] 609.596 710.017 414.712 424.556 448.998 724.052 539.804 579.193 560.848
## [181] 441.067 415.936 609.596 502.386 446.614 467.653 437.032 416.382 560.848
## [190] 585.479 549.911 755.931 689.757 835.598 788.197 599.394 458.658 430.555
length(boxplot.stats(mpg_c)$out)
## [1] 198
outliers <- boxplot.stats(mpg_c)$out
range(outliers)
## [1] 414.485 886.842
## Conclusión MPG Ciudad

El comportamiento de la variable MPG en ciudad fluctúa entre 0 y 886.13, con mediana de 24 y desviación estándar de 103.54. Presenta alta dispersión, sesgo positivo, y valores atípicos a partir de 391.83.