Clean
rm(list = ls()); graphics.off()
Set R packages path and load packages
.libPaths("C:/Rpack")
library(SensoMineR)
## Loading required package: FactoMineR
library(openxlsx)
Import data
sorting <- read.table("perfumes_sorting.csv", header = T, sep = "\t", row.names = 1)
rownames(sorting)[4] <- "Cinema"
run MCA using fast func.
res.fast <- fast(sorting, sep.words = ";", graph = F)
## Number of different words : 177
output
res.fast$ind #ind
## $coord
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Angel 0.3954526 1.51711384 0.17272573 -0.865171134 -0.17817147
## Aromatics Elixir 1.4836495 -0.22323266 -0.21394964 -0.550797798 -0.21623535
## Chanel N5 1.3843400 -0.91069536 1.38741051 0.726426471 -0.01251468
## Cinema -0.4476777 0.41025707 0.07157530 0.477447918 0.13971909
## Coco Mademoiselle -0.6544809 0.26099364 0.02100746 0.807177380 0.47342100
## J'adore EP -0.7067233 -0.62592308 0.17146765 -0.694520407 -0.22017087
## J'adore ET -0.6981726 -0.63594939 0.19467690 -0.508679141 -0.44473781
## L'instant -0.4703961 0.13728699 -0.58883593 1.155987278 -1.08229473
## Lolita Lempicka -0.1601233 1.39968241 0.69870786 -0.008770055 0.09073011
## Pleasures -0.7233064 -0.85839579 -0.11835628 -0.611310184 -0.34486916
## Pure Poison -0.4326015 -0.41923774 -0.15796241 -0.051669157 1.55758168
## Shalimar 1.0300395 -0.05189995 -1.63846714 0.123878830 0.23754219
##
## $contrib
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Angel 1.9775586 32.38669203 0.529741538 15.188224203 0.729840419
## Aromatics Elixir 27.8357675 0.70120616 0.812780154 6.155840356 1.074991424
## Chanel N5 24.2340558 11.67015147 34.179045024 10.707455546 0.003600734
## Cinema 2.5343789 2.36833104 0.090965413 4.625460377 0.448810598
## Coco Mademoiselle 5.4166960 0.95849555 0.007836047 13.220288193 5.152839843
## J'adore EP 6.3159595 5.51279930 0.522052720 9.787527146 1.114477574
## J'adore ET 6.1640490 5.69082662 0.672943814 5.250380954 4.547363919
## L'instant 2.7981301 0.26520946 6.156566491 27.114966151 26.930392848
## Lolita Lempicka 0.3242273 27.56698439 8.668445595 0.001560657 0.189258120
## Pleasures 6.6158420 10.36824883 0.248732542 7.582740946 2.734389192
## Pure Poison 2.3665548 2.47315298 0.443054842 0.054170858 55.776757133
## Shalimar 13.4167804 0.03790217 47.667835820 0.311384612 1.297278196
##
## $cos2
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Angel 0.03205503 0.471784506 0.006115351 1.534304e-01 6.507042e-03
## Aromatics Elixir 0.44709871 0.010121765 0.009297451 6.162049e-02 9.497169e-03
## Chanel N5 0.33947148 0.146914269 0.340979049 9.347620e-02 2.774324e-05
## Cinema 0.05695159 0.047828528 0.001455798 6.477790e-02 5.547360e-03
## Coco Mademoiselle 0.11956998 0.019014639 0.000123190 1.818721e-01 6.256382e-02
## J'adore EP 0.16291727 0.127793938 0.009590312 1.573397e-01 1.581205e-02
## J'adore ET 0.16736990 0.138866319 0.013013097 8.884637e-02 6.791410e-02
## L'instant 0.05259447 0.004479933 0.082414068 3.176281e-01 2.784222e-01
## Lolita Lempicka 0.00565339 0.431975304 0.107644333 1.695917e-05 1.815109e-03
## Pleasures 0.14036814 0.197696565 0.003758431 1.002645e-01 3.191043e-02
## Pure Poison 0.04678044 0.043934839 0.006237288 6.673460e-04 6.064430e-01
## Shalimar 0.21205491 0.000538362 0.536557206 3.067148e-03 1.127774e-02
res.fast$textual #words to describe each product
## $Angel
## Intern % glob % Intern freq Glob freq p.value v.test
## a 8.974359 2.883625 7 28 0.009815829 2.582251
## vanilla 8.974359 3.398558 7 33 0.025461332 2.234331
## too 5.128205 1.441813 4 14 0.041487594 2.038624
## heady 5.128205 1.441813 4 14 0.041487594 2.038624
## fresh 0.000000 4.531411 0 44 0.045993545 -1.995453
## light 0.000000 4.634398 0 45 0.042123538 -2.032298
## flower 1.282051 7.826982 1 76 0.021657883 -2.296315
##
## $`Aromatics Elixir`
## Intern % glob % Intern freq Glob freq p.value v.test
## strong 18.604651 6.2821833 16 61 5.664307e-05 4.026376
## ammonia 3.488372 0.6179197 3 6 2.206385e-02 2.289267
## unpleasant 4.651163 1.1328527 4 11 2.336585e-02 2.267399
## spicy 8.139535 3.0895984 7 30 2.523958e-02 2.237716
## sweet 1.162791 6.3851699 1 62 3.901869e-02 -2.063990
## light 0.000000 4.6343975 0 45 2.780694e-02 -2.199999
## fruit 0.000000 5.9732235 0 58 7.763543e-03 -2.662184
##
## $`Chanel N5`
## Intern % glob % Intern freq Glob freq p.value v.test
## soap 10.588235 2.162719 9 21 0.0000489968 4.060361
## sweet 1.176471 6.385170 1 62 0.0414884843 -2.038615
## fruit 0.000000 5.973223 0 58 0.0083073661 -2.639315
##
## $Cinema
## Intern % glob % Intern freq Glob freq p.value v.test
## vanilla 8.235294 3.398558 7 33 0.04002347 2.053507
##
## $`Coco Mademoiselle`
## Intern % glob % Intern freq Glob freq p.value v.test
## fresh 10.25641 4.531411 8 44 0.03958366 2.058067
##
## $`J'adore EP`
## Intern % glob % Intern freq Glob freq p.value v.test
## flower 16.470588 7.826982 14 76 0.008152803 2.645675
## fruit 11.764706 5.973223 10 58 0.048088718 1.976584
## strong 1.176471 6.282183 1 61 0.045077719 -2.003929
##
## $`J'adore ET`
## NULL
##
## $`L'instant`
## NULL
##
## $`Lolita Lempicka`
## Intern % glob % Intern freq Glob freq p.value v.test
## sweet 18.390805 6.385170 16 62 8.273369e-05 3.936340
## vanilla 8.045977 3.398558 7 33 4.509772e-02 2.003742
## flower 1.149425 7.826982 1 76 1.077786e-02 -2.549820
##
## $Pleasures
## Intern % glob % Intern freq Glob freq p.value v.test
## flower 21.62162 7.826982 16 76 0.0001490918 3.792577
## fresh 10.81081 4.531411 8 44 0.0292271363 2.180409
##
## $`Pure Poison`
## Intern % glob % Intern freq Glob freq p.value v.test
## man 4.166667 0.9268795 3 9 0.04749318 1.981875
##
## $Shalimar
## Intern % glob % Intern freq Glob freq p.value v.test
## old 7.228916 1.853759 6 18 0.005243368 2.791689
## flower 1.204819 7.826982 1 76 0.014728970 -2.438975
##
## attr(,"class")
## [1] "descfreq" "list"
res.fast$descriptor
## Occurrence
## flower 76
## sweet 62
## strong 61
## fruit 58
## soft 53
## light 45
## fresh 44
## pleasant 34
## vanilla 33
## spicy 30
## a 28
## d 25
## c 24
## pepper 22
## soap 21
## old 18
## prickly 17
## very 16
## aggressive 15
## too 14
## musk 14
## heady 14
## b 14
## acid 13
## woman 12
## lily-of-the-valley 12
## f 12
## e 12
## wood 11
## unpleasant 11
## perfume 11
## discreet 11
## hot 10
## odor 9
## man 9
## classical 9
## baby 9
## ancient 9
## cream 8
## character 8
## weak 7
## slightly-acid 7
## shower-gel 7
## young 6
## skin 6
## heavy 6
## enveloping 6
## bitter 6
## ammonia 6
## vegetable 5
## toilet 5
## spring 5
## sickly 5
## sharp 5
## rose 5
## refined 5
## neutral 5
## captivating 5
## attractive 5
## voluptuousness 4
## smoothness 4
## reassuring 4
## present 4
## powder 4
## plant 4
## oriental 4
## ivy 4
## h 4
## green 4
## g 4
## eucalyptus 4
## disturbing 4
## coconut 4
## cloud 4
## bark 4
## average 4
## attic 4
## alcohol 4
## white 3
## weak-odor 3
## vivid 3
## violet 3
## tonic 3
## toilets 3
## synthetic 3
## subtle 3
## soothing 3
## solvent 3
## sirup 3
## ordinary 3
## mysterious 3
## muffled 3
## moisturizing 3
## milky 3
## milk 3
## liquorice 3
## intense 3
## honeysuckle 3
## harmony 3
## elegant 3
## deodorant 3
## cake 3
## bathroom 3
## animal 3
## amber 3
## winter 2
## wind 2
## violent 2
## verdure 2
## teenage 2
## sun 2
## summer 2
## savoury 2
## old-woman 2
## old-fashioned 2
## odors 2
## no 2
## natural 2
## mature 2
## marble 2
## malted 2
## make-up-remover 2
## long-lasting 2
## litchi 2
## liked 2
## likeable 2
## lemon 2
## incense 2
## flowerb 2
## citrus 2
## cinnamon 2
## chestnut 2
## chemical 2
## autumn 2
## ambiance 2
## aerial 2
## active 2
## a-bit-strong 2
## womans 1
## wake-up 1
## tonality 1
## toilet-water 1
## strongc 1
## strongb 1
## stronga 1
## repulsive 1
## raw 1
## people 1
## peach 1
## out-of-date 1
## orange 1
## not-enough-fresh 1
## n5 1
## moisturizinge 1
## mint 1
## low-quality 1
## lily 1
## lavender 1
## imperceptible 1
## high-quality 1
## hands 1
## grass 1
## grand-mother 1
## gingerbread 1
## flowera 1
## eau-cologne 1
## eau 1
## dull 1
## complex 1
## cologne 1
## chocolate 1
## childish 1
## chanel 1
## breed 1
## balanced 1
## astringent 1
## artificial 1
MCA plots
individual plot
res.fast$acm
## **Results of the Multiple Correspondence Analysis (MCA)**
## The analysis was performed on 12 individuals, described by 60 variables
## *The results are available in the following objects:
##
## name description
## 1 "$eig" "eigenvalues"
## 2 "$var" "results for the variables"
## 3 "$var$coord" "coord. of the categories"
## 4 "$var$cos2" "cos2 for the categories"
## 5 "$var$contrib" "contributions of the categories"
## 6 "$var$v.test" "v-test for the categories"
## 7 "$ind" "results for the individuals"
## 8 "$ind$coord" "coord. for the individuals"
## 9 "$ind$cos2" "cos2 for the individuals"
## 10 "$ind$contrib" "contributions of the individuals"
## 11 "$call" "intermediate results"
## 12 "$call$marge.col" "weights of columns"
## 13 "$call$marge.li" "weights of rows"
plot.MCA(res.fast$acm, choix = "ind", invisible = "ind",
cex = 0.7, col.var = "grey30")

plot for subjects S2, S24
S2.select <- grep("S2_", rownames(res.fast$acm$var$coord))
S24.select <- grep("S24_", rownames(res.fast$acm$var$coord))
plot.MCA(res.fast$acm, choix="ind",
selectMod=c(S2.select,S24.select),
col.ind="grey60", col.var="grey30", cex=0.7)
## Warning: ggrepel: 11 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

ind plot with coloured groups according to S30
plot.MCA(res.fast$acm, choix="ind", invisible="var", habillage="S30")

description of each dimension
res.dimdesc <- dimdesc(res.fast$acm)
relation ber. partition of each subject and all subjects
plot.fast(res.fast, choix="group")
