Comprendre la Modélisation PLS Expert
1. C’est quoi le “PLS” ?
Imaginez que vous vouliez mesurer la “Confiance” d’un client. Vous ne pouvez pas la mesurer directement avec une règle. Par contre, vous pouvez poser 4 ou 5 questions (items) sur une échelle de 1 à 7.
Le modèle PLS (Partial Least Squares) est une technique statistique qui permet de transformer ces réponses en “scores” (variables latentes) pour tester des modèles complexes (beaucoup de flèches entre les concepts).
A. Fiabilité et Validité (Le modèle de mesure)
On vérifie si vos questions mesurent bien ce qu’elles sont censées mesurer :
- Alpha de Cronbach (> 0.7) : Est-ce que les questions d’un même bloc sont cohérentes entre elles ?
- AVE (> 0.5) : Est-ce que le concept “capte” bien la majorité de l’information contenue dans vos questions ?
B. Analyse de la Colinéarité (VIF)
Le VIF (Variance Inflation Factor) sert à vérifier que vos variables ne font pas “double emploi”. Si deux variables sont trop corrélées, les résultats deviennent instables.
Règle : Le VIF doit idéalement être inférieur à 5.
C. Validité Discriminante (Matrice HTMT)
La Matrice HTMT est le test le plus sévère. Elle prouve que deux concepts sont bien distincts dans l’esprit du répondant.
Règle : Le score HTMT entre deux variables doit être inférieur à 0.85 ou 0.90.
2. Avant de lancer le code : Étape CRUCIALE
Le script Python a besoin de lire vos données. Vous devez impérativement modifier le nom du fichier à la ligne 10 du code selon votre groupe :
| Votre Groupe | Nom du fichier à inscrire dans le code |
|---|---|
| L3 MRC et IHR | BASE-MRC-IHR.xlsx |
| L3 MHR Hébergement | BASE-Hbgt.xlsx |
| L3 MHR Restauration | BASE-MHR-Rest.xlsx |
⚠️ Si le nom ne correspond pas exactement, le programme affichera une erreur “File Not Found”.
3. Le Code Python (Version Expert)
Ce code calcule automatiquement les Coefficients, le Bootstrap, le VIF, l’AVE et la matrice HTMT. Copiez ce script dans Google Colab :
import pandas as pd
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import KFold, cross_val_predict
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
from tqdm import tqdm
# ==========================================
# === 1) CONFIGURATION ET LECTURE DU FICHIER
# ==========================================
FILE_PATH = "/content/BASE-MRC-IHR.xlsx"
SHEET_NAME = "BASE"
df = pd.read_excel(FILE_PATH, sheet_name=SHEET_NAME)
print(f"Fichier chargé : {FILE_PATH} | Taille : {df.shape}")
# Blocs de mesure (Base / Premier ordre)
blocks = {
"Anthropomorphisme": ["ANT1","ANT2","ANT3","ANT4","ANT5"],
"Chaleur": ["CHAL1","CHAL2","CHAL3","CHAL4","CHAL5"],
"Competence": ["COMP1","COMP2","COMP3","COMP4"],
"PresenceSociale": ["PRES1","PRES2","PRES3","PRES4"],
"Plaisir": ["PLAIS1","PLAIS2","PLAIS3","PLAIS4"],
"Facilite": ["FACIL1","FACIL2","FACIL3","FACIL4"],
"Utilite": ["UTIL1","UTIL2","UTIL3","UTIL4","UTIL5","UTIL6","UTIL7"],
"ConfianceCog": ["CONFCO1","CONFCO2","CONFCO3","CONFCO4","CONFCO5"],
"ConfianceAff": ["CONFAFF1","CONFAFF2","CONFAFF3","CONFAFF4","CONFAFF5","CONFAFF6"],
"Attitude": ["ATT1","ATT2","ATT3","ATT4"],
"Intention": ["INT1","INT2","INT3","INT4"],
"RisquePsy": ["RPSY1","RPSY2","RPSY3","RPSY4"],
"RisqueDehum": ["RDEHUM1","RDEHUM2","RDEHUM3","RDEHUM4","RDEHUM5"],
"RisqueEmploi": ["RPEMP1","RPEMP2","RPEMP3","RPEMP4","RPEMP5"]
}
base_relations = [
("Anthropomorphisme", "Competence"), ("Anthropomorphisme", "Chaleur"), ("Anthropomorphisme", "PresenceSociale"),
("PresenceSociale", "Plaisir"), ("Facilite", "Utilite"),
("Competence", "ConfianceCog"), ("Competence", "ConfianceAff"), ("Chaleur", "ConfianceCog"), ("Chaleur", "ConfianceAff"),
("Plaisir", "Attitude"), ("Utilite", "Attitude"), ("Facilite", "Attitude"),
("ConfianceCog", "Attitude"), ("ConfianceAff", "Attitude"), ("RisquePsy", "Attitude"),
("ConfianceCog", "Intention"), ("ConfianceAff", "Intention"), ("Attitude", "Intention"),
("RisquePsy", "Intention"), ("RisqueDehum", "Intention"), ("RisqueEmploi", "Intention")
]
equations = {
"Competence": ["Anthropomorphisme"],
"Chaleur": ["Anthropomorphisme"],
"PresenceSociale": ["Anthropomorphisme"],
"Plaisir": ["PresenceSociale"],
"Utilite": ["Facilite"],
"Confiance": ["Competence", "Chaleur"],
"Attitude": ["Plaisir", "Utilite", "Facilite", "Confiance", "Conf_x_Risque", "RisquePsy"],
"Intention": [
"Confiance", "Attitude", "RisquePsy", "RisqueDehum", "RisqueEmploi",
"Conf_x_RisquePsy", "Conf_x_RisqueDehum", "Conf_x_RisqueEmploi",
"Att_x_RisquePsy", "Att_x_RisqueDehum", "Att_x_RisqueEmploi"
]
}
all_items = [item for sublist in blocks.values() for item in sublist]
df_items = df[all_items].dropna().copy()
# ==========================================
# === 2) L'ALGORITHME ITERATIF PLS-SEM
# ==========================================
def run_pls_sem(data_raw, blks, relations, max_iter=100, tol=1e-5):
X = (data_raw - data_raw.mean()) / data_raw.std()
lv_names = list(blks.keys())
C = pd.DataFrame(0.0, index=lv_names, columns=lv_names)
for s, t in relations:
if s in lv_names and t in lv_names:
C.loc[s, t] = 1.0; C.loc[t, s] = 1.0
Y = pd.DataFrame({lv: X[items[0]] for lv, items in blks.items()})
for _ in range(max_iter):
Y_old = Y.copy()
E = Y.corr() * C
Z = Y.dot(E)
Z = (Z - Z.mean()) / Z.std()
W = {}
for lv, items in blks.items():
w = X[items].apply(lambda col: col.cov(Z[lv]))
w = w / np.linalg.norm(w)
W[lv] = w
Y[lv] = X[items].dot(w)
Y = (Y - Y.mean()) / Y.std()
if np.abs(Y - Y_old).max().max() < tol: break
Loadings = {lv: X[items].apply(lambda col: col.corr(Y[lv])) for lv, items in blks.items()}
return Y, W, Loadings
Y_final, W_final, L_final = run_pls_sem(df_items, blocks, base_relations)
# ==========================================
# === 3) POST-TRAITEMENT : MODÉRATION
# ==========================================
def calculate_inner_variables(Y_df):
Y_df = Y_df.copy()
Y_df["Confiance"] = (Y_df["ConfianceCog"] + Y_df["ConfianceAff"]) / 2
Y_df["Confiance"] = (Y_df["Confiance"] - Y_df["Confiance"].mean()) / Y_df["Confiance"].std()
Y_df["Conf_x_RisquePsy"] = Y_df["Confiance"] * Y_df["RisquePsy"]
Y_df["Conf_x_RisqueDehum"] = Y_df["Confiance"] * Y_df["RisqueDehum"]
Y_df["Conf_x_RisqueEmploi"] = Y_df["Confiance"] * Y_df["RisqueEmploi"]
Y_df["Att_x_RisquePsy"] = Y_df["Attitude"] * Y_df["RisquePsy"]
Y_df["Att_x_RisqueDehum"] = Y_df["Attitude"] * Y_df["RisqueDehum"]
Y_df["Att_x_RisqueEmploi"] = Y_df["Attitude"] * Y_df["RisqueEmploi"]
Y_df["Conf_x_Risque"] = Y_df["Confiance"] * Y_df["RisquePsy"]
for col in ["Conf_x_RisquePsy", "Conf_x_RisqueDehum", "Conf_x_RisqueEmploi",
"Att_x_RisquePsy", "Att_x_RisqueDehum", "Att_x_RisqueEmploi", "Conf_x_Risque"]:
Y_df[col] = (Y_df[col] - Y_df[col].mean()) / Y_df[col].std()
return Y_df
Y_complet = calculate_inner_variables(Y_final)
# ==========================================
# === 4) CALCUL DES CRITÈRES DE QUALITÉ
# ==========================================
qualite_list = []
loadings_df_list = []
for lv, loadings in L_final.items():
for item, l_val in loadings.items():
loadings_df_list.append({"Construit": lv, "Item": item, "Loading_Wold": l_val})
n = len(blocks[lv])
corr_matrix = df_items[blocks[lv]].corr()
avg_corr = corr_matrix.values[np.triu_indices(n, k=1)].mean() if n > 1 else 1.0
alpha = (n * avg_corr) / (1 + (n - 1) * avg_corr) if n > 1 else 1.0
ave = np.mean(loadings**2)
sum_l = np.sum(loadings)
sum_e = np.sum(1 - loadings**2)
cr = (sum_l**2) / (sum_l**2 + sum_e)
qualite_list.append({"Variable": lv, "Cronbach_Alpha": alpha, "Composite_Reliability": cr, "AVE": ave})
df_loadings = pd.DataFrame(loadings_df_list)
df_qualite = pd.DataFrame(qualite_list)
X_std = (df_items - df_items.mean()) / df_items.std()
latent_names = list(blocks.keys())
htmt_df = pd.DataFrame(index=latent_names, columns=latent_names, dtype=float)
for i, b1 in enumerate(latent_names):
for j, b2 in enumerate(latent_names):
if i == j: htmt_df.iloc[i,j] = 1.0
elif i < j:
items1, items2 = blocks[b1], blocks[b2]
hetero_mean = X_std[items1 + items2].corr().loc[items1, items2].values.mean()
mono1 = X_std[items1].corr().values[np.triu_indices(len(items1), k=1)].mean() if len(items1)>1 else 1.0
mono2 = X_std[items2].corr().values[np.triu_indices(len(items2), k=1)].mean() if len(items2)>1 else 1.0
htmt_val = abs(hetero_mean / np.sqrt(max(0.0001, abs(mono1 * mono2))))
htmt_df.iloc[i,j] = htmt_val; htmt_df.iloc[j,i] = htmt_val
fl_matrix = Y_final.corr()
for b in latent_names:
fl_matrix.loc[b, b] = np.sqrt(df_qualite.loc[df_qualite['Variable'] == b, 'AVE'].values[0])
# ==========================================
# === 5) MODELE STRUCTUREL (R², f², VIF)
# ==========================================
results_inner = {y: sm.OLS(Y_complet[y], sm.add_constant(Y_complet[xs])).fit() for y, xs in equations.items()}
structurel_data = []
for dep, preds in equations.items():
X_mat = sm.add_constant(Y_complet[preds])
R2_incl = results_inner[dep].rsquared
for i, p in enumerate(preds, start=1):
vif = variance_inflation_factor(X_mat.values, i)
preds_excl = [x for x in preds if x != p]
R2_excl = 0 if not preds_excl else sm.OLS(Y_complet[dep], sm.add_constant(Y_complet[preds_excl])).fit().rsquared
f2 = (R2_incl - R2_excl) / (1 - R2_incl)
structurel_data.append({
"Variable_Dep": dep, "Predictor": p,
"Coefficient": results_inner[dep].params[p],
"f2": f2, "VIF": vif
})
df_structurel = pd.DataFrame(structurel_data)
# ==========================================
# === 6) BOOTSTRAPPING (t-values)
# ==========================================
def run_bootstrap(data_raw, n_boot=500):
rng = np.random.default_rng(123)
boot_coefs = []
for _ in tqdm(range(n_boot), desc="Bootstrapping PLS"):
sample = data_raw.sample(len(data_raw), replace=True, random_state=rng.integers(0, 100000))
Y_boot, _, _ = run_pls_sem(sample, blocks, base_relations, max_iter=30)
Y_boot_comp = calculate_inner_variables(Y_boot)
row = {}
for dep, preds in equations.items():
res = sm.OLS(Y_boot_comp[dep], sm.add_constant(Y_boot_comp[preds])).fit()
for p in preds: row[(dep, p)] = res.params[p]
boot_coefs.append(row)
return pd.DataFrame(boot_coefs)
boot_df = run_bootstrap(df_items, n_boot=500)
boot_std = boot_df.std()
boot_ci = boot_df.quantile([0.025, 0.975]).T
boot_ci.columns = ["CI_lower", "CI_upper"]
df_structurel["t-value"] = df_structurel.apply(lambda r: abs(r["Coefficient"] / boot_std[(r["Variable_Dep"], r["Predictor"])]), axis=1)
df_structurel["p-value"] = [results_inner[r["Variable_Dep"]].pvalues[r["Predictor"]] for _, r in df_structurel.iterrows()]
df_structurel["Significatif_t"] = df_structurel["t-value"] > 1.96
# ==========================================
# === 7) FIT GLOBAL (SRMR) & MACHINE LEARNING (Q² / PLSpredict)
# ==========================================
# --- SRMR ---
R_obs = df_items.corr()
R_implied = pd.DataFrame(np.eye(len(all_items)), index=all_items, columns=all_items)
lv_corr = Y_complet[latent_names].corr()
item_lv_map = {item: lv for lv, items in blocks.items() for item in items}
item_loading_map = {item: L_final[lv][item] for lv, items in blocks.items() for item in items}
for i in range(len(all_items)):
for j in range(i+1, len(all_items)):
it1, it2 = all_items[i], all_items[j]
lv1, lv2 = item_lv_map[it1], item_lv_map[it2]
r_imp = item_loading_map[it1] * item_loading_map[it2] * lv_corr.loc[lv1, lv2]
R_implied.loc[it1, it2] = r_imp; R_implied.loc[it2, it1] = r_imp
diff = R_obs.values - R_implied.values
mask = np.triu(np.ones(diff.shape), k=1).astype(bool)
srmr_value = np.sqrt(np.mean(diff[mask]**2))
df_srmr = pd.DataFrame([{
"Metric": "SRMR Global", "Valeur": srmr_value,
"Seuil": "< 0.08 (Idéal) / < 0.10 (Acceptable)",
"Statut": "Excellent" if srmr_value < 0.08 else ("Acceptable" if srmr_value < 0.10 else "À revoir")
}])
# --- Q² (10-Fold CV sur modèle structurel) ---
lr = LinearRegression()
q2_list = []
for dep, preds in equations.items():
y_pred_cv = cross_val_predict(lr, Y_complet[preds], Y_complet[dep], cv=10)
q2_list.append({"Variable Endogène": dep, "R2_In_Sample": results_inner[dep].rsquared, "Q2_Predictive_Relevance": r2_score(Y_complet[dep], y_pred_cv)})
df_q2 = pd.DataFrame(q2_list)
# --- PLSpredict (Items endogènes - RMSE LM vs Naive) ---
plspredict_list = []
endog_targets = ["Attitude", "Intention"]
for target_lv in endog_targets:
for item in blocks[target_lv]:
y_item = df_items[item]
# Identification des prédicteurs purs (hors interactions)
exog_lvs = [x.replace("Conf_x_", "").replace("Att_x_", "") for x in equations[target_lv]]
exog_items = list(set([it for ex in exog_lvs if ex in blocks for it in blocks[ex]]))
X_item_lm = df_items[exog_items] if exog_items else df_items.drop(columns=[item])
# Validation Croisée
y_pred_lm = cross_val_predict(lr, X_item_lm, y_item, cv=10)
y_pred_naive = np.full_like(y_item, y_item.mean())
rmse_lm = np.sqrt(mean_squared_error(y_item, y_pred_lm))
rmse_naive = np.sqrt(mean_squared_error(y_item, y_pred_naive))
q2_predict_item = 1 - (mean_squared_error(y_item, y_pred_lm) / mean_squared_error(y_item, y_pred_naive))
plspredict_list.append({
"Cible": target_lv, "Indicateur": item,
"RMSE_Machine_Learning (LM)": rmse_lm, "RMSE_Moyenne_Naive": rmse_naive,
"Q2_predict": q2_predict_item,
"Pouvoir_Predictif": "Fort" if rmse_lm < rmse_naive else "Faible"
})
df_plspredict = pd.DataFrame(plspredict_list)
# ==========================================
# === 8) EXPORT EXCEL EXHAUSTIF
# ==========================================
filename = "Resultats_Expert_Machine_Learning_PLS.xlsx"
with pd.ExcelWriter(filename) as writer:
df_structurel.to_excel(writer, sheet_name='Paths_tvalue_f2_VIF', index=False)
df_srmr.to_excel(writer, sheet_name='Fit_SRMR', index=False)
df_q2.to_excel(writer, sheet_name='Q2_Relevance_Structurelle', index=False)
df_plspredict.to_excel(writer, sheet_name='PLSpredict_Items', index=False)
df_loadings.to_excel(writer, sheet_name='Loadings_Items', index=False)
df_qualite.to_excel(writer, sheet_name='Fiabilite_Mesure', index=False)
fl_matrix.to_excel(writer, sheet_name='Fornell_Larcker')
htmt_df.to_excel(writer, sheet_name='Validite_HTMT')
print(f"Analyse terminée avec succès. Fichier généré : {filename}")
4. Comment lire votre fichier Excel ?
Le fichier Excel "Resultats_Analyse_Expert_PLS.xlsx" contient plusieurs onglets :
- Paths_Coefficients : Pour valider vos hypothèses (regardez "Significatif"). Si c'est True, l'impact existe réellement.
- Fiabilite_Mesure : Vérifiez que l'AVE est > 0.5 et l'Alpha de Cronbach > 0.7.
- Colinearite_VIF : Assurez-vous que les VIF sont inférieurs à 5.
- Validite_HTMT : Les scores doivent être < 0.85 ou 0.90 pour prouver que vos concepts sont distincts.
- Qualite_R2 : Vous dit si votre modèle explique bien le comportement. Plus il est proche de 1, mieux c'est !
L3 MRC et IHR
Rapport d'analyse structurelle (n = 220)
Lecture experte du modèle de mesure et du modèle structurel dans une logique PLS-SEM appliquée au marketing.
1. Qualité du modèle de mesure : fiabilité et validité convergente
Avant d'interpréter les relations entre variables, il faut vérifier que chaque construit est correctement mesuré. Ici, les résultats sont globalement très solides : les alphas de Cronbach, les fiabilités composites et les AVE dépassent les seuils habituellement recommandés en PLS-SEM.
| Variable latente | Alpha de Cronbach (> 0.70) |
AVE (> 0.50) |
Fiabilité composite (> 0.70) |
|---|---|---|---|
| Anthropomorphisme | 0.828 | 0.594 | 0.879 |
| Chaleur | 0.869 | 0.657 | 0.905 |
| Compétence | 0.863 | 0.709 | 0.907 |
| Présence sociale | 0.858 | 0.701 | 0.904 |
| Plaisir | 0.896 | 0.762 | 0.928 |
| Facilité | 0.888 | 0.749 | 0.923 |
| Utilité | 0.883 | 0.593 | 0.910 |
| Confiance cognitive | 0.862 | 0.644 | 0.900 |
| Confiance affective | 0.808 | 0.521 | 0.865 |
| Attitude | 0.924 | 0.815 | 0.946 |
| Intention | 0.916 | 0.799 | 0.941 |
| Risque psychologique | 0.831 | 0.669 | 0.889 |
| Risque de déshumanisation | 0.917 | 0.752 | 0.938 |
| Risque pour l'emploi | 0.840 | 0.611 | 0.887 |
2. Validité discriminante
La validité discriminante permet de vérifier que les construits sont bien distincts les uns des autres. Les résultats de type HTMT ne mettent pas en évidence de dépassement critique.
Conclusion : les concepts du modèle — anthropomorphisme, chaleur, compétence, présence sociale, confiance, attitude, intention et perceptions de risque — apparaissent suffisamment différenciés sur le plan statistique.
3. Analyse des chemins structurels (path coefficients)
Les coefficients ci-dessous permettent d'identifier les leviers et les freins à l'acceptation des robots. La lecture doit se faire à deux niveaux : la significativité statistique et le sens théorique des relations.
| Relation | Effet (β) | p-value | Statut |
|---|---|---|---|
| Formation des perceptions initiales | |||
| Anthropomorphisme ➔ Présence sociale | 0.897 | 0.000 | Validée (effet majeur) |
| Anthropomorphisme ➔ Chaleur | 0.768 | 0.000 | Validée |
| Anthropomorphisme ➔ Compétence | Significatif | < 0.05 | Validée |
| Présence sociale ➔ Plaisir | 0.739 | 0.000 | Validée |
| Facilité ➔ Utilité | Significatif | < 0.05 | Validée |
| Construction de la confiance | |||
| Chaleur ➔ Confiance | Significatif | < 0.05 | Validée |
| Compétence ➔ Confiance | Significatif | < 0.05 | Validée |
| Déterminants de l'attitude | |||
| Plaisir ➔ Attitude | 0.494 | 0.000 | Validée |
| Utilité ➔ Attitude | 0.443 | 0.000 | Validée |
| Facilité ➔ Attitude | -0.005 | 0.929 | Non significatif |
| Confiance ➔ Attitude | Non significatif | > 0.05 | Non significatif |
| Risque psychologique ➔ Attitude | Non significatif | > 0.05 | Non significatif |
| Déterminants de l'intention | |||
| Attitude ➔ Intention | 0.785 | 0.000 | Moteur n°1 |
| Confiance ➔ Intention | 0.140 | 0.008 | Moteur secondaire |
| Risque de déshumanisation ➔ Intention | -0.153 | 0.005 | Frein validé |
| Risque pour l'emploi ➔ Intention | 0.109 | 0.050 | Effet inattendu |
| Risque psychologique ➔ Intention | Non significatif | > 0.05 | Non significatif |
| Effets modérateurs | |||
| Interactions attitude/confiance × risques | Non significatifs | > 0.05 | À interpréter avec prudence |
4. Puissance explicative du modèle
Les coefficients de détermination (R²) montrent le niveau de variance expliqué par le modèle pour chaque variable endogène.
| Variable expliquée | R² | Interprétation |
|---|---|---|
| Compétence | 0.353 | Pouvoir explicatif modéré |
| Chaleur | 0.532 | Pouvoir explicatif élevé |
| Présence sociale | 0.679 | Pouvoir explicatif élevé |
| Plaisir | 0.503 | Pouvoir explicatif élevé |
| Utilité | 0.432 | Pouvoir explicatif modéré à élevé |
| Confiance | 0.770 | Pouvoir explicatif très élevé |
| Attitude | 0.794 | Pouvoir explicatif très élevé |
| Intention | 0.854 | Pouvoir explicatif exceptionnel |
Le modèle explique donc 85,4 % de l'intention d'usage, ce qui est un niveau extrêmement élevé en sciences de gestion et en marketing.
5. Colinéarité : robustesse correcte sur les effets principaux, problème sur les interactions
La colinéarité est évaluée avec les VIF. Pour les prédicteurs principaux de l'attitude et de l'intention, les valeurs restent globalement acceptables.
| Bloc | Exemples de VIF | Lecture |
|---|---|---|
| Déterminants de l'attitude | Plaisir = 3.21 ; Utilité = 2.59 ; Facilité = 3.11 ; Confiance = 3.62 | Acceptable |
| Déterminants de l'intention | Confiance = 2.42 ; Attitude = 2.62 ; Risque déshumanisation = 3.88 ; Risque emploi = 3.36 | Acceptable |
| Variables de modération (interactions) |
Confiance × Risque de déshumanisation : VIF = 15.39 Confiance × Risque emploi : VIF = 11.81 Attitude × Risque de déshumanisation : VIF = 10.99 Attitude × Risque emploi : VIF = 8.03 |
VIF trop élevés |
Conclusion : il n'y a pas de problème majeur pour les effets directs, mais les effets modérateurs sont fragilisés par une colinéarité excessive. Autrement dit, le fait de ne pas trouver de modération significative ne doit pas être interprété trop vite comme une absence réelle d'effet.
6. Interprétation scientifique globale
- L'anthropomorphisme joue un rôle amont central : plus le robot paraît humain, plus il est perçu comme chaleureux, compétent et socialement présent.
- La présence sociale nourrit le plaisir, ce qui confirme que l'expérience vécue avec le robot compte autant que sa performance fonctionnelle.
- L'attitude est le moteur principal de l'intention : c'est la variable la plus puissante du modèle.
- La confiance agit directement sur l'intention, même lorsqu'elle n'alimente pas directement l'attitude.
- Le risque de déshumanisation freine réellement l'acceptation : c'est le principal frein identifié.
- La facilité d'usage ne suffit pas : les individus acceptent surtout le robot quand il est utile et plaisant, pas simplement quand il est simple à utiliser.
Analyse stratégique et implications managériales
Sur la base des résultats, plusieurs enseignements se dégagent pour une organisation en hôtellerie-restauration souhaitant déployer des robots de service.
- Travailler l'expérience, pas seulement la technologie : la facilité d'usage n'explique pas l'attitude. Il faut concevoir des robots perçus comme utiles et agréables à utiliser.
- Humaniser sans caricaturer : l'anthropomorphisme agit fortement sur la présence sociale, la chaleur et la compétence perçue. Le design du robot doit donc soutenir la relation, sans tomber dans l'effet gadget.
- Réduire la peur de déshumanisation : la communication ne doit pas présenter le robot comme un substitut au personnel humain, mais comme un complément de service.
- Ne pas surestimer les tests de modération : les interactions sont non significatives, mais leur interprétation est fragilisée par des VIF très élevés. Cette partie du modèle doit être considérée comme méthodologiquement faible.
- Faire de l'attitude la cible centrale : puisque l'attitude est le moteur principal de l'intention, les leviers marketing doivent viser la perception globale de l'expérience robotisée.
- Construire la confiance par la chaleur et la compétence : les utilisateurs adoptent plus facilement un robot qui paraît à la fois capable et relationnellement acceptable.
L3 MHR - Hébergement
Rapport d'analyse structurelle (n = 220)
Lecture experte du modèle de mesure et du modèle structurel dans une logique PLS-SEM appliquée au marketing de l'hébergement.
1. Qualité du modèle de mesure : fiabilité et validité convergente
Avant d'interpréter les relations entre variables, il faut vérifier que chaque construit est correctement mesuré. Ici, les résultats sont globalement très solides : les alphas de Cronbach, les fiabilités composites et les AVE dépassent les seuils habituellement recommandés en PLS-SEM.
| Variable latente | Alpha de Cronbach (> 0.70) |
AVE (> 0.50) |
Fiabilité composite (> 0.70) |
|---|---|---|---|
| Anthropomorphisme | 0.876 | 0.671 | 0.910 |
| Chaleur | 0.886 | 0.687 | 0.917 |
| Compétence | 0.890 | 0.753 | 0.924 |
| Présence sociale | 0.855 | 0.699 | 0.903 |
| Plaisir | 0.874 | 0.728 | 0.914 |
| Facilité | 0.896 | 0.762 | 0.927 |
| Utilité | 0.883 | 0.592 | 0.910 |
| Confiance cognitive | 0.885 | 0.686 | 0.916 |
| Confiance affective | 0.835 | 0.559 | 0.882 |
| Attitude | 0.927 | 0.821 | 0.948 |
| Intention | 0.909 | 0.786 | 0.936 |
| Risque psychologique | 0.831 | 0.669 | 0.889 |
| Risque de déshumanisation | 0.917 | 0.752 | 0.938 |
| Risque pour l'emploi | 0.840 | 0.611 | 0.887 |
2. Validité discriminante
La validité discriminante permet de vérifier que les construits sont bien distincts les uns des autres. Les résultats HTMT fournis ne font pas apparaître de dépassement critique dans le tableau de synthèse.
Conclusion : les principaux concepts du modèle — anthropomorphisme, chaleur, compétence, présence sociale, plaisir, utilité, confiance, attitude, intention et perceptions de risque — apparaissent suffisamment différenciés sur le plan statistique.
3. Analyse des chemins structurels (path coefficients)
Les coefficients ci-dessous permettent d'identifier les leviers et les freins à l'acceptation. La lecture doit se faire à deux niveaux : la significativité statistique et le sens théorique des relations.
| Relation | Effet (β) | p-value | Statut |
|---|---|---|---|
| Formation des perceptions initiales | |||
| Anthropomorphisme ➔ Compétence | 0.640 | 0.000 | Validée |
| Anthropomorphisme ➔ Chaleur | 0.796 | 0.000 | Validée |
| Anthropomorphisme ➔ Présence sociale | 0.852 | 0.000 | Validée (effet majeur) |
| Présence sociale ➔ Plaisir | 0.757 | 0.000 | Validée |
| Facilité ➔ Utilité | 0.600 | 0.000 | Validée |
| Construction de la confiance | |||
| Compétence ➔ Confiance | 0.448 | 0.000 | Validée |
| Chaleur ➔ Confiance | 0.366 | 0.000 | Validée |
| Déterminants de l'attitude | |||
| Plaisir ➔ Attitude | 0.525 | 0.000 | Moteur principal |
| Utilité ➔ Attitude | 0.410 | 0.000 | Validée |
| Confiance ➔ Attitude | 0.184 | 0.024 | Validée |
| Risque psychologique ➔ Attitude | -0.074 | 0.051 | Effet limite |
| Facilité ➔ Attitude | -0.043 | 0.387 | Non significatif |
| Confiance × Risque psychologique ➔ Attitude | -0.148 | 0.001 | Modération validée |
| Déterminants de l'intention | |||
| Attitude ➔ Intention | 0.591 | 0.000 | Moteur n°1 |
| Confiance ➔ Intention | 0.315 | 0.000 | Moteur n°2 |
| Risque psychologique ➔ Intention | -0.171 | 0.000 | Frein validé |
| Risque de déshumanisation ➔ Intention | -0.009 | 0.875 | Non significatif |
| Risque pour l'emploi ➔ Intention | -0.013 | 0.817 | Non significatif |
| Effets modérateurs sur l'intention | |||
| Confiance × Risque psychologique ➔ Intention | -0.151 | 0.194 | Non significatif |
| Confiance × Risque de déshumanisation ➔ Intention | 0.043 | 0.750 | Non significatif |
| Confiance × Risque emploi ➔ Intention | -0.060 | 0.642 | Non significatif |
| Attitude × Risque psychologique ➔ Intention | -0.020 | 0.811 | Non significatif |
| Attitude × Risque de déshumanisation ➔ Intention | -0.028 | 0.755 | Non significatif |
| Attitude × Risque emploi ➔ Intention | 0.025 | 0.768 | Non significatif |
4. Puissance explicative du modèle
Les coefficients de détermination (R²) montrent le niveau de variance expliqué par le modèle pour chaque variable endogène.
| Variable expliquée | R² | Interprétation |
|---|---|---|
| Compétence | 0.364 | Pouvoir explicatif modéré |
| Chaleur | 0.617 | Pouvoir explicatif élevé |
| Présence sociale | 0.696 | Pouvoir explicatif élevé |
| Plaisir | 0.551 | Pouvoir explicatif élevé |
| Utilité | 0.466 | Pouvoir explicatif modéré à élevé |
| Confiance | 0.796 | Pouvoir explicatif très élevé |
| Attitude | 0.841 | Pouvoir explicatif très élevé |
| Intention | 0.835 | Pouvoir explicatif exceptionnel |
Le modèle explique donc 83,5 % de l'intention, ce qui est un niveau très élevé en sciences de gestion et en marketing.
5. Colinéarité : situation correcte pour les effets directs, fragile pour plusieurs interactions
La colinéarité est évaluée avec les VIF. Pour la plupart des prédicteurs directs, les valeurs restent acceptables, même si la confiance devient un peu élevée dans l'équation de l'attitude.
| Bloc | Exemples de VIF | Lecture |
|---|---|---|
| Déterminants de la confiance | Compétence = 2.41 ; Chaleur = 2.41 | Acceptable |
| Déterminants de l'attitude | Plaisir = 3.15 ; Utilité = 3.59 ; Facilité = 2.83 ; Confiance = 5.32 ; Risque psychologique = 1.43 ; Confiance × Risque = 1.11 | Acceptable mais vigilance sur Confiance |
| Déterminants de l'intention | Confiance = 3.45 ; Attitude = 3.56 ; Risque psychologique = 2.11 ; Risque déshumanisation = 3.14 ; Risque emploi = 3.04 | Acceptable |
| Variables de modération (interactions) |
Confiance × Risque psychologique : VIF = 7.65 Confiance × Risque de déshumanisation : VIF = 12.26 Confiance × Risque emploi : VIF = 9.67 Attitude × Risque psychologique : VIF = 6.01 Attitude × Risque de déshumanisation : VIF = 6.47 Attitude × Risque emploi : VIF = 5.85 |
VIF trop élevés |
Conclusion : les effets directs sont globalement interprétables, mais les tests de modération sur l'intention sont fragilisés par une colinéarité forte à très forte. En revanche, la modération Confiance × Risque psychologique ➔ Attitude ne présente pas ce problème et peut être interprétée avec davantage de confiance.
6. Interprétation scientifique globale
- L'anthropomorphisme joue un rôle amont central : plus le dispositif paraît humain, plus il est perçu comme chaleureux, compétent et socialement présent.
- La présence sociale nourrit fortement le plaisir, ce qui montre que l'expérience vécue reste centrale dans l'évaluation du service.
- La confiance a un double rôle : elle alimente l'attitude et agit aussi directement sur l'intention.
- L'attitude est le principal moteur de l'intention, mais son effet est complété par celui de la confiance.
- Le risque psychologique est le vrai frein du modèle : il réduit l'attitude à la marge et diminue clairement l'intention.
- La déshumanisation et le risque emploi ne jouent pas ici : contrairement à d'autres modèles, ils n'ont pas d'effet direct significatif sur l'intention.
- Une seule modération ressort clairement : plus le risque psychologique augmente, plus le lien entre confiance et attitude se dégrade.
Analyse stratégique et implications managériales
Sur la base des résultats, plusieurs enseignements se dégagent pour des acteurs de l'hébergement souhaitant intégrer des dispositifs technologiques ou robotisés dans l'expérience client.
- Faire de l'attitude la cible centrale : c'est le moteur principal de l'intention. Tout ce qui améliore l'expérience globale du client renforce mécaniquement l'adoption.
- Renforcer simultanément plaisir, utilité et confiance : ce sont les trois leviers les plus robustes dans la formation de l'attitude et de l'intention.
- Réduire le risque psychologique : c'est le principal frein identifié. Il faut rassurer sur le confort d'usage, la perte de contrôle, le stress potentiel et l'aisance relationnelle.
- Humaniser l'expérience sans en faire trop : l'anthropomorphisme améliore nettement les perceptions initiales. Il faut donc travailler la présence sociale, le ton, l'interface et les signaux relationnels.
- Ne pas surinterpréter les modérations sur l'intention : elles sont non significatives et plusieurs souffrent de VIF trop élevés. Elles sont donc méthodologiquement fragiles.
- Surveiller le couple confiance / risque psychologique : c'est le seul effet modérateur robuste. En clair, la confiance ne suffit plus autant lorsque l'utilisateur se sent psychologiquement menacé ou mal à l'aise.
L3 MHR - Restauration
Rapport d'analyse structurelle (n = 220)
Lecture experte du modèle de mesure et du modèle structurel dans une logique PLS-SEM appliquée au marketing de la restauration.
1. Qualité du modèle de mesure : fiabilité et validité convergente
Avant d'interpréter les relations entre variables, il faut vérifier que chaque construit est correctement mesuré. Ici, les résultats sont globalement très solides : les alphas de Cronbach, les fiabilités composites et les AVE dépassent les seuils habituellement recommandés en PLS-SEM.
| Variable latente | Alpha de Cronbach (> 0.70) |
AVE (> 0.50) |
Fiabilité composite (> 0.70) |
|---|---|---|---|
| Anthropomorphisme | 0.849 | 0.624 | 0.892 |
| Chaleur | 0.894 | 0.703 | 0.922 |
| Compétence | 0.885 | 0.744 | 0.921 |
| Présence sociale | 0.828 | 0.662 | 0.886 |
| Plaisir | 0.878 | 0.733 | 0.916 |
| Facilité | 0.889 | 0.751 | 0.923 |
| Utilité | 0.888 | 0.602 | 0.913 |
| Confiance cognitive | 0.875 | 0.668 | 0.909 |
| Confiance affective | 0.841 | 0.563 | 0.884 |
| Attitude | 0.882 | 0.740 | 0.919 |
| Intention | 0.879 | 0.734 | 0.917 |
| Risque psychologique | 0.777 | 0.602 | 0.858 |
| Risque de déshumanisation | 0.902 | 0.718 | 0.927 |
| Risque pour l'emploi | 0.867 | 0.653 | 0.904 |
2. Validité discriminante
La validité discriminante permet de vérifier que les construits sont bien distincts les uns des autres. Le tableau HTMT ne fait pas apparaître de dépassement critique dans la synthèse fournie.
Conclusion : les concepts du modèle — anthropomorphisme, chaleur, compétence, présence sociale, plaisir, utilité, confiance, attitude, intention et perceptions de risque — apparaissent suffisamment différenciés sur le plan statistique.
3. Analyse des chemins structurels (path coefficients)
Les coefficients ci-dessous permettent d'identifier les leviers et les freins à l'acceptation. La lecture doit se faire à deux niveaux : la significativité statistique et le sens théorique des relations.
| Relation | Effet (β) | p-value | Statut |
|---|---|---|---|
| Formation des perceptions initiales | |||
| Anthropomorphisme ➔ Compétence | 0.640 | 0.000 | Validée |
| Anthropomorphisme ➔ Chaleur | 0.796 | 0.000 | Validée |
| Anthropomorphisme ➔ Présence sociale | 0.834 | 0.000 | Validée (effet majeur) |
| Présence sociale ➔ Plaisir | 0.717 | 0.000 | Validée |
| Facilité ➔ Utilité | 0.621 | 0.000 | Validée |
| Construction de la confiance | |||
| Compétence ➔ Confiance | 0.380 | 0.000 | Validée |
| Chaleur ➔ Confiance | 0.428 | 0.000 | Validée |
| Déterminants de l'attitude | |||
| Plaisir ➔ Attitude | 0.426 | 0.000 | Validée |
| Utilité ➔ Attitude | 0.502 | 0.000 | Moteur principal |
| Facilité ➔ Attitude | -0.168 | 0.023 | Effet négatif significatif |
| Confiance ➔ Attitude | 0.230 | 0.056 | Non significatif |
| Risque psychologique ➔ Attitude | -0.047 | 0.382 | Non significatif |
| Confiance × Risque psychologique ➔ Attitude | -0.073 | 0.208 | Non significatif |
| Déterminants de l'intention | |||
| Attitude ➔ Intention | 0.663 | 0.000 | Moteur n°1 |
| Confiance ➔ Intention | 0.284 | 0.001 | Moteur n°2 |
| Risque psychologique ➔ Intention | -0.063 | 0.318 | Non significatif |
| Risque de déshumanisation ➔ Intention | -0.013 | 0.875 | Non significatif |
| Risque pour l'emploi ➔ Intention | -0.005 | 0.949 | Non significatif |
| Effets modérateurs sur l'intention | |||
| Confiance × Risque psychologique ➔ Intention | -0.043 | 0.740 | Non significatif |
| Confiance × Risque de déshumanisation ➔ Intention | -0.067 | 0.704 | Non significatif |
| Confiance × Risque emploi ➔ Intention | 0.076 | 0.685 | Non significatif |
| Attitude × Risque psychologique ➔ Intention | 0.093 | 0.391 | Non significatif |
| Attitude × Risque de déshumanisation ➔ Intention | 0.062 | 0.651 | Non significatif |
| Attitude × Risque emploi ➔ Intention | -0.164 | 0.187 | Non significatif |
4. Puissance explicative du modèle
Les coefficients de détermination (R²) montrent le niveau de variance expliqué par le modèle pour chaque variable endogène.
| Variable expliquée | R² | Interprétation |
|---|---|---|
| Compétence | 0.344 | Pouvoir explicatif modéré |
| Chaleur | 0.562 | Pouvoir explicatif élevé |
| Présence sociale | 0.656 | Pouvoir explicatif élevé |
| Plaisir | 0.463 | Pouvoir explicatif modéré à élevé |
| Utilité | 0.484 | Pouvoir explicatif modéré à élevé |
| Confiance | 0.803 | Pouvoir explicatif très élevé |
| Attitude | 0.754 | Pouvoir explicatif très élevé |
| Intention | 0.775 | Pouvoir explicatif élevé |
Le modèle explique donc 77,5 % de l'intention, ce qui reste un niveau très élevé en sciences de gestion et en marketing.
5. Colinéarité : situation correcte sur les effets directs, plus fragile sur certaines interactions
La colinéarité est évaluée avec les VIF. Pour la plupart des prédicteurs directs, les valeurs restent acceptables. En revanche, certaines variables d'interaction posent clairement problème.
| Bloc | Exemples de VIF | Lecture |
|---|---|---|
| Déterminants de la confiance | Compétence = 2.05 ; Chaleur = 2.05 | Acceptable |
| Déterminants de l'attitude | Plaisir = 2.58 ; Utilité = 3.94 ; Facilité = 2.90 ; Confiance = 5.18 ; Risque psychologique = 1.24 ; Confiance × Risque = 1.11 | Acceptable mais vigilance sur Confiance |
| Déterminants de l'intention | Confiance = 2.81 ; Attitude = 2.82 ; Risque psychologique = 1.79 ; Risque déshumanisation = 3.65 ; Risque emploi = 3.23 | Acceptable |
| Variables de modération (interactions) |
Confiance × Risque psychologique : VIF = 5.91 Confiance × Risque de déshumanisation : VIF = 14.04 |
VIF trop élevés |
Conclusion : les effets directs sont globalement interprétables. En revanche, les résultats de modération sur l'intention sont fragilisés, en particulier pour Confiance × Risque de déshumanisation, dont le VIF est très élevé. Il faut donc rester prudent dans l'interprétation des effets modérateurs non significatifs.
6. Interprétation scientifique globale
- L'anthropomorphisme joue un rôle amont central : plus le dispositif paraît humain, plus il est perçu comme chaleureux, compétent et socialement présent.
- La présence sociale nourrit le plaisir, ce qui confirme que l'expérience vécue avec le dispositif reste essentielle.
- L'utilité et le plaisir alimentent l'attitude, avec un poids légèrement plus fort pour l'utilité dans ce modèle.
- L'attitude est le principal moteur de l'intention, complétée par un effet direct de la confiance.
- La facilité a ici un effet négatif sur l'attitude, résultat atypique qui mérite d'être signalé et discuté.
- Les risques perçus ne freinent pas directement l'intention dans ce modèle : ni le risque psychologique, ni la déshumanisation, ni le risque emploi ne ressortent comme significatifs.
- Les modérations ne sont pas validées, et plusieurs sont de toute façon fragilisées par une colinéarité excessive.
Analyse stratégique et implications managériales
Sur la base des résultats, plusieurs enseignements se dégagent pour des acteurs de la restauration souhaitant intégrer des dispositifs technologiques ou robotisés dans l'expérience client.
- Faire de l'attitude la cible centrale : c'est le moteur principal de l'intention. Tout ce qui améliore l'évaluation globale de l'expérience soutient l'adoption.
- Renforcer l'utilité perçue : c'est l'un des leviers les plus robustes du modèle. Les utilisateurs doivent comprendre en quoi le dispositif apporte une vraie valeur dans le service.
- Ne pas négliger la confiance : même si elle n'alimente pas directement l'attitude de manière significative ici, elle agit clairement sur l'intention.
- Travailler la présence sociale et l'anthropomorphisme : ils jouent un rôle amont majeur dans la formation des perceptions positives.
- Rester prudent sur la facilité : dans ce modèle, son effet sur l'attitude est négatif et significatif. Il faut donc éviter de présumer qu'une interface plus simple améliore automatiquement l'acceptation.
- Ne pas surinterpréter les risques perçus : ils ne bloquent pas directement l'intention dans ce contexte précis, contrairement à ce que l'on observe parfois dans d'autres terrains.