Tipos de Variables en R

Vectores:

vector1 <- c(1,2,3,4,5,6,7,8,9)
vector1
## [1] 1 2 3 4 5 6 7 8 9

Matrices:

mymatrix <- matrix(data = vector1, ncol=3,byrow = FALSE) #byrow=TRUE lo ordena poniendo los valores a lo largo de las filas, si es FALSE, lo llena a lo largo de las columnas
mymatrix
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

Vamos a ponerle nombre a las columnas de la matris anterior:

colnames(mymatrix) <- c("Columna_A", "Columna_B", "Columna_C")
rownames(mymatrix) <- c("Fila_1", "Fila_2", "Fila_3")
mymatrix
##        Columna_A Columna_B Columna_C
## Fila_1         1         4         7
## Fila_2         2         5         8
## Fila_3         3         6         9

Vamos a importar datos de un archivo CSV

# Importar el archivo CSV
datos_groceries <- read.csv("datos_groceries.csv", header = TRUE, sep = ",", stringsAsFactors = FALSE)

Vamos a importar los datos directamente de Github

library(readr)
datos_groceries2 <- read_csv("https://ricardorpalma.github.io/R-Dataset/datos_groceries.csv")
## Rows: 43367 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): item
## dbl (1): id_compra
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Vamos a crear un vector de datos para el análisis de tickes, estos datos podriamos traerlos de un archivo, ponerlos en la linea de comando de R o traerlos desde la web

datos_crudo <- c(1,1,1,2,2,3,3,"5W40","Filtro Aceite","Filtro Aire","Correa Distr","Bomba de Agua","Filtro Nafta","Limpia Inyectores")
lista_corta <- matrix(datos_crudo,ncol=2, byrow=FALSE) #Esto transforma mis datos crudos en una matriz
dimnames(lista_corta) <- list(salida = c(1,2,3,4,5,6,7) , producto = c("ticket","producto") ) #Este comando le ponen nombre a las filas y columnas
lista_corta
##       producto
## salida ticket producto           
##      1 "1"    "5W40"             
##      2 "1"    "Filtro Aceite"    
##      3 "1"    "Filtro Aire"      
##      4 "2"    "Correa Distr"     
##      5 "2"    "Bomba de Agua"    
##      6 "3"    "Filtro Nafta"     
##      7 "3"    "Limpia Inyectores"

Lo de arriba era una lista larga, vamos a crear datos en forma de lista larta:

datos_m <- c(1,1,1,0,0,0,0, 0,0,0,1,1,0,0, 0,0,0,0,0,1,1)
lista_larga <- matrix(datos_m,nrow=3,byrow=TRUE) #Esto transforma los datos en una matriz
dimnames(lista_larga) <- list(ticket = c(1,2,3) , producto = c("5W40","Filtro Aceite","Filtro Aire","Correa Distr","Bomba de Agua","Filtro Nafta","Limpia Inyectores")) #Esto le ponen nombre a las filas y columnas
lista_larga
##       producto
## ticket 5W40 Filtro Aceite Filtro Aire Correa Distr Bomba de Agua Filtro Nafta
##      1    1             1           1            0             0            0
##      2    0             0           0            1             1            0
##      3    0             0           0            0             0            1
##       producto
## ticket Limpia Inyectores
##      1                 0
##      2                 0
##      3                 1

Vamos a obtener datos especificos de las matrices anteriores

dato1=lista_larga[1,2:5] #Obtengo la fila 1, columnas de las dos al cinco
dato2=lista_larga[1,-c(1,3,5)] #Me trae todas las columnas menos la una, las tres  y la cinco
dato2
##     Filtro Aceite      Correa Distr      Filtro Nafta Limpia Inyectores 
##                 1                 0                 0                 0

Vamos a importar una librería al espacio de trabajo

library(arules)
## Cargando paquete requerido: Matrix
## 
## Adjuntando el paquete: 'arules'
## The following objects are masked from 'package:base':
## 
##     abbreviate, write

El paquete arules de R permite realizar minería de reglas de asociación y análisis de transacciones en bases de datos. Está diseñado para identificar patrones frecuentes entre ítems (como productos comprados juntos) y generar reglas del tipo “si A ocurre, entonces B también”. Es ampliamente utilizado en aplicaciones como análisis de canastas de mercado (market basket analysis), detección de afinidades entre productos y descubrimiento de relaciones en grandes volúmenes de datos categóricos.

transacciones_1  <-apriori(lista_larga)
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.8    0.1    1 none FALSE            TRUE       5     0.1      1
##  maxlen target  ext
##      10  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 0 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[7 item(s), 3 transaction(s)] done [0.00s].
## sorting and recoding items ... [7 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 done [0.00s].
## writing ... [13 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].

