DĂ©roulement de lâĂtude ExpĂ©rimentale
1. Le terrain dâinvestigation
LâĂ©tude expĂ©rimentale repose sur une exploration du terrain afin dâidentifier le contexte et les acteurs impliquĂ©s. Il est crucial de dĂ©finir prĂ©cisĂ©ment le cadre de lâĂ©tude, quâil sâagisse dâune enquĂȘte auprĂšs de consommateurs, dâune analyse de comportements en entreprise ou dâune Ă©tude de cas spĂ©cifique. La dĂ©limitation du terrain permet dâassurer une cohĂ©rence entre la problĂ©matique et les donnĂ©es collectĂ©es.
2. Le choix des répondants
La sĂ©lection des rĂ©pondants est une Ă©tape dĂ©terminante dans la validitĂ© des rĂ©sultats. Il est nĂ©cessaire dâadopter un Ă©chantillonnage reprĂ©sentatif, alignĂ© avec les objectifs de lâĂ©tude. La mĂ©thode dâĂ©chantillonnage peut ĂȘtre probabiliste (Ă©chantillonnage alĂ©atoire simple, stratifiĂ©) ou non probabiliste (Ă©chantillonnage par convenance, boule de neige). Les critĂšres de sĂ©lection des participants doivent ĂȘtre dĂ©finis en fonction des caractĂ©ristiques pertinentes Ă analyser, telles que lâĂąge, le secteur dâactivitĂ© ou les habitudes de consommation.
3. La méthode de collecte des données
La collecte des donnĂ©es peut ĂȘtre rĂ©alisĂ©e par diffĂ©rentes techniques selon lâapproche retenue. Dans le cadre dâune Ă©tude quantitative, le recours aux questionnaires en ligne ou en face-Ă -face est frĂ©quent. Pour une approche qualitative, les entretiens semi-directifs, les focus groups ou lâobservation participante peuvent ĂȘtre privilĂ©giĂ©s. La mĂ©thode choisie doit garantir lâobjectivitĂ© et la fiabilitĂ© des donnĂ©es collectĂ©es.
4. La construction du questionnaire final
La conception du questionnaire repose sur une adaptation des Ă©chelles de mesure issues de la littĂ©rature scientifique. Chaque concept du modĂšle est Ă©valuĂ© Ă lâaide de plusieurs items afin dâassurer une mesure valide et fiable. Les questions sont gĂ©nĂ©ralement formulĂ©es selon une Ă©chelle de Likert (ex. : de 1 = Pas du tout dâaccord Ă 7 = Tout Ă fait dâaccord).
Lâobjectif du questionnaire est de permettre une analyse statistique rigoureuse en limitant les biais de rĂ©ponse. Une prĂ©-test du questionnaire peut ĂȘtre rĂ©alisĂ© auprĂšs dâun Ă©chantillon rĂ©duit afin dâidentifier dâĂ©ventuelles ambiguĂŻtĂ©s ou incohĂ©rences.
5. Les caractĂ©ristiques de lâĂ©chantillon Ă©tudiĂ©
La description de lâĂ©chantillon comprend plusieurs Ă©lĂ©ments :
- Le nombre de participants et le taux de réponse obtenu.
- Les caractéristiques sociodémographiques des répondants (ùge, sexe, catégorie socioprofessionnelle, etc.).
- Les comportements spĂ©cifiques des individus interrogĂ©s en lien avec lâobjet de lâĂ©tude.
Lâanalyse descriptive de ces donnĂ©es permet dâassurer que lâĂ©chantillon est reprĂ©sentatif et adaptĂ© aux objectifs de recherche.
La Procédure de Test, le Choix et la Validation des Instruments de Mesure Retenus
1. La procédure de test des instruments de mesure
Cette section est consacrĂ©e Ă la procĂ©dure de test des instruments de mesure dĂ©taillera les mĂ©thodes employĂ©es pour Ă©valuer la fiabilitĂ© et la validitĂ© des Ă©chelles utilisĂ©es dans lâĂ©tude. Cette validation repose sur des analyses statistiques rigoureuses, en particulier lâAnalyse en Composantes Principales (ACP) et lâalpha de Cronbach.
Ces deux mĂ©thodes doivent ĂȘtre expliquĂ©es en soulignant comment elles sont utilisĂ©es pour garantir que les instruments de mesure sont adaptĂ©s et valides avant dâanalyser les rĂ©sultats de lâĂ©tude.
2. Le choix et la validation des instruments de mesure retenus
2.1. Les critÚres de choix des différents instruments de mesure
Cette section vise Ă justifier la sĂ©lection des Ă©chelles de mesure utilisĂ©es dans lâĂ©tude. Le choix des instruments de mesure est une Ă©tape cruciale, car il dĂ©termine la pertinence et la fiabilitĂ© des donnĂ©es collectĂ©es. Le choix des Ă©chelles repose sur des critĂšres tels que leur validitĂ© thĂ©orique, leur utilisation dans des Ă©tudes antĂ©rieures et leur capacitĂ© Ă mesurer fidĂšlement le phĂ©nomĂšne Ă©tudiĂ©.
Lâobjectif est de sâassurer que les Ă©chelles retenues permettent de mesurer prĂ©cisĂ©ment le phĂ©nomĂšne Ă©tudiĂ© en se basant sur trois critĂšres essentiels :
- La ValiditĂ© ThĂ©orique : Les Ă©chelles doivent ĂȘtre ancrĂ©es dans la littĂ©rature scientifique et correspondre aux concepts thĂ©oriques dĂ©finis dans le modĂšle de recherche. Une Ă©chelle est considĂ©rĂ©e comme valide si elle a Ă©tĂ© dĂ©veloppĂ©e Ă partir de thĂ©ories reconnues et validĂ©es dans des Ă©tudes acadĂ©miques.
- LâUtilisation dans des Ătudes AntĂ©rieures : Il est essentiel de privilĂ©gier des Ă©chelles ayant dĂ©jĂ Ă©tĂ© employĂ©es et testĂ©es dans des recherches similaires. Cela permet de garantir leur fiabilitĂ© et leur adĂ©quation au contexte Ă©tudiĂ©, tout en assurant une comparabilitĂ© des rĂ©sultats avec dâautres travaux.
- La CapacitĂ© Ă Mesurer FidĂšlement le PhĂ©nomĂšne : Une Ă©chelle pertinente doit couvrir lâensemble des dimensions du concept Ă©tudiĂ© et ĂȘtre suffisamment prĂ©cise pour distinguer des variations significatives dans les rĂ©ponses des participants. Elle doit Ă©galement prĂ©senter des qualitĂ©s psychomĂ©triques solides, comme une cohĂ©rence interne Ă©levĂ©e (alpha de Cronbach) et une bonne validitĂ© factorielle.
Cette section permet donc dâexpliquer les choix mĂ©thodologiques justifiant lâadoption des Ă©chelles de mesure et de dĂ©montrer leur pertinence dans le cadre de lâĂ©tude menĂ©e.
2.2. Les Ă©chelles de mesure retenues
Cette section sâintĂ©resse Ă lâĂ©valuation des Ă©chelles de mesure utilisĂ©es dans lâĂ©tude afin dâassurer leur validitĂ© et leur fiabilitĂ©. En effet, une fois les donnĂ©es collectĂ©es, il est essentiel dâĂ©valuer la validitĂ© et la fiabilitĂ© des Ă©chelles utilisĂ©es.
Les Ă©chelles de mesure sĂ©lectionnĂ©es doivent ĂȘtre opĂ©rationnalisĂ©es et adaptĂ©es au contexte de lâĂ©tude. Lâexplication dĂ©taillĂ©e de leur origine et de leur validitĂ© thĂ©orique permet de garantir la soliditĂ© des analyses Ă venir. AprĂšs la collecte des donnĂ©es, plusieurs analyses statistiques sont effectuĂ©es pour garantir que les items mesurent bien le concept thĂ©orique auquel ils sont associĂ©s.
Un tableau synthétique viendra présenter les résultats obtenus pour chacun des outils de mesure utilisés comme vous pouvez le voir içi :

