Cargar los datos

setwd("D:/Data")
datos <- read.csv("database.csv", header = TRUE, sep = ";", dec =".")

Variables Ordinales

Variable: Año

anio_v <- as.numeric(as.character(datos$Year))

# Agrupar años 
anio_grupo <- cut(anio_v,
                  breaks = c(1980, 1990, 2000, 2010, 2020),
                  labels = c("1981-1990", "1991-2000", "2001-2010", "2011-2017"),
                  right = FALSE, include.lowest = TRUE, ordered_result = TRUE)

# Crear tabla de frecuencia
TDF_anios <- table(anio_grupo)
Tabla_anios <- as.data.frame(TDF_anios)
names(Tabla_anios) <- c("ANIOS", "ni")
Tabla_anios$hi_porcentaje <- (Tabla_anios$ni / sum(Tabla_anios$ni)) * 100
TDF_aniosFinal <- rbind(
  Tabla_anios,
  data.frame(ANIOS = "TOTAL",
             ni = sum(Tabla_anios$ni),
             hi_porcentaje = 100)
)
TDF_aniosFinal$ni <- round(TDF_aniosFinal$ni, 2)
TDF_aniosFinal$hi_porcentaje <- round(TDF_aniosFinal$hi_porcentaje, 2)

Tabla

print(TDF_aniosFinal)
##       ANIOS    ni hi_porcentaje
## 1 1981-1990  8405         22.05
## 2 1991-2000  9572         25.11
## 3 2001-2010 10653         27.95
## 4 2011-2017  9483         24.88
## 5     TOTAL 38113        100.00

GRÁFICA 1.1: Frecuencia Absoluta local

par(mar = c(5, 4, 4, 2) + 0.1)
barplot(TDF_aniosFinal$ni[TDF_aniosFinal$ANIOS != "TOTAL"],
        names.arg = TDF_aniosFinal$ANIOS[TDF_aniosFinal$ANIOS != "TOTAL"],
        main = "GRÁFICO 1.1: DISTRIBUCION DE AÑOS DE FABRICACION",
        xlab = "AÑOS AGRUPADOS", 
        ylab = "CANTIDAD", 
        col = "skyblue",
        las = 1,
        cex.names = 0.8)

GRÁFICA 1.2: Frecuencia Absoluta globlaL

par(mar = c(5, 4, 4, 2) + 0.1)
barplot(TDF_aniosFinal$ni[TDF_aniosFinal$ANIOS != "TOTAL"],
        names.arg = TDF_aniosFinal$ANIOS[TDF_aniosFinal$ANIOS != "TOTAL"],
        main = "GRÁFICO 1.2: DISTRIBUCION DE AÑOS DE FABRICACION",
        xlab = "AÑOS AGRUPADOS", 
        ylab = "CANTIDAD", 
        col = "darkorange",
        las = 1,
        ylim = c(0, sum(TDF_aniosFinal$ni)),
        cex.names = 0.8)

GRÁFICA 1.3: Frecuencia Relativa local

par(mar = c(5, 4, 4, 2) + 0.1)
barplot(TDF_aniosFinal$hi_porcentaje[TDF_aniosFinal$ANIOS != "TOTAL"],
        names.arg = TDF_aniosFinal$ANIOS[TDF_aniosFinal$ANIOS != "TOTAL"],
        main = "GRÁFICO 1.3: DISTRIBUCIÓN POR AÑOS (%)",
        xlab = "AÑO", 
        ylab = "PORCENTAJE", 
        col = "mediumseagreen",
        las = 1,
        cex.names = 0.8)

GRÁFICA 1.4: Frecuencia Relativa global

par(mar = c(5, 4, 4, 2) + 0.1)
barplot(TDF_aniosFinal$hi_porcentaje[TDF_aniosFinal$ANIOS != "TOTAL"],
        names.arg = TDF_aniosFinal$ANIOS[TDF_aniosFinal$ANIOS != "TOTAL"],
        main = "GRÁFICO 1.4: DISTRIBUCIÓN POR AÑOS (%)",
        xlab = "AÑO", 
        ylab = "PORCENTAJE", 
        col = "orchid",
        ylim = c(0, 100),
        las = 1,
        cex.names = 0.8)

GRÁFICA 1.5: Diagrama Circular

par(mar = c(0, 0, 0, 4), xpd = TRUE)
etiquetas_anios <- paste0(
  TDF_aniosFinal$hi_porcentaje[TDF_aniosFinal$ANIOS != "TOTAL"], "%"
)
colores_anios <- rainbow(length(etiquetas_anios))  # Colores para cada año

