PLS = partial least squares // moindre carré partiel
jargon
construit: var latente (non observable) ex: la famine
modèle de mesure: lien entre var observé et leur var latente ex:
avez vous fin ? et combien de fois avez vous mangé ? modèle de
structure: relation entre une var latente et d’autre var latente ex: la
famine qui viendra predire le bonheur modele formatif vs reflectif
CB-SEM: covariance-based structural equation (eqution structurelle
basé sur la covariance) CB-PLS
Conditions d'application
les donneés ne respectent pas les hypothèses sous-jacentes aux equations structurelles: données non quanti quanti, resid pas normalisé, données de petite taille
library(seminr)
data=read.csv("/home/nekui-tiefang/Documents/mes codes R/reg pls/rintro-chapter10sat.csv")
summary(data)
## q1 q2 q3 c1 c2
## Min. :1.00 Min. :1.000 Min. :1.000 Min. :1.00 Min. :1.000
## 1st Qu.:3.00 1st Qu.:3.000 1st Qu.:3.000 1st Qu.:3.00 1st Qu.:3.000
## Median :4.00 Median :3.000 Median :4.000 Median :4.00 Median :4.000
## Mean :3.95 Mean :3.535 Mean :3.805 Mean :4.34 Mean :4.185
## 3rd Qu.:5.00 3rd Qu.:4.000 3rd Qu.:4.000 3rd Qu.:5.00 3rd Qu.:5.000
## Max. :7.00 Max. :7.000 Max. :7.000 Max. :7.00 Max. :7.000
## c3 v1 v2 v3 cs1
## Min. :1.000 Min. :1.000 Min. :1.00 Min. :1.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:3.00 1st Qu.:4.000 1st Qu.:3.000
## Median :4.000 Median :5.000 Median :4.00 Median :5.000 Median :4.000
## Mean :4.395 Mean :4.565 Mean :3.87 Mean :4.595 Mean :3.715
## 3rd Qu.:5.000 3rd Qu.:5.000 3rd Qu.:5.00 3rd Qu.:5.000 3rd Qu.:5.000
## Max. :7.000 Max. :7.000 Max. :7.00 Max. :7.000 Max. :7.000
## cs2 cs3 r1 r2 r3
## Min. :1.000 Min. :1.00 Min. :1.00 Min. :1.000 Min. :1.000
## 1st Qu.:2.000 1st Qu.:3.00 1st Qu.:3.00 1st Qu.:3.000 1st Qu.:3.000
## Median :3.000 Median :4.00 Median :4.00 Median :4.000 Median :4.000
## Mean :3.255 Mean :3.59 Mean :3.92 Mean :3.895 Mean :3.695
## 3rd Qu.:4.000 3rd Qu.:4.25 3rd Qu.:5.00 3rd Qu.:5.000 3rd Qu.:5.000
## Max. :7.000 Max. :7.00 Max. :7.00 Max. :7.000 Max. :7.000
description de la bd
C: coût Q: qualite CS: client satisfait R: repeat V:value
qui sont bien evidament les variables latente
TAF: ici on doit prédire la repetion de l’achat d’un consommateur sur la base du coût de la satisfaction de ce client, de la valeur qu’il persoit et la qualité du produit
PLS-SEM
modele de mesure
mm= constructs(
composite("Quality",multi_items("q", 1:3)),
composite("Value",multi_items("v", 1:3)),
composite("Cost",multi_items("c", 1:3)),
composite("Csat",multi_items("cs", 1:3)),
composite("Repeat",multi_items("r", 1:3))
)
modele de structure
ms=relationships(
paths("Cost",c("Value","Repeat")),
paths("Quality",c("Value","Csat")),
paths("Value","Csat"),
paths("Csat","Repeat")
)
semir terminé
estimation du modèle
modelPLS=estimate_pls(data,mm,ms)
## Generating the seminr model
## All 200 observations are valid.
sum=summary(modelPLS)
sum
##
## Results from package seminr (2.3.2)
##
## Path Coefficients:
## Value Repeat Csat
## R^2 0.174 0.212 0.210
## AdjR^2 0.165 0.204 0.202
## Cost -0.270 -0.317 .
## Quality 0.297 . 0.342
## Value . . 0.215
## Csat . 0.289 .
##
## Reliability:
## alpha rhoC AVE rhoA
## Cost 0.737 0.851 0.655 0.744
## Quality 0.685 0.826 0.612 0.695
## Value 0.773 0.868 0.686 0.779
## Csat 0.725 0.844 0.644 0.729
## Repeat 0.695 0.827 0.614 0.720
##
## Alpha, rhoC, and rhoA should exceed 0.7 while AVE should exceed 0.5
plot(modelPLS)
nous voyons la representation graphique d’un model pls entre chaque var observé et sa var latent, il doit y avoir au minimun un lien sup 0.708 pourqu’il soit significatif et s’il est en dessuq de 0.4 il vas falloir le supprimer
nous vayons aussi le r square qui est le pourcentage explique par le modelpls
testons le bootstrap de model notre
calcul de l’échantillon avec remise a partir de l’echantillon gobal
btpls=bootstrap_model(modelPLS, rboot=1000)
## Bootstrapping model using seminr...
## SEMinR Model successfully bootstrapped
sumboot=summary(btpls, alpha=0.05)
representation du modèle complet avec IC et significativité
plot(btpls)
assessment: modele de mesure
sum$loadings**2 #fiabilité de l'indicateur
## Cost Quality Value Csat Repeat
## q1 0.000 0.571 0.000 0.000 0.000
## q2 0.000 0.592 0.000 0.000 0.000
## q3 0.000 0.673 0.000 0.000 0.000
## v1 0.000 0.000 0.672 0.000 0.000
## v2 0.000 0.000 0.676 0.000 0.000
## v3 0.000 0.000 0.709 0.000 0.000
## c1 0.620 0.000 0.000 0.000 0.000
## c2 0.709 0.000 0.000 0.000 0.000
## c3 0.636 0.000 0.000 0.000 0.000
## cs1 0.000 0.000 0.000 0.640 0.000
## cs2 0.000 0.000 0.000 0.632 0.000
## cs3 0.000 0.000 0.000 0.660 0.000
## r1 0.000 0.000 0.000 0.000 0.589
## r2 0.000 0.000 0.000 0.000 0.694
## r3 0.000 0.000 0.000 0.000 0.560
sum$reliability #fiabilité interne
## alpha rhoC AVE rhoA
## Cost 0.737 0.851 0.655 0.744
## Quality 0.685 0.826 0.612 0.695
## Value 0.773 0.868 0.686 0.779
## Csat 0.725 0.844 0.644 0.729
## Repeat 0.695 0.827 0.614 0.720
##
## Alpha, rhoC, and rhoA should exceed 0.7 while AVE should exceed 0.5
sum$validity$fl_criteria #validité discriminante
## Cost Quality Value Csat Repeat
## Cost 0.809 . . . .
## Quality -0.077 0.782 . . .
## Value -0.293 0.318 0.828 . .
## Csat -0.153 0.410 0.324 0.803 .
## Repeat -0.361 0.171 0.162 0.337 0.784
##
## FL Criteria table reports square root of AVE on the diagonal and construct correlations on the lower triangle.
le sum$loadings**2 (nous elevons au carré pour nous epargner des valeurs négative) est utilisé pour savoir en pourcentage si le construit explique la variance de ces valeurs observable et il est significatif si sa valeur est au minimun de 40%( soit 63% dans la realité) lorsqu’il n’atteind pas cette valeur il faudre songer a le supprimer Dans notre exemple, nos pourcentage de significativité est acceptable
pour la commande sum$reliability qui conserne la fiabilité interne comme le resultat l’indique Alpha, rhoC, rhoA doit être sup a 0.7 tandis que AVE (variance moyenne extraite) quant ta lui toute les variable doivent exceder 0.5 sur sa colonne
pour la commande sum\(validity\)fl_critera (validité discriminante) il est question de verifier si chaque construit est differnt d’un autre construit ici la condition de validité est que les valeurs de la première bissectrice doit etre sup a toute les autre valeur de la colonne
MODELE DE MESURE VALIDÉ
assessment: modele de structure
sum$vif_antecedents # probème de colinearité (pas sup a 5 )
## Value :
## Cost Quality
## 1.006 1.006
##
## Repeat :
## Cost Csat
## 1.024 1.024
##
## Csat :
## Quality Value
## 1.112 1.112
sumboot$bootstrapped_paths #qualité des relations (pas de 0 dans IC)
## Original Est. Bootstrap Mean Bootstrap SD T Stat. 2.5% CI
## Cost -> Value -0.270 -0.276 0.070 -3.853 -0.408
## Cost -> Repeat -0.317 -0.322 0.057 -5.584 -0.425
## Quality -> Value 0.297 0.296 0.072 4.105 0.154
## Quality -> Csat 0.342 0.349 0.060 5.672 0.232
## Value -> Csat 0.215 0.214 0.074 2.920 0.065
## Csat -> Repeat 0.289 0.292 0.060 4.838 0.169
## 97.5% CI
## Cost -> Value -0.135
## Cost -> Repeat -0.213
## Quality -> Value 0.430
## Quality -> Csat 0.463
## Value -> Csat 0.356
## Csat -> Repeat 0.402
sumboot$bootstrapped_total_paths #qualité plus détaillé des relations (pas de 0 dans IC)
## Original Est. Bootstrap Mean Bootstrap SD T Stat. 2.5% CI
## Cost -> Value -0.270 -0.276 0.070 -3.853 -0.408
## Cost -> Csat -0.058 -0.059 0.026 -2.230 -0.116
## Cost -> Repeat -0.334 -0.339 0.057 -5.908 -0.440
## Quality -> Value 0.297 0.296 0.072 4.105 0.154
## Quality -> Csat 0.406 0.413 0.054 7.551 0.302
## Quality -> Repeat 0.117 0.121 0.029 4.095 0.064
## Value -> Csat 0.215 0.214 0.074 2.920 0.065
## Value -> Repeat 0.062 0.062 0.023 2.702 0.021
## Csat -> Repeat 0.289 0.292 0.060 4.838 0.169
## 97.5% CI
## Cost -> Value -0.135
## Cost -> Csat -0.014
## Cost -> Repeat -0.235
## Quality -> Value 0.430
## Quality -> Csat 0.510
## Quality -> Repeat 0.178
## Value -> Csat 0.356
## Value -> Repeat 0.111
## Csat -> Repeat 0.402
sum$paths # R-carré
## Value Repeat Csat
## R^2 0.174 0.212 0.210
## AdjR^2 0.165 0.204 0.202
## Cost -0.270 -0.317 .
## Quality 0.297 . 0.342
## Value . . 0.215
## Csat . 0.289 .
le problème de colinearité est resolu les qualités des relations sont bonnes (pas de zero dans IC) par contre le R**2 carré est assez faible !!!
MEDIATIONS
**inspection des effets indirects sur le bootstrap du model
specific_effect_significance(btpls,from = "Quality",through = "Value", to="Csat")
## Original Est. Bootstrap Mean Bootstrap SD T Stat. 2.5% CI
## 0.06377068 0.06362046 0.02746821 2.32161776 0.01690380
## 97.5% CI
## 0.12070363
specific_effect_significance(btpls, from = "Cost",through = c("Value","Csat"),to="Repeat")
## Original Est. Bootstrap Mean Bootstrap SD T Stat. 2.5% CI
## -0.016774775 -0.017166867 0.008171990 -2.052716009 -0.034133932
## 97.5% CI
## -0.004094391
la premiere commande nous montre bien que le coefficient entre quality et csat est significatif (pas de 0 dans IC) ont conclu alors que quality influence csat a travers la mediatrice value pour la seconde scommande nous pouvons aussi dire que le cost influence directement et indirectement (mediations value et csat) repeat avec significacité dans les deux cas
**inspection des effets direct
sumboot$bootstrapped_paths
## Original Est. Bootstrap Mean Bootstrap SD T Stat. 2.5% CI
## Cost -> Value -0.270 -0.276 0.070 -3.853 -0.408
## Cost -> Repeat -0.317 -0.322 0.057 -5.584 -0.425
## Quality -> Value 0.297 0.296 0.072 4.105 0.154
## Quality -> Csat 0.342 0.349 0.060 5.672 0.232
## Value -> Csat 0.215 0.214 0.074 2.920 0.065
## Csat -> Repeat 0.289 0.292 0.060 4.838 0.169
## 97.5% CI
## Cost -> Value -0.135
## Cost -> Repeat -0.213
## Quality -> Value 0.430
## Quality -> Csat 0.463
## Value -> Csat 0.356
## Csat -> Repeat 0.402
conclusion les deux relation de mediation sont complementaire des relation directe dans notre model du fait du même signe des Original Est et IC
valeur predicte du modele
verifions si notre modèle est bon au dela de l’echantillon
predicpls=predict_pls(model = modelPLS, technique = predict_DA, noFolds = 10, reps = 10)
summary(predicpls)
##
## PLS in-sample metrics:
## v1 v2 v3 r1 r2 r3 cs1 cs2 cs3
## RMSE 1.231 1.060 1.070 1.150 1.201 1.323 1.180 1.128 1.217
## MAE 0.983 0.860 0.845 0.917 0.963 1.086 0.943 0.913 0.972
##
## PLS out-of-sample metrics:
## v1 v2 v3 r1 r2 r3 cs1 cs2 cs3
## RMSE 1.253 1.078 1.081 1.163 1.220 1.339 1.209 1.154 1.247
## MAE 1.002 0.874 0.856 0.928 0.981 1.100 0.968 0.935 0.996
##
## LM in-sample metrics:
## v1 v2 v3 r1 r2 r3 cs1 cs2 cs3
## RMSE 1.189 1.019 1.025 1.106 1.166 1.283 1.142 1.058 1.114
## MAE 0.954 0.818 0.825 0.903 0.933 1.060 0.937 0.865 0.898
##
## LM out-of-sample metrics:
## v1 v2 v3 r1 r2 r3 cs1 cs2 cs3
## RMSE 1.297 1.109 1.105 1.185 1.257 1.383 1.251 1.158 1.209
## MAE 1.046 0.893 0.894 0.967 1.016 1.142 1.034 0.949 0.975
**analyser la distribution des erreurs
par(mfrow=c(1,3))
plot(summary(predicpls),indicator="r1")
plot(summary(predicpls),indicator="r2")
plot(summary(predicpls),indicator="r3")
lorsque les distributions des erreurs sont symétrique par rapport a ZERO
on n’utilise le RMSE et dans le cas contraire on n’utilise le MAE.
Lorsque les valeurs du PLS out-of-sample metrics sont inferieur
aux valeurs de LM out-sample metrics nous dirons alors que le
model a une valeur de prediction excellant et moyen
lorsque une var observable ne respecte condition enoncé prédament et si
aucune la valeur observable ne respecte la condition nous concluons
alors que le model n’a aucune valeur de prediction
pour notre cas, notre modele a une tres bonne valeur de prediction
passons aux modeles alternatifs ici on cherche a avoir un R**2 meilleur avec le moin de lien possible
ms2=relationships(
paths("Quality","Value"),
paths("Value","Csat"),
paths("Csat","Repeat"),
paths("Cost",c("Value","Repeat"))
)
modele2
modelPLS2=estimate_pls(data,mm,ms2)
## Generating the seminr model
## All 200 observations are valid.
modelPLS2=estimate_pls(data, mm, ms2)
## Generating the seminr model
## All 200 observations are valid.
summary(modelPLS2)
##
## Results from package seminr (2.3.2)
##
## Path Coefficients:
## Value Csat Repeat
## R^2 0.174 0.105 0.212
## AdjR^2 0.166 0.100 0.204
## Quality 0.298 . .
## Value . 0.324 .
## Csat . . 0.289
## Cost -0.268 . -0.317
##
## Reliability:
## alpha rhoC AVE rhoA
## Quality 0.685 0.826 0.612 0.690
## Value 0.773 0.868 0.686 0.779
## Csat 0.725 0.844 0.644 0.729
## Cost 0.737 0.851 0.655 0.744
## Repeat 0.695 0.827 0.614 0.720
##
## Alpha, rhoC, and rhoA should exceed 0.7 while AVE should exceed 0.5
plot(modelPLS2)
comparons les avec leur BIC même interpretation que l’AIC connus depuis il faut inspecter it_criteria a l’exeption prêt qu’il pénalise les modele qui ont plus de relation
sum1=summary(modelPLS)
sum2=summary(modelPLS2)
sum1$it_criteria
## Value Repeat Csat
## AIC -33.120 -42.629 -42.150
## BIC -23.225 -32.734 -32.255
sum2$it_criteria
## Value Csat Repeat
## AIC -33.245 -19.165 -42.719
## BIC -23.350 -12.568 -32.824
BIC1 -32.734 BIC2 -32.824
le modele 2 est plus interessant que le modele 1 (très très marginale) que se soit pour l’AIC ou pou le BIC
une autre methide d’affichage
it_criteria=c(sum1$it_criteria["BIC","Repeat"],
sum2$it_criteria["BIC","Repeat"])
names(it_criteria)=c("modele 1","modele 2")
it_criteria
## modele 1 modele 2
## -32.73364 -32.82434
NTB: il est a noter que les suppressions des liens obeit a une certaine logique de vie même si le BIC nous fait comprendre qu’il ya amelioration du model