La premiĂšre Ă©tape consiste en une purification des Ă©chelles, qui permet dâĂ©liminer les items non pertinents ou redondants grĂące Ă des indicateurs comme la corrĂ©lation item-total et lâalpha de Cronbach.
Ensuite, une analyse factorielle exploratoire (AFE) est réalisée pour identifier la structure sous-jacente des échelles et regrouper les items en facteurs cohérents. Cette analyse repose sur plusieurs tests, notamment :
- Le test KMO et le test de Bartlett, qui vĂ©rifient lâadĂ©quation des donnĂ©es Ă une analyse factorielle.
- Lâanalyse en composantes principales (ACP) et la rotation factorielle (ex. : Varimax), qui facilitent lâinterprĂ©tation des rĂ©sultats.
- Lâexamen de la variance totale expliquĂ©e, qui mesure la part du phĂ©nomĂšne Ă©tudiĂ© capturĂ©e par les facteurs extraits.
La robustesse des mesures est ensuite Ă©valuĂ©e Ă travers les contributions factorielles des items et leur qualitĂ© de reprĂ©sentation. Un item est considĂ©rĂ© comme fiable si sa charge factorielle est Ă©levĂ©e et si lâalpha de Cronbach dĂ©passe 0,7, garantissant ainsi une bonne cohĂ©rence interne.
Lâensemble de ces analyses permet de valider les instruments de mesure retenus et dâassurer leur pertinence pour tester les hypothĂšses du modĂšle de recherche.
Les Choix MĂ©thodologiques pour le Test des HypothĂšses
Les hypothĂšses du modĂšle sont testĂ©es Ă lâaide de mĂ©thodes statistiques adaptĂ©es. Parmi les techniques les plus utilisĂ©es, on retrouve :
- Les rĂ©gressions linĂ©aires, qui permettent dâanalyser lâinfluence dâune variable indĂ©pendante sur une variable dĂ©pendante.
- Les analyses de variance (ANOVA), qui comparent les différences entre plusieurs groupes de répondants.
- Les modĂšles dâĂ©quations structurelles, qui Ă©valuent lâensemble des relations dâun modĂšle thĂ©orique en une seule analyse globale.
Ces analyses permettent de déterminer si les hypothÚses formulées dans le cadre du travail de recherche sont confirmées ou non.
Lâapproche mĂ©thodologique adoptĂ©e garantit la rigueur scientifique de lâĂ©tude en sâappuyant sur des analyses fiables et validĂ©es. Lâensemble du processus, depuis la construction du questionnaire jusquâaux tests statistiques, permet dâassurer des rĂ©sultats robustes et interprĂ©tables. Ce travail ne vise pas Ă valider dĂ©finitivement des hypothĂšses, mais Ă les mettre Ă lâĂ©preuve du rĂ©el, contribuant ainsi Ă lâenrichissement des connaissances dans le domaine Ă©tudiĂ©.
CODE PYTHON ACP
Vous devez rĂ©aliser une ACP pour chaque concept Ă©tudiĂ© (Normes Subjectives, Risques Perçus, etc., y compris l’intention de payer en BTC) en utilisant le code Python ci-aprĂšs :
- installation des bibliothĂšques Python,
- lire les données,
- rĂ©aliser l’ACP.
Cette ACP permettra de rĂ©duire la dimensionnalitĂ© des donnĂ©es et dâextraire un score factoriel unique pour chaque individu sur chaque concept.
Lâalpha de Cronbach que vous avez calculĂ© reprĂ©sente un indicateur de fiabilitĂ© de votre Ă©chelle de mesure et montre la cohĂ©rence interne des Ă©chelles.
- Attention :
- Une fois les bibliothĂšques installĂ©es et les donnĂ©es lues, n’utiliser que le code rĂ©aliser l’ACP. Dans le cas contraire, les scores factoriels enregistrĂ©s seront effacĂ©s
- Le nom de la composante extraite ne doit pas comprendre d’apostrophe, d’espace ou de caractĂšre avec accent. Il vous faut trouver un codage unique et simple (exemple : nom du concept = normes subjective, nom de la composante = NornesSubjectives)
- Pensez Ă copier/coller le tableau de synthĂšse avec de cliquer sur “enregistrer les rĂ©sultats” :
Voici ci-aprÚs, le code Pyhton à utiliser pour vérifier la structure factorielle de vos mesures et obtenir les résultats à intégrer dans la régression multiple :