La instrucción transacciones_1 <- apriori(lista_larga) ejecuta el algoritmo Apriori sobre el conjunto de datos lista_larga, el cual contiene transacciones o listas de ítems (por ejemplo, productos comprados por cada cliente). El resultado, almacenado en transacciones_1, es un conjunto de reglas de asociación que indican relaciones frecuentes entre los ítems, expresadas en la forma si ocurre A, entonces también ocurre B, junto con medidas estadísticas como soporte, confianza y lift.

reglas_a <- inspect(transacciones_1)
##      lhs                             rhs                 support   confidence
## [1]  {Correa Distr}               => {Bomba de Agua}     0.3333333 1         
## [2]  {Bomba de Agua}              => {Correa Distr}      0.3333333 1         
## [3]  {Filtro Nafta}               => {Limpia Inyectores} 0.3333333 1         
## [4]  {Limpia Inyectores}          => {Filtro Nafta}      0.3333333 1         
## [5]  {Filtro Aceite}              => {Filtro Aire}       0.3333333 1         
## [6]  {Filtro Aire}                => {Filtro Aceite}     0.3333333 1         
## [7]  {Filtro Aceite}              => {5W40}              0.3333333 1         
## [8]  {5W40}                       => {Filtro Aceite}     0.3333333 1         
## [9]  {Filtro Aire}                => {5W40}              0.3333333 1         
## [10] {5W40}                       => {Filtro Aire}       0.3333333 1         
## [11] {Filtro Aceite, Filtro Aire} => {5W40}              0.3333333 1         
## [12] {5W40, Filtro Aceite}        => {Filtro Aire}       0.3333333 1         
## [13] {5W40, Filtro Aire}          => {Filtro Aceite}     0.3333333 1         
##      coverage  lift count
## [1]  0.3333333 3    1    
## [2]  0.3333333 3    1    
## [3]  0.3333333 3    1    
## [4]  0.3333333 3    1    
## [5]  0.3333333 3    1    
## [6]  0.3333333 3    1    
## [7]  0.3333333 3    1    
## [8]  0.3333333 3    1    
## [9]  0.3333333 3    1    
## [10] 0.3333333 3    1    
## [11] 0.3333333 3    1    
## [12] 0.3333333 3    1    
## [13] 0.3333333 3    1
reglas_a
##                               lhs                    rhs   support confidence
## [1]                {Correa Distr} =>     {Bomba de Agua} 0.3333333          1
## [2]               {Bomba de Agua} =>      {Correa Distr} 0.3333333          1
## [3]                {Filtro Nafta} => {Limpia Inyectores} 0.3333333          1
## [4]           {Limpia Inyectores} =>      {Filtro Nafta} 0.3333333          1
## [5]               {Filtro Aceite} =>       {Filtro Aire} 0.3333333          1
## [6]                 {Filtro Aire} =>     {Filtro Aceite} 0.3333333          1
## [7]               {Filtro Aceite} =>              {5W40} 0.3333333          1
## [8]                        {5W40} =>     {Filtro Aceite} 0.3333333          1
## [9]                 {Filtro Aire} =>              {5W40} 0.3333333          1
## [10]                       {5W40} =>       {Filtro Aire} 0.3333333          1
## [11] {Filtro Aceite, Filtro Aire} =>              {5W40} 0.3333333          1
## [12]        {5W40, Filtro Aceite} =>       {Filtro Aire} 0.3333333          1
## [13]          {5W40, Filtro Aire} =>     {Filtro Aceite} 0.3333333          1
##       coverage lift count
## [1]  0.3333333    3     1
## [2]  0.3333333    3     1
## [3]  0.3333333    3     1
## [4]  0.3333333    3     1
## [5]  0.3333333    3     1
## [6]  0.3333333    3     1
## [7]  0.3333333    3     1
## [8]  0.3333333    3     1
## [9]  0.3333333    3     1
## [10] 0.3333333    3     1
## [11] 0.3333333    3     1
## [12] 0.3333333    3     1
## [13] 0.3333333    3     1

La instrucción reglas_a <- inspect(transacciones_1) permite visualizar el contenido del objeto generado por el algoritmo Apriori. La función inspect() muestra en forma de tabla las reglas de asociación descubiertas, incluyendo los ítems que las componen, su soporte, confianza y medida de lift. Al asignarlo a reglas_a, se guarda esa información en un objeto que puede luego analizarse, filtrarse o exportarse para su interpretación.

Vamos a visualizar estos resultados en un grafico:

library(arulesViz)
plot(transacciones_1, method = "graph")