pie(TDF_aniosFinal$hi_porcentaje[TDF_aniosFinal$ANIOS != "TOTAL"],
    main = "GRÁFICO 1.5: DISTRIBUCIÓN POR AÑOS (CIRCULAR)",
    radius = 0.5,
    col = colores_anios,
    labels = etiquetas_anios,
    cex = 0.6)

legend("bottomright",
       legend = TDF_aniosFinal$ANIOS[TDF_aniosFinal$ANIOS != "TOTAL"],
       title = "AÑOS",
       fill = colores_anios,
       cex = 0.6)

Indicadores estadísticos

# MODA
frecuencia_max_anios <- max(TDF_anios)
moda_anios <- names(TDF_anios)[TDF_anios == frecuencia_max_anios]
print(paste("MODA(S) (AÑOS AGRUPADOS):", paste(moda_anios, collapse = ", ")))
## [1] "MODA(S) (AÑOS AGRUPADOS): 2001-2010"
# MEDIANA
anio_v_ORD <- sort(anio_v)
posMe <- (length(anio_v) + 1) / 2
mediana_anios <- anio_v_ORD[ceiling(posMe)]  # Usamos ceiling por si no es número entero exacto
print(paste("MEDIANA (AÑOS AGRUPADOS):", mediana_anios))
## [1] "MEDIANA (AÑOS AGRUPADOS): 2001"

Variable: Transmisión

# Convertir columna a carácter
transmision_v <- as.character(datos$Transmission)

# Agrupar los valores que COMIENZAN con los términos indicados
transmision_grupo <- ifelse(grepl("^2-Wheel Drive", transmision_v, ignore.case = TRUE), "2-Wheel Drive",
                            ifelse(grepl("^4-Wheel Drive|^4-Wheel or All-Wheel Drive", transmision_v, ignore.case = TRUE), "4-Wheel or All-Wheel Drive",
                                   ifelse(grepl("^All-Wheel Drive", transmision_v, ignore.case = TRUE), "All-Wheel Drive",
                                          ifelse(grepl("^Auto$", transmision_v, ignore.case = TRUE), "Auto",  # exacto "Auto"
                                                 ifelse(grepl("^Automatic", transmision_v, ignore.case = TRUE), "Automatic",
                                                        ifelse(grepl("^Front-Wheel Drive", transmision_v, ignore.case = TRUE), "Front-Wheel Drive",
                                                               ifelse(grepl("^Manual", transmision_v, ignore.case = TRUE), "Manual",
                                                                      ifelse(grepl("^Rear-Wheel Drive", transmision_v, ignore.case = TRUE), "Rear-Wheel Drive", "OTROS"))))))))

# Quitar NA y vacíos
transmision_grupo <- transmision_grupo[!is.na(transmision_grupo) & transmision_grupo != ""]

# Ordenar como factor
transmision_grupo <- factor(transmision_grupo, levels = c("2-Wheel Drive", "4-Wheel or All-Wheel Drive", 
                                                          "All-Wheel Drive", "Auto", "Automatic", 
                                                          "Front-Wheel Drive", "Manual", 
                                                          "Rear-Wheel Drive", "OTROS"))


# Crear tabla de frecuencia
TDF_transmision <- table(transmision_grupo)
Tabla_transmision <- as.data.frame(TDF_transmision)
names(Tabla_transmision) <- c("TIPO_TRANSMISION", "ni")
Tabla_transmision$hi_porcentaje <- (Tabla_transmision$ni / sum(Tabla_transmision$ni)) * 100

# Agregar total
TDF_transmisionFinal <- rbind(
  Tabla_transmision,
  data.frame(TIPO_TRANSMISION = "TOTAL",
             ni = sum(Tabla_transmision$ni),
             hi_porcentaje = 100)
)

# Redondear valores
TDF_transmisionFinal$ni <- round(TDF_transmisionFinal$ni, 2)
TDF_transmisionFinal$hi_porcentaje <- round(TDF_transmisionFinal$hi_porcentaje, 2)

# Filtrar datos sin la fila "TOTAL" para gráficos
TDF_transmisionFinal_limpio <- subset(TDF_transmisionFinal, 
                                      TIPO_TRANSMISION != "TOTAL" & TIPO_TRANSMISION != "" & !is.na(TIPO_TRANSMISION))

Tabla

