Association rule (연관성 분석)

setwd("D:\\YC\\Research\\Association rule analysis")
data = read.table(file="survey.csv",sep=",",header=T);
attach(data);
names(data)
##   [1] "설문대상자"              "ques_1.1.1.1."          
##   [3] "ques_1.1.1.2."           "ques_1.1.1.3."          
##   [5] "ques_1.1.1.4."           "ques_1.1.1.5."          
##   [7] "ques_1.1.1.6."           "ques_1.1.1.7."          
##   [9] "ques_1.1.1.8."           "ques_1.1.1.9."          
##  [11] "ques_1.1.1.10."          "ques_1.1.1.11."         
##  [13] "ques_1.1.1.12."          "ques_1.1.1.13."         
##  [15] "ques_1.1.1.14."          "ques_1.1.1.15."         
##  [17] "ques_1.1.1.16."          "ques_1.1.1.17."         
##  [19] "ques_1.1.1.18."          "ques_1.1.1.19."         
##  [21] "ques_1.1.1.20."          "ques_1.1.1.21."         
##  [23] "ques_1.1.1.22."          "ques_1.1.1.23."         
##  [25] "ques_1.1.1.24."          "ques_1.1.1.25."         
##  [27] "ques_1.1.1.26."          "ques_1.1.1.27."         
##  [29] "ques_1.1.1.28."          "ques_1.1.1.29."         
##  [31] "ques_1.1.1.30."          "ques_1.1.1.31."         
##  [33] "ques_1.1.1.32."          "ques_1.1.1.33."         
##  [35] "ques_1.1.1.34."          "ques_1.1.1.35."         
##  [37] "ques_1.1.1.36."          "ques_1.1.1.37."         
##  [39] "ques_1.1.2.1."           "ques_1.1.2.2."          
##  [41] "ques_1.1.2.3."           "ques_1.1.2.4."          
##  [43] "ques_1.1.2.5."           "ques_1.1.2.6."          
##  [45] "ques_1.1.2.7."           "ques_1.1.2.8."          
##  [47] "ques_1.1.2.9."           "ques_1.1.2.10."         
##  [49] "ques_1.1.2.11."          "ques_1.1.2.12."         
##  [51] "ques_1.1.2.13."          "ques_1.1.2.14."         
##  [53] "ques_1.1.2.15."          "ques_1.1.2.16."         
##  [55] "ques_1.1.2.17."          "ques_1.1.2.18."         
##  [57] "ques_1.1.2.19."          "ques_1.1.2.20."         
##  [59] "ques_1.1.2.21."          "ques_1.1.2.22."         
##  [61] "ques_1.1.2.23."          "ques_1.1.2.24."         
##  [63] "ques_1.1.2.25."          "ques_1.1.2.26."         
##  [65] "ques_1.1.2.27."          "ques_1.1.2.28."         
##  [67] "ques_1.1.2.29."          "ques_1.1.2.30."         
##  [69] "ques_1.1.2.31."          "ques_1.1.2.32."         
##  [71] "ques_1.1.2.33."          "ques_1.1.2.34."         
##  [73] "ques_1.1.2.35."          "ques_1.1.2.36."         
##  [75] "ques_1.1.2.37."          "ques_1.2.1.1."          
##  [77] "ques_1.2.1.2."           "ques_1.2.1.3."          
##  [79] "ques_1.2.1.4."           "ques_1.2.1.5."          
##  [81] "ques_1.2.1.6."           "ques_1.2.1.7."          
##  [83] "ques_1.2.1.8."           "ques_1.2.1.9."          
##  [85] "ques_1.2.1.10."          "ques_1.2.1.11."         
##  [87] "ques_1.2.1.12."          "ques_1.2.1.13."         
##  [89] "ques_1.2.1.14."          "ques_1.2.1.15."         
##  [91] "ques_1.2.1.16."          "ques_1.2.1.17."         
##  [93] "ques_1.2.1.18."          "ques_1.2.1.19."         
##  [95] "ques_1.2.1.20."          "ques_1.2.1.21."         
##  [97] "ques_1.2.1.22."          "ques_1.2.1.23."         
##  [99] "ques_1.2.1.24."          "ques_1.2.1.25."         
## [101] "ques_1.2.1.26."          "ques_1.2.1.27."         
## [103] "ques_1.2.1.28."          "ques_1.2.1.29."         
## [105] "ques_1.2.1.30."          "ques_1.2.1.31."         
## [107] "ques_1.2.1.32."          "ques_1.2.1.33."         
## [109] "ques_1.2.1.34."          "ques_1.2.1.35."         
## [111] "ques_1.2.1.36."          "ques_1.2.1.37."         
## [113] "ques_1.2.2.1."           "ques_1.2.2.2."          
## [115] "ques_1.2.2.3."           "ques_1.2.2.4."          
## [117] "ques_1.2.2.5."           "ques_1.2.2.6."          
## [119] "ques_1.2.2.7."           "ques_1.2.2.8."          
## [121] "ques_1.2.2.9."           "ques_1.2.2.10."         
## [123] "ques_1.2.2.11."          "ques_1.2.2.12."         
## [125] "ques_1.2.2.13."          "ques_1.2.2.14."         
## [127] "ques_1.2.2.15."          "ques_1.2.2.16."         
## [129] "ques_1.2.2.17."          "ques_1.2.2.18."         
## [131] "ques_1.2.2.19."          "ques_1.2.2.20."         
## [133] "ques_1.2.2.21."          "ques_1.2.2.22."         
## [135] "ques_1.2.2.23."          "ques_1.2.2.24."         
## [137] "ques_1.2.2.25."          "ques_1.2.2.26."         
## [139] "ques_1.2.2.27."          "ques_1.2.2.28."         
## [141] "ques_1.2.2.29."          "ques_1.2.2.30."         
## [143] "ques_1.2.2.31."          "ques_1.2.2.32."         
## [145] "ques_1.2.2.33."          "ques_1.2.2.34."         
## [147] "ques_1.2.2.35."          "ques_1.2.2.36."         
## [149] "ques_1.2.2.37."          "ques_2.1"               
## [151] "ques_2.1.1.서술."        "ques_2.2"               
## [153] "ques_2.3"                "ques_2.3.1"             
## [155] "ques_2.3.2"              "ques_2.4"               
## [157] "ques_2.4.1"              "ques_2.4.2"             
## [159] "ques_2.5"                "ques_2.5.1"             
## [161] "ques_2.5.2"              "ques_2.5.기타..서술."   
## [163] "ques_2.6"                "ques_2.6.기타..서술."   
## [165] "ques_2.7"                "ques_2.7.1"             
## [167] "ques_2.7.2"              "ques_2.7.기타.서술."    
## [169] "ques_2.8"                "ques_2.8.1"             
## [171] "ques_2.8.1.1"            "ques_2.8.2"             
## [173] "ques_2.8.2.1"            "ques_2.8.2.2"           
## [175] "ques_2.8.2.기타..서술."  "ques_2.8.3"             
## [177] "ques_2.9"                "ques_2.9.기타..서술."   
## [179] "ques_2.10"               "ques_2.10.1"            
## [181] "ques_2.10.2"             "ques_2.11"              
## [183] "ques_2.11.1"             "ques_2.11.1.기타..서술."
## [185] "ques_2.11.2"             "ques_2.11.2.기타..서술."
## [187] "ques_3.1"                "ques_3.1.1"             
## [189] "ques_3.1.2"              "ques_3.1.기타..서술."   
## [191] "ques_3.2"                "ques_3.2.1"             
## [193] "ques_3.2.2"              "ques_3.2.3"             
## [195] "ques_3.2.3.기타..서술."  "ques_3.2.4"             
## [197] "ques_3.2.4.기타..서술."  "ques_3.2.5"             
## [199] "ques_3.3"                "ques_3.4"               
## [201] "ques_3.4.1"              "ques_3.5"               
## [203] "ques_3.6"                "ques_3.6.1"             
## [205] "ques_3.6.2"              "ques_3.7"               
## [207] "ques_3.7.1"              "ques_3.7.2"             
## [209] "ques_3.8"                "ques_3.8.1"             
## [211] "ques_3.8.1.기타..서술."  "ques_3.8.2"             
## [213] "ques_3.8.2.기타..서술."  "ques_4.1"               
## [215] "ques_4.2"                "ques_4.3"               
## [217] "ques_4.3.1"              "ques_4.4"               
## [219] "ques_4.4.1"              "ques_4.5"               
## [221] "ques_4.5.1"              "ques_4.5.1.기타..서술." 
## [223] "ques_4.5.2"              "ques_4.5.2.기타..서술." 
## [225] "ques_4.6"                "ques_4.6.1.서술."       
## [227] "ques_4.6.2.서술."        "ques_4.7"               
## [229] "ques_4.7.1"              "ques_4.7.1.1"           
## [231] "ques_4.7.1.2"            "ques_4.8"               
## [233] "ques_4.8.1"              "ques_4.9"               
## [235] "ques_4.9.1"              "ques_4.10"              
## [237] "ques_4.10.1"             "ques_4.11"              
## [239] "ques_4.11.1.서술."       "ques_4.11.2.서술."      
## [241] "ques_4.12"               "ques_4.12.1"            
## [243] "ques_4.12.2"             "ques_4.12.2.1"          
## [245] "ques_4.12.2.2"           "ques_4.13"              
## [247] "ques_4.13.1"             "ques_4.13.1.기타..서술."
## [249] "ques_4.13.2"             "ques_4.13.2.기타..서술."
## [251] "ques_4.14"               "ques_4.15"              
## [253] "ques_4.15.1"             "ques_4.15.1.기타..서술."
## [255] "ques_4.16"               "ques_4.16.1"            
## [257] "ques_4.16.1.기타..서술." "ques_4.17"              
## [259] "ques_4.18"               "ques_4.18.1"            
## [261] "ques_4.19"               "ques_4.19.1"            
## [263] "ques_4.19.2"             "ques_4.20"              
## [265] "ques_4.20.기타..서술."   "ques_5.1"               
## [267] "ques_5.2"                "ques_5.3"               
## [269] "ques_5.4"                "ques_5.5"               
## [271] "ques_5.5.그외..서술."    "ques_5.6"               
## [273] "ques_5.7"                "ques_5.7.1.서술."       
## [275] "ques_5.7.2.서술."
#install.packages("arules");
library(arules)
## Loading required package: Matrix
## 
## Attaching package: 'arules'
## 
## The following objects are masked from 'package:base':
## 
##     %in%, write
trans = data.frame(as.factor(ques_4.8),as.factor(ques_4.9))
test = as(trans, "transactions")
image(test)

