Estaremos trabajando con la base de datos Propietarios. Aplicaremod el modelo Máquinas de vector soporte tambien conocido como Support Vector Machines SVMs para la clasificacion y regresion.

data <- read.csv("Propietarios.csv")
  1. Preparación inicial y limpieza de los datos:

Identificamos valores faltantes:

colSums(is.na(data))
##   Hogar Ingreso  Tamaño   Clase 
##       0       0       0       0

Registros Duplicados:

sum(duplicated(data))
## [1] 0

Errores Tipograficos:

sapply(data, function(x) if(is.character(x) | is.factor(x)) unique(x))
## $Hogar
## NULL
## 
## $Ingreso
## NULL
## 
## $Tamaño
## NULL
## 
## $Clase
## [1] "Propietario"    "No propietario"

No hay datos faltantes, duplicados, ni errores ortograficos.

data$Clase <- as.factor(data$Clase)
  1. Dividir los datos en conjunto de entrenamiento y prueba

Dividimos los datos mediante un muestreo aleatorio y suponemos en 5 grupos:

set.seed(2025)
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
library(e1071)
library(naivebayes)
## naivebayes 1.0.0 loaded
## For more information please visit:
## https://majkamichal.github.io/naivebayes/
folds         <- createFolds(data$Clase, k =4)
entrenamiento <- data[-folds[[4]],]
prueba        <- data[folds[[4]],]

Guardamos las etiquetas de los resultados de las observaciones en dos vectores por separado.

# Etiquetas
entrenamiento_labels <- data$Clase[-folds[[4]]]
prueba_labels<- data$Clase[folds[[4]]]
  1. Aplicar el método de Clasificador de vector soporte y 4. Validar la estabilidad del modelo.
library(e1071)

set.seed(2000)

svm_vc <- tune("svm", Clase ~ Hogar + Ingreso + Tamaño, data = data, 
               kernel = "radial",
               ranges = list(cost = c(0.001, 0.01, 0.1, 1, 5, 10, 20),
                             gamma = c(0.5, 1, 2, 3, 4, 5, 10)))

svm_vc$best.parameters
##   cost gamma
## 7   20   0.5
modelo_svm_rbf <- svm_vc$best.model

Como resultado obtenemos un costo de 20 y gamma de 0.5 lo cual nos indica que de todos los modelos estudiados en estos valores se encuentra el menor error.

  1. Interpretación de los resultados finales

Veamos las predicciones conseguidas con este modelo.

pred <- predict(object = modelo_svm_rbf,data)

# Matriz de confusión
MC <- table(pred, data$Clase)
MC
##                 
## pred             No propietario Propietario
##   No propietario             12           0
##   Propietario                 0          12

Verificamos Tasa de Aciertos

total  <- sum(MC) 
TA    <- sum(MC[1,1]+MC[2,2])/total
TA
## [1] 1

Podemos observar que nuestras predicciones nos indica que el modelo aplicado clasifico nuestros datos con un 0% de errores. Obtuvo 12 propietarios y 12 no propietarios. A su vez obtuvimos una taza de aciertos de un 100% lo que nos beneficia. Debemos tener en cuenta que nuestra base de datos contaba solo con 24 observaciones lo que no es un proporcion extensa, por lo que es facil que el modelo los categorice. Tendriamos que verificar si el modelo funciona de la misma manera con una proporcion de nuevos datos y una mayor cantidad.