Upload
hoangquynh
View
243
Download
1
Embed Size (px)
Citation preview
Sensory Analysis,R tools to analyze Preference liking in function of
descriptive measures.
Dhafer Maloucheessai.academia.edu/DhaferMalouche
Center of Political Studies,Institute of Social Research
University of Michigan,
Ecole Supérieure de la Statistiqueet de l’Analyse de l’Information,
University of Carthage.
12/09/2016
1/50
What’s Sensory Analysis
Sensory analysis is a scientific discipline used to analyze reactions tostimuli perceived through the senses: sight, smell, touch, taste, andsound.It is considered one of the most important tools for the food industry,given that it can be applied in several ways.
2/50
Aim of Sensory Analysis
Gives a comparison between several (food) products
Explains preference consumer in terms of the characteristics ofthe (food) products.
Provides the optimal (food) product: liked by a majority ofconsumers.
3/50
Data used for Sensory Analysis
Analytic Data.X1 Physico-chemical data: measure some physico-chemical param-
eters of the product of the Study.
X2 Sensory data: rates of the products by a panel of experts accord-ing to a list of sensory a�ributes.
X3 Genetic data.
. . . .
Hedonic data: Y, rates provided by a sample of consumers.
X1,X2, . . . are analytic data.
Y is a perceptual data.
⇒ Y ≈ f (X1, X2 . . .)
4/50
Example: A study on the Tunisian Olive Oil.
78 million olive oil trees (more than300 million in Spain and 750 millionworldwide).
6,950 square miles (10% of theTunisian Area).
1750 Oil mills
4th producer and 2nd exporter...
5/50
6/50
Analyzing Olive Oils
Three data sets
Sensory Data: Panel of Experts
Physico-chemical Data: Several laboratories, Italy, Tunisia,
Hedonic Data: A survey in a grocery shop with 252 con-sumers who accepted to taste the samples of OO.
7/50
R tools for Sensory Analysis
FactoMineR, SensoMineR, FactoshinyAuthors: Francois Husson, Julie Josse, Sebastien Le, JeremyMazetDescription: performs PCA, MFA, Clustering and Panel perfor-mance, External and internal Mapping . . .Webpage: http://factominer.free.fr/ andhttp://sensominer.free.fr/
sensR
Authors: Per B Brockho, Rune Haubo Bojesen.Description: Statistical tests of sensory discrimation and simi-larity data, Power and sample size computations for discrimina-tion and similarity. tests
SensMap
Authors: Ibtihel Rebhi, Dhafer Malouche.Description: Everything about sensory analysis, External andInternal mapping, Shiny UI.
8/50
Sensory data
9/50
Sensory data
10/50
Sensory data
9 experts rate 21 olive oil products:
7 cultivars:Coratina (Italy),Arbequina (Spain cultivar),Chemchali (South West),Chemlali (South East),Chetoui (North),Leguim (Center)Zalmati (South).
3 extraction systems: 3P, 2P, SP.
9 a�ributes: Fruity, Bi�er, Pungent, Fusty, Musty, Winey,Muddy, Metallic, Rancid: rates from 0 to 10.
11/50
Problem: How can we measure the quality of the collected data?
12/50
Assessing performance of a Panel
The statistical assessment of the performance based on threeimportant qualities:
discrimination: their ability to di�erentiate the productsrepeatable: consistently.agreement: consensually.
To assess this performance we use an ANOVA: the dependentsvariables are the sensory a�ributes. The factors:
productspanelistssessions
13/50
Assessing performance of a Panel: ANOVA Model
Let (Yiks) be the rate of the sensory a�ribute
of the ith productby the kth panelistat the sth session
ANOVA:
Yiks = µ + αi + βk + γs + [αβ]ik + [αγ ]is + [βγ ]ks + ϵiks
where∀ (i, k, s), ϵiks ∼ N(0,σ 2)∀ (i, k, s), (i′, k ′, s′), cov(ϵiks, ϵi′k′s′) = 0
14/50
Assessing performance of a Panel: ANOVA Model
αi is the Product e�ect: it measures the ability of discrimination(if significant).
[αβ]ik is the interaction Product-Panelist. It indicates whetherthere’s a consensus among the panelists: agreement.
[αγ ]is is the interaction Product-Session. It indicates whetherthe product is perceived similarly from one session to another:repeatability.
15/50
In practice with R
> m1<-aov(Fruity~product+panelist+session+product:panelist+product:session+jury:session,data=panel_session_data)
> summary(m1)Df Sum Sq Mean Sq F value Pr(>F)
product 20 886.3 44.31 57.652 < 2e-16 ***panelist 7 16.6 2.38 3.092 0.00372 **session 2 1.3 0.63 0.824 0.43958product:panelist 140 232.5 1.66 2.160 2.66e-08 ***product:session 40 30.8 0.77 1.001 0.47435panelist:session 14 9.6 0.68 0.889 0.57178Residuals 280 215.2 0.77---Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1
16/50
In practice with R
With p-value < 2e − 16: (Product e�ect is significant, discrimina-tion performance. [expected]
With p-value = 2.66e − 08, Product-Panelist is significant, noconsensus. [not expected]
With p-value = 0.47, Product-Session is not significant, repeata-bility. [expected]
17/50
In practice with R, Interaction Product-Session
arbequina(2p)
arbequina(3p)
arbequina(sp)
chem(2p)
chem(3p)chem(sp)
chemchali(2p)
chemchali(3p)
chemchali(sp)
chetoui(2p)
chetoui(3p)
chetoui(sp)
coratina(2p)
coratina(3p)
coratina(sp)
leguim(2p)
leguim(3p)
leguim(sp)
zalmati(2p)zalmati(3p)
zalmati(sp)
1
2
3
4
5
6
2 3 4 5 6Mean on the whole session
Mea
npe
rse
ssio
n
Session123
18/50
In practice with R, package SensoMineR
>formul<-"~product+jury+session+product:jury++ product:session+jury:session"> res.panel<-panelperf(panel_session_data,firstvar = 4,+ lastvar = 9,+ formul = formul)> round(res.panel$p.value,5)
prod jury session p:j p:sFruity 0 0.00372 0.41845 0.00000 0.47435Bitter 0 0.00700 0.31445 0.00000 0.83263Pungent 0 0.00140 0.28710 0.00000 0.05473Fusty 0 0.00008 0.00013 0.00000 0.05873Moddy 0 0.87224 0.00015 0.36808 0.38847Rancid 0 0.10302 0.00001 0.00831 0.06140
j:sFruity 0.57178Bitter 0.78702Pungent 0.78932Fusty 0.09085Moddy 0.06745Rancid 0.60208
19/50
Physico-chemical data.
20/50
Physico-chemical data.
7 cultivars + 2 Extraction systems (sp and 3p).
3 repetitions for each measure
68 Physico-chemical parameters : Acidity, K232,...
21/50
Physico-chemical data, Assessing repeatability
Let (Yir ) be the measure of a given Physico-chemical parame-ter.
of the ith product
by the rth repitation
ANOVA:Yir = µ + αi + βr + ϵir
where∀ (i, r), ϵir ∼ N(0,σ 2)∀ (i, r), (i′, r ′), cov(ϵir , ϵi′r′) = 0
22/50
In practice with R,
> m1<-aov(Acidity~product+repitation,data=phch)
> summary(m1)
Df Sum Sq Mean Sq F value Pr(>F)
product 13 4.300 0.3308 45.950 1.44e-14 ***repitation 2 0.007 0.0037 0.512 0.605
Residuals 26 0.187 0.0072
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
With p-value = 1.44e − 14, Product has a significant e�ect,discrimination.
With p-value = 0.605, Repetation has not a significant e�ect,repeatability.
23/50
Repeatability, Multivariate approach.
Perform a Principal Component Analysis on the PHCH-data.
Dimension reduction method.
Summarize the most information contained in the data with asmall number of artificial variables (principal components).
Information = Total variance of the data.
24/50
Repeatability, Multivariate approach.
1 Let X be the physico-chemical data: P × N numeric where P isthe number of the products and N is the number of variables:X 1, . . . ,XN the columns of X.
2 Scale and center X and consider the correlation matrix
V = X′X/P .
3 Search for F a P × 1 matrix (or vector) such that
F =N∑j=1
αjX j such that Var(F ) is maximal
Solution: F = F 1 = Xu1 where u1 is the eigen vector of Vassociated to the greater eigen value λ1 of V .C1 is called the first principal component of X.
25/50
Repeatability, Multivariate approach.
4 We search also a second F such that
F =N∑j=1
αjX j such that Var(F ) is maximal and Cor(F , F 1) = 0
Solution: F = F 2 = Xu2 where u2 is the eigen vector of Vassociated to the 2nd greater eigen value λ2 of V .
5 And F 1, F 2, . . . , F k , ..
6 Draw a sca�er-plot [F k , F k′] with repetition as a supplementaryvariable.
26/50
In practice with R, Scree-plot
> library(FactoMineR)
> library(factoextra)
> res.pca<-PCA(X,scale.unit = T,
+ ncp = 5,quali.sup = 66:67,graph = F)
> fviz_screeplot(res.pca, ncp = 10) + theme_classic()
27/50
In practice with R, Scree-plot
0
10
20
1 2 3 4 5 6 7 8 9 10Dimensions
Perc
enta
geof
expl
aine
dva
rian
ces Scree plot
28/50
In practice with R, Scree-plot
0
10
20
1 2 3 4 5 6 7 8 9 10Dimensions
Perc
enta
geof
expl
aine
dva
rian
ces Scree plot
29/50
In practice with R, Product-map
> library(ggplot2)> library(scales)> library(grid)> library(plyr)> library(gridExtra)> find_hull <- function(X) X[chull(X$PC1, X$PC2), ]>dt=cbind.data.frame(res.pca$ind$coord[,1:2],+ X$product,X$repetition)> colnames(dt)=c("PC1","PC2","Product","Repetition")> dt2=cbind.data.frame(res.pca$quali.sup$coord[1:14,1:2],+ rownames(res.pca$quali.sup$coord[1:14,]))> colnames(dt2)=c("PC1","PC2","Product")> dt2$Product=gsub("_","",dt2$Product)> hulls <- ddply(dt, "Product", find_hull)
30/50
In practice with R, Product-map
> p<-ggplot(data = dt,aes(x=PC1,y=PC2,col=Product,fill=Product))++ geom_hline(yintercept = 0,alpha=.4)++ geom_vline(xintercept = 0,alpha=.4)++ geom_polygon(data=hulls, alpha=.2)++ geom_point() ++ geom_text(data=dt2,aes(x=PC1,y=PC2,label=Product),col="black")++ xlab(paste("Axis 1 (",round(res.pca$eig[1,2],1),"%)",sep=""))++ ylab(paste("Axis 2 (",round(res.pca$eig[2,2],1),"%)",sep=""))> p<-p+theme_classic()+theme(legend.position = "none")> p
31/50
In practice with R, Product-map
arbeq(3p)
arbeq(sp)
chemch(3p)
chemch(sp)
chemle(3p)
chemle(sp)
chetou(3p)
chetou(sp)
corati(3p)
corati(sp)
leguim(3p)leguim(sp)
zalmat(3p)zalmat(sp)
-2.5
0.0
2.5
5.0
7.5
-4 0 4Axis 1 (28.1%)
Axi
s2
(12.
5%)
32/50
In practice with R, V-test
> res.pca$quali.sup$v.test[15:17,]
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
repetition 1 0.014 -0.034 -0.034 0.265 -0.292
repetition 2 0.039 -0.071 0.019 -0.152 0.107
repitation 3 -0.053 0.105 0.015 -0.113 0.185
33/50
In practice with R, Product-map
-2.5
0.0
2.5
5.0
7.5
-4 0 4Axis 1 (28.1%)
Axi
s2
(12.
5%)
34/50
In practice with R, Product-map
C 16:1C 18:1
C 18:2
LLL
LnLO
LnLP
LLO
LnOO
PLL
LOO
LOPPLP
OOO
POP
POOAOL
SOOb carotène
polyphenols
Hexanal
1-Pentanol
Cis-3-hexenyl acetateCis-3-hexenol
Trans-2-hexenol
H- TyrDFLA
Ac-PinLA
-1.0
-0.5
0.0
0.5
1.0
-1.0 -0.5 0.0 0.5 1.0Axis 1 (28.1%)
Axi
s2
(12.
5%)
Circle of Correlations
35/50
External Mapping
36/50
External Mapping
Y ≈ f (X1,X2, . . .)It Aims to
give an estimation of the probability of liking of a product.derive a multidimensional representation of products basedon their sensory profile or a set of other external data such asinstrumental measures of color, texture or flavor.
37/50
External Mapping, Danzart 1998, 2009.
1 Combine all measures X1, X2, . . . into one analytic data matrixX with dimensions P × N (products × a�ributes).
2 Perform a dimension reduction method on X: for example aPrincipal Component Analysis and let F 1 and F 2 be the firsttwo components.
3 Let Y be the hedonic matrix with dimensions P × C (products ×consumers) and with columns Y 1, . . . ,YC .
4 For all c = 1, . . . ,C, perform a regression Model
Y c = fc(F 1, F 2) + ϵc
Let fc be an estimation of fc .
38/50
External Mapping, Danzart 1998, 2009.
5 Consider a grid in the plan ∆(C1,C2):
G ={(f 1l1, f 2
l2), (l1, l2) ∈ {1, . . . , L}2
}6 For each c and (l1, l2), predict
y(c, l1, l2) = fc(f 1l1, f 2
l2)
7 Computer the percentage of the consumers that have predic-tions higher than the average of their given scores.
ϕ(l1, l2) =1C
C∑c=1
1{y(c, l1, l2) ≥ y(c)}
where
y(c) = 1P
P∑p=1
yp(c)
39/50
In practice with R
1 Prepare data
> x.phch=aggregate(phch[,1:65],
+ by = list(phch$product),mean)
> y.hedo=aggregate(hedonic[,1:255],
+ by=list(hedonic$product),mean)
> z.panel=aggregate(panel[,3:8],
+ by=list(panel$products),mean)
2 Merge PHCH-data and Senso-data into one data matrix.
> i=match(x.phch$Group.1,z.panel$Group.1)
> X=cbind.data.frame(x.phch[,-1],z.panel[i,-1])
3 Hedonic-matrix
> Y=y.hedo[,-c(1:4)]
40/50
In practice with R (cont.)
4 Perform PCA on the Senso-data from SensMap package.
> library(SensMap)
> map=map.with.pca(X = X)
5 Extract the first two components of the PCA and create thegrid.
> maps=cbind.data.frame(map$F1,map$F2)
> colnames(maps)=c("F1","F2")
> nbpoints=100
> discretspace=discrete.function(nbpoints = nbpoints,
+ map = maps)
41/50
In practice with R (cont.)
6 Perform quadratic regression (default) and estimate the predic-tions among all the points in the grid and for each consumer
Y c = ac + b1cF
1 + b1cF
2 + b11c (F 1)2 + b22
c (F 2)2 + b12c F 1F 1 + ϵc
> x.lm=predict.scores.lm(Y = Y,discretspace = discretspace,
+ map = maps)
7 Compute percentage of Liking.
> p.lm=100*rowMeans(x.lm$preference)
42/50
In practice with R (cont.)
8 Draw the External-map.
> image.plot(graph.surfconso,col=terrain.colors(60))
> contour(x=graph.surfconso$x,y=graph.surfconso$y,
+ z=graph.surfconso$z,add=T,
+ levels=seq(from=0,to=100,by=5))
> text(x=maps$F1,y=maps$F2,labels=y.hedo$Group.1,pos=3)
> points(x=maps$F1,y=maps$F2,pch=20)
43/50
In practice with R (cont.)
-6 -4 -2 0 2 4 6
-20
24
68
35
40
45
50
55
60
65
35
40
4040
40
45
45
45
45
4545
45
4545
45
45 4545
5050
5050
50
50
55
55
55
55
55
55
55
55
60
60
60
60
arbeq(3p)
arbeq(sp)
chemch3p
chemch(sp)
chemle(3p)
chemle(sp)
chetou(3p)
chetou(sp)
corati(3p)corati(sp)
leguim(3p)
leguim(sp)
zalmat(3p)
zalmat(sp)
44/50
In practice with R (cont.)
45/50
Denoising the External map
Perform now a Local Polynomial Regression Fi�ing of thepercentages in terms of the (x, y)−coordinates
> dlow=cbind.data.frame(discretspace,p.lm)
> colnames(dlow)=c("x","y","z")
> m.loess<-loess(z~x+y,span=.5,data=dlow,degree=2)
> p.loess=m.loess$fitted
> graph.surfconso.loess=as.image(Z=p.loess,x=discretspace,
+ nrow=nbpoints,
+ ncol=nbpoints)
46/50
Denoising the External map (cont.)
-6 -4 -2 0 2 4 6
-20
24
68
40
45
50
55
60
65
70
42
45
48
48
51
51
54
54
57
57
60
60
63
66
69
arbeq(3p)
arbeq(sp)
chemch(3p)
chemch(sp)
chemle(3p)
chemle(sp)
chetoui(3p)
chetoui(sp)
corati(3p)corati(sp)
leguim(3p)
leguim(sp)
zalmat(3p)zalmat(sp)
47/50
Denoising the External map (cont.)
48/50
Some references
Analysis Sensory Data with R, Sebastien Lê, Thiery Worsh,CRC Press (2014)
McEwan, J. A. (1996). Preference Mapping for product opti-mization. In Multivariate analysis of data in sensory science(Naes, T., and Risvik, E. eds.). New York: Elsevier (pp. 71-102).
Danzart, M. (1998). �adratic model in preference mapping.4th Sensometric meeting, Copenhagen, Denmark, August 1998.
timesens.com by INRA Dijon, France (2016)
49/50
Thank you
50/50