Charger le fichier de données
Copiez le code ci-dessous et collez-le sous Google Colab :
import pandas as pd
# Demander Ă l'utilisateur d'entrer le chemin du fichier
file_path = input("Veuillez coller le chemin complet du fichier XLS : ")
# Charger le fichier XLS dans un DataFrame
data_original = pd.read_excel(file_path)
# Afficher le contenu du DataFrame
data_original
Installer les bibliothÚques nécessaires
Copiez le code ci-dessous et collez-le sous Google Colab :
!pip install factor_analyzer
!pip install --upgrade scikit-learn
!pip install --upgrade --no-deps scikit-learn
!pip install --upgrade imbalanced-learn xgboost
ProcĂ©der Ă lâAnalyse en Composantes Principales sans rotation
Copiez le code ci-dessous et collez-le sous Google Colab :
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from factor_analyzer import FactorAnalyzer
from factor_analyzer.factor_analyzer import calculate_kmo, calculate_bartlett_sphericity
from ipywidgets import interactive
import ipywidgets as widgets
# Fonction pour calculer l'alpha de Cronbach
def cronbach_alpha(df):
if len(df.columns) > 1:
k = df.shape[1]
variances = df.var(axis=0, ddof=1)
total_variance = df.sum(axis=1).var(ddof=1)
return (k / (k - 1)) * (1 - (variances.sum() / total_variance))
else:
print("â ïž Pas assez de variables pour calculer l'alpha sans item.")
# Chargement des données (supposées déjà chargées dans data_original)
def select_columns(data):
print("\nColonnes disponibles :", list(data.columns))
selected_columns = input("Entrez les noms des colonnes pour l'ACP (séparées par une virgule) : ").strip().split(',')
selected_columns = [col.strip() for col in selected_columns]
if not all(col in data.columns for col in selected_columns):
print("Erreur : certaines colonnes n'existent pas. RĂ©essayez.")
return select_columns(data)
return selected_columns
# Ătape 1 : SĂ©lection des colonnes pour l'ACP
selected_columns = select_columns(data_original)
df = data_original[selected_columns]
# Ătape 2 : Normalisation des donnĂ©es
scaler = StandardScaler()
data_scaled = scaler.fit_transform(df)
# Ătape 3 : Test KMO et Bartlett
kmo_all, kmo_model = calculate_kmo(df)
chi_square_value, p_value = calculate_bartlett_sphericity(df)
print(f"\nKMO global : {kmo_model:.3f}")
print(f"Test de Bartlett : ChiÂČ = {chi_square_value:.3f}, p = {p_value:.3f}")
# Ătape 4 : CommunalitĂ©s
# Affichage des communalités
fa_temp = FactorAnalyzer(rotation=None, method='principal', is_corr_matrix=False)
fa_temp.fit(data_scaled)
eigenvalues, _ = fa_temp.get_eigenvalues()
n_factors = sum(eigenvalues > 1)
print(f"Nombre de composantes retenues (valeurs propres > 1) : {n_factors}")
fa_temp = FactorAnalyzer(rotation=None, method='principal', n_factors=n_factors,is_corr_matrix=False)
fa_temp.fit(data_scaled)
communalities = pd.DataFrame({
'Variable': df.columns,
'Initial': [1.000] * len(df.columns), # Les valeurs initiales sont toujours 1
'Communalité': fa_temp.get_communalities()
}).round(3)
print("\nCommunalités des variables:")
print(communalities)
# Ătape 5 : DĂ©termination du nombre de facteurs
eigenvalues, _ = fa_temp.get_eigenvalues()
n_factors = sum(eigenvalues > 1)
print(f"Nombre de composantes retenues (valeurs propres > 1) : {n_factors}")
# Tableau des variances expliquées
explained_variance_ratio = eigenvalues / np.sum(eigenvalues)
cumulative_variance = np.cumsum(explained_variance_ratio)
variance_table = pd.DataFrame({
'Composante': [f"Composante {i+1}" for i in range(len(eigenvalues))],
'Valeurs propres': eigenvalues,
'Variance expliquée (%)': explained_variance_ratio * 100,
'Variance expliquée cumulée (%)': cumulative_variance * 100
}).round(3)
display(variance_table)
# Graphique Scree Plot
plt.figure(figsize=(8, 6))
plt.plot(range(1, len(eigenvalues) + 1), eigenvalues, marker='o')
plt.title("Graphique des valeurs propres (Scree Plot)")
plt.xlabel("Composantes")
plt.ylabel("Valeurs propres")
plt.grid(True)
plt.show()
# Ătape 6 : Choix du nombre de facteurs par l'utilisateur
# Demander Ă l'utilisateur le nombre de composantes Ă retenir au moment de la sauvegarde
n_factors = int(input("Entrez le nombre de composantes Ă retenir pour les scores factoriels : "))
# Ătape 7 : Analyse factorielle avec le nombre de facteurs sĂ©lectionnĂ©
fa = FactorAnalyzer(rotation=None, method='principal', n_factors=n_factors)
fa.fit(data_scaled)
# Matrice des charges factorielles
loadings = fa.loadings_
components_matrix = pd.DataFrame(loadings, index=df.columns).round(3)
display(components_matrix)
# Ătape 8 : Cercle des corrĂ©lations
if n_factors > 1:
fig, ax = plt.subplots(figsize=(6, 6))
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.axhline(0, color='black', linestyle='-', linewidth=0.8)
ax.axvline(0, color='black', linestyle='-', linewidth=0.8)
ax.grid(True, linestyle='--', linewidth=0.5, alpha=0.7)
for i in range(loadings.shape[0]):
ax.scatter(loadings[i, 0], loadings[i, 1], color='b', alpha=0.5, s=50)
ax.text(loadings[i, 0], loadings[i, 1], df.columns[i], color='r', fontsize=8, ha='center')
ax.set_title("Cercle des corrélations", fontsize=10)
ax.set_xlabel("Composante 1")
ax.set_ylabel("Composante 2")
plt.show()
# Demander Ă l'utilisateur s'il souhaite une rotation
rotation_choice = input("Souhaitez-vous procéder à une rotation des variables ? (oui/non) : ").strip().lower()
if rotation_choice == "non":
fa = FactorAnalyzer(n_factors=n_factors, rotation=None, method='principal')
fa.fit(data_scaled)
factor_scores = fa.transform(data_scaled)
# Demander Ă l'utilisateur le nom des composantes
component_names = []
for i in range(n_factors):
name = input(f"Entrez le nom pour la composante {i+1} : ")
component_names.append(name)
components_matrix.columns = component_names
factor_scores_df = pd.DataFrame(factor_scores, columns=component_names)
# Affichage des scores factoriels
display(factor_scores_df)
# Calcul de l'alpha de cronbach
global_alpha = cronbach_alpha(df)
print(f"Alpha de Cronbach global : {global_alpha:.3f}")
alpha_sans_item = {col: cronbach_alpha(df.drop(columns=[col])) for col in selected_columns}
df_alpha = pd.DataFrame.from_dict(alpha_sans_item, orient='index', columns=['Alpha sans item']).round(3)
display(df_alpha)
############# ROTATION ##################@@
else:
rotation_types = ["varimax", "promax", "oblimin", "quartimax"]
print("Types de rotation disponibles :", rotation_types)
rotation_type = input("Veuillez entrer le type de rotation souhaité : ").strip().lower()
if rotation_type not in rotation_types:
print("Type de rotation non valide. Par défaut, 'varimax' sera utilisé.")
rotation_type = "varimax"
fa = FactorAnalyzer(n_factors=n_factors, rotation=rotation_type, method='principal')
fa.fit(data_scaled)
loadings = fa.loadings_
components_matrix = pd.DataFrame(loadings, index=df.columns).round(3)
# Affichage des scores factoriels
# display(factor_scores_df)
# Ătape 8 : Cercle des corrĂ©lations
if n_factors > 1:
fig, ax = plt.subplots(figsize=(6, 6))
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.axhline(0, color='black', linestyle='-', linewidth=0.8)
ax.axvline(0, color='black', linestyle='-', linewidth=0.8)
ax.grid(True, linestyle='--', linewidth=0.5, alpha=0.7)
for i in range(loadings.shape[0]):
ax.scatter(loadings[i, 0], loadings[i, 1], color='b', alpha=0.5, s=50)
ax.text(loadings[i, 0], loadings[i, 1], df.columns[i], color='r', fontsize=8, ha='center')
ax.set_title("Cercle des corrélations", fontsize=10)
ax.set_xlabel("Composante 1")
ax.set_ylabel("Composante 2")
plt.show()
# Demander Ă l'utilisateur le nom des composantes
component_names = []
for i in range(n_factors):
name = input(f"Entrez le nom pour la composante {i+1} : ")
component_names.append(name)
components_matrix.columns = component_names
factor_scores = fa.transform(data_scaled)
factor_scores_df = pd.DataFrame(factor_scores, columns=component_names)
# Affichage des scores factoriels
display(factor_scores_df)
global_alpha = cronbach_alpha(df)
print(f"Alpha de Cronbach global : {global_alpha:.3f}")
alpha_sans_item = {col: cronbach_alpha(df.drop(columns=[col])) for col in selected_columns}
df_alpha = pd.DataFrame.from_dict(alpha_sans_item, orient='index', columns=['Alpha sans item']).round(3)
display(df_alpha)
def generate_pca_summary(data_original, n_factors, fa, kmo_model, global_alpha, eigenvalues):
"""
GénÚre un tableau de synthÚse des résultats de l'ACP si une seule dimension est retenue.
Args:
df (pd.DataFrame): Les données utilisées pour l'ACP.
n_factors (int): Nombre de facteurs extraits.
fa (FactorAnalyzer): Analyseur factoriel aprÚs ajustement des données.
kmo_model (float): Indice KMO global.
alpha_cronbach (float): Alpha de Cronbach de l'Ă©chelle.
eigenvalues (list): Valeurs propres des composantes.
Returns:
pd.DataFrame: Un tableau de synthÚse des résultats.
"""
if n_factors == 1:
communalities = fa.get_communalities()
loadings = fa.loadings_
summary_data = []
for i, var in enumerate(df.columns):
summary_data.append([
var,
loadings[i][0],
"-", # Alpha sans item (à calculer si nécessaire)
communalities[i],
1.000 if i == 0 else round(np.corrcoef(df.iloc[:, 0], df.iloc[:, i])[0, 1], 3)
])
summary_data.append(["KMO", kmo_model, "-", "-", "-"])
summary_data.append(["α de lâĂ©chelle", global_alpha, "-", "-", "-"])
summary_data.append(["Valeur propre du facteur", eigenvalues[0], "-", "-", "-"])
summary_data.append(["Variance expliquée", round((eigenvalues[0] / sum(eigenvalues)) * 100, 3), "-", "-", "-"])
columns = ["Items", "Contributions factorielles", "α sans item", "Qualité Extraction", "Correl. Items"]
return pd.DataFrame(summary_data, columns=columns)
return None # Retourne None si plus d'un facteur est extrait
# Génération du tableau si une seule dimension est extraite
pca_summary = generate_pca_summary(data_original, n_factors, fa, kmo_model, global_alpha, eigenvalues)
# Affichage du tableau
if pca_summary is not None:
#import ace_tools as tools
#tools.display_dataframe_to_user(name="Tableau de SynthĂšse PCA", dataframe=pca_summary)
#print(pca_summary)
from IPython.display import display
display(pca_summary)
# Demander à l'utilisateur s'il souhaite enregistrer les résultats
def save_results():
global data_original
data_original = pd.concat([data_original, factor_scores_df], axis=1)
output_file = "Analyse_Factorielle_Resultats.xlsx"
with pd.ExcelWriter(output_file) as writer:
factor_scores_df.to_excel(writer, sheet_name="Scores_Factoriels", index=False)
df_alpha.to_excel(writer, sheet_name="Alpha_Cronbach", index=True)
print(f"\nLes résultats ont été sauvegardés dans {output_file}.")
save_btn = widgets.Button(description="Enregistrer les résultats")
save_btn.on_click(lambda b: save_results())
display(save_btn)
Un bout de code pour sauvegarder votre fichier contenant les scores factoriels des ACP réalisées
data_original.to_excel('data_original.xlsx', index=False)
# Télécharger le fichier Excel automatiquement sur votre ordinateur (spécifique à Google Colab)
from google.colab import files
files.download('data_original.xlsx')