print(TDF_transmisionFinal)
##              TIPO_TRANSMISION    ni hi_porcentaje
## 1               2-Wheel Drive   138          0.36
## 2  4-Wheel or All-Wheel Drive   103          0.27
## 3             All-Wheel Drive    30          0.08
## 4                        Auto     0          0.00
## 5                   Automatic 24035         63.06
## 6           Front-Wheel Drive     3          0.01
## 7                      Manual 12376         32.47
## 8            Rear-Wheel Drive   485          1.27
## 9                       OTROS   943          2.47
## 10                      TOTAL 38113        100.00

Gráfica 2.1: Frecuencia Absoluta local

par(mar = c(5, 4, 4, 2) + 0.1)
barplot(TDF_transmisionFinal_limpio$ni,
        names.arg = TDF_transmisionFinal_limpio$TIPO_TRANSMISION,
        main = "GRÁFICO 2.1: DISTRIBUCION DE TIPOS DE TRANSMISIÓN",
        xlab = "TIPO DE TRANSMISIÓN", 
        ylab = "CANTIDAD", 
        col = "lightblue",
        las = 2,
        cex.names = 0.7)

Gráfica 2.2: Frecuencia Absoluta global

par(mar = c(5, 4, 4, 2) + 0.1)
barplot(TDF_transmisionFinal_limpio$ni,
        names.arg = TDF_transmisionFinal_limpio$TIPO_TRANSMISION,
        main = "GRÁFICO 2.2: DISTRIBUCION DE TIPOS DE TRANSMISIÓN",
        xlab = "TIPO DE TRANSMISIÓN", 
        ylab = "CANTIDAD", 
        col = "darkblue",
        ylim = c(0, sum(TDF_transmisionFinal_limpio$ni)),
        las = 2,
        cex.names = 0.7)

Gráfica 2.3: Frecuencia Relativa local

par(mar = c(5, 4, 4, 2) + 0.1)
barplot(TDF_transmisionFinal_limpio$hi_porcentaje,
        names.arg = TDF_transmisionFinal_limpio$TIPO_TRANSMISION,
        main = "GRÁFICO 2.3: DISTRIBUCION DE TIPOS DE TRANSMISIÓN PORCENTAJE (%)",
        xlab = "TIPO DE TRANSMISIÓN", 
        ylab = "PORCENTAJE", 
        col = "lightgreen",
        las = 2,
        cex.names = 0.7)

Gráfica 2.4: Frecuencia Relativa global

par(mar = c(5, 4, 4, 2) + 0.1)
barplot(TDF_transmisionFinal_limpio$hi_porcentaje,
        names.arg = TDF_transmisionFinal_limpio$TIPO_TRANSMISION,
        main = "GRÁFICO 2.4: DISTRIBUCION DE TIPOS DE TRANSMISIÓN PORCENTAJE (%)",
        xlab = "TIPO DE TRANSMISIÓN", 
        ylab = "PORCENTAJE", 
        col = "tomato",
        ylim = c(0, 100),
        las = 2,
        cex.names = 0.7)

Gráfica 2.5: Diagrama Circular

par(mar = c(0, 0, 0, 4), xpd = TRUE)
etiquetas_transmision <- paste0(
  TDF_transmisionFinal_limpio$hi_porcentaje, "%"
)
colores_transmision <- rainbow(length(etiquetas_transmision))

pie(TDF_transmisionFinal_limpio$hi_porcentaje,
    main = "GRÁFICO 2.5: DISTRIBUCIÓN DE TIPOS DE TRANSMISIÓN (CIRCULAR)",
    radius = 0.5,
    col = colores_transmision,
    labels = etiquetas_transmision,
    cex = 0.6)

legend("bottomright",
       legend = TDF_transmisionFinal_limpio$TIPO_TRANSMISION,
       title = "TIPO DE TRANSMISIÓN",
       fill = colores_transmision,
       cex = 0.6)

Indicadores estadísticos

# MODA
TDF_transmision <- table(transmision_grupo)
frecuencia_max_transmision <- max(TDF_transmision)
moda_transmision <- names(TDF_transmision)[TDF_transmision == frecuencia_max_transmision]
print(paste("MODA(S) (TIPO DE TRANSMISIÓN):", paste(moda_transmision, collapse = ", ")))
## [1] "MODA(S) (TIPO DE TRANSMISIÓN): Automatic"
# MEDIANA
transmision_ordenada <- sort(as.character(transmision_grupo))
pos_mediana <- (length(transmision_ordenada) + 1) / 2
mediana_transmision <- transmision_ordenada[ceiling(pos_mediana)]  # Ceiling en caso de longitud impar
print(paste("MEDIANA (TIPO DE TRANSMISIÓN):", mediana_transmision))
## [1] "MEDIANA (TIPO DE TRANSMISIÓN): Automatic"