Import libraries

library(arules)
library(arulesViz)

Create a list of transactions

transactions_list <- list(
  c("paper", "pens", "pencils"),
  c("pens", "ruler"),
  c("pencils", "cards", "ruler"),
  c("paper", "cards"),
  c("pens", "pencils", "cards"),
  c("paper", "ruler", "calculator"),
  c("paper", "pens", "cards", "folder"),
  c("pencils", "ruler", "folder"),
  c("paper", "pencils", "cards", "ruler"),
  c("pens", "cards")
)

Convert to a transaction class object

trans <- as(transactions_list, "transactions")

Transactions

trans
## transactions in sparse format with
##  10 transactions (rows) and
##  7 items (columns)

Use apriori algorithm

rules <- apriori(trans, parameter = list(supp = 0.25, target = "frequent itemsets"))

Obtain rules and metrics

inspect(rules)
##     items            support count
## [1] {pens}           0.5     5    
## [2] {ruler}          0.5     5    
## [3] {pencils}        0.5     5    
## [4] {paper}          0.5     5    
## [5] {cards}          0.6     6    
## [6] {cards, pens}    0.3     3    
## [7] {pencils, ruler} 0.3     3    
## [8] {cards, pencils} 0.3     3    
## [9] {cards, paper}   0.3     3

To obtain the confidence and lift we should re use the aprior algorithm with more information

rules <- apriori(trans, parameter = list(supp = 0.25, conf = 0.5, target = "frequent itemsets"))

Obtain metrics and create dataframe

confidence_values <- interestMeasure(rules, measure = "allConfidence", trans)
lift_values <- interestMeasure(rules, measure = "lift", trans)

# Create a data frame with the metrics
metrics_df <- data.frame(
  Rule = labels(rules),
  Support = quality(rules)$support,
  Confidence = confidence_values,
  Lift = lift_values
)

Display the metrics

metrics_df
##              Rule Support Confidence Lift
## 1          {pens}     0.5        0.5  1.0
## 2         {ruler}     0.5        0.5  1.0
## 3       {pencils}     0.5        0.5  1.0
## 4         {paper}     0.5        0.5  1.0
## 5         {cards}     0.6        0.6  1.0
## 6    {cards,pens}     0.3        0.5  1.0
## 7 {pencils,ruler}     0.3        0.6  1.2
## 8 {cards,pencils}     0.3        0.5  1.0
## 9   {cards,paper}     0.3        0.5  1.0