rules = apriori(test, parameter= list(supp=0.5, conf=0.5, target="rules"))
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport support minlen maxlen
##         0.5    0.1    1 none FALSE            TRUE     0.5      1     10
##  target   ext
##   rules FALSE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## apriori - find association rules with the apriori algorithm
## version 4.21 (2004.05.09)        (c) 1996-2004   Christian Borgelt
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[9 item(s), 38 transaction(s)] done [0.00s].
## sorting and recoding items ... [0 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 done [0.00s].
## writing ... [0 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].
summary(rules)
## set of 0 rules
trans = data.frame(as.factor(ques_4.14),as.factor(ques_3.4))
test = as(trans, "transactions")
image(test)

rules = apriori(test, parameter= list(conf=0.5))
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport support minlen maxlen
##         0.5    0.1    1 none FALSE            TRUE     0.1      1     10
##  target   ext
##   rules FALSE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## apriori - find association rules with the apriori algorithm
## version 4.21 (2004.05.09)        (c) 1996-2004   Christian Borgelt
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[7 item(s), 38 transaction(s)] done [0.00s].
## sorting and recoding items ... [5 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 done [0.00s].
## writing ... [4 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].
summary(rules)
## set of 4 rules
## 
## rule length distribution (lhs + rhs):sizes
## 2 
## 4 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       2       2       2       2       2       2 
## 
## summary of quality measures:
##     support         confidence          lift      
##  Min.   :0.1316   Min.   :0.5000   Min.   :1.188  
##  1st Qu.:0.1513   1st Qu.:0.5000   1st Qu.:1.393  
##  Median :0.1842   Median :0.5000   Median :1.462  
##  Mean   :0.1776   Mean   :0.5288   Mean   :1.393  
##  3rd Qu.:0.2105   3rd Qu.:0.5288   3rd Qu.:1.462  
##  Max.   :0.2105   Max.   :0.6154   Max.   :1.462  
## 
## mining info:
##  data ntransactions support confidence
##  test            38     0.1        0.5
inspect(rules)
##   lhs                         rhs                        support confidence     lift
## 1 {as.factor.ques_4.14.=5} => {as.factor.ques_3.4.=4}  0.1315789  0.5000000 1.461538
## 2 {as.factor.ques_3.4.=3}  => {as.factor.ques_4.14.=4} 0.1578947  0.5000000 1.187500
## 3 {as.factor.ques_3.4.=4}  => {as.factor.ques_4.14.=4} 0.2105263  0.6153846 1.461538
## 4 {as.factor.ques_4.14.=4} => {as.factor.ques_3.4.=4}  0.2105263  0.5000000 1.461538