0% ont trouvé ce document utile (0 vote)
8 vues27 pages

Analyse de la gouvernance en Afrique 2022

Le projet analyse les relations entre la bonne gouvernance et le développement des pays africains en 2022 en utilisant des données sur les indicateurs de gouvernance et l'IDH. Les données sont importées, nettoyées et fusionnées, puis des statistiques descriptives et des visualisations sont réalisées pour explorer les tendances et les relations. Les résultats montrent des performances médiocres en matière de gouvernance et une dispersion significative des données, avec des outliers identifiés dans certaines variables.

Transféré par

Benoît Ouedraogo
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues27 pages

Analyse de la gouvernance en Afrique 2022

Le projet analyse les relations entre la bonne gouvernance et le développement des pays africains en 2022 en utilisant des données sur les indicateurs de gouvernance et l'IDH. Les données sont importées, nettoyées et fusionnées, puis des statistiques descriptives et des visualisations sont réalisées pour explorer les tendances et les relations. Les résultats montrent des performances médiocres en matière de gouvernance et une dispersion significative des données, avec des outliers identifiés dans certaines variables.

Transféré par

Benoît Ouedraogo
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Projet_Python

February 8, 2025

1 Importation des library nécessaires


Description du projet : Nous allons utiliser une base de données contenant les indicateurs de bonne
gouvernance et l’IDH des pays d Afrique en 2022, en vue d’analyser les relations pouvant exister
entre la bonne gouvernance et le developpement des pays africains en 2022.
Suivant les instructions du prof, nous avons penser mettre une touche personnelle a notre travail,
pour assurer de la pertinence de notre travail.

[3]: import pandas as pd


import numpy as np
import pylab
import pandas as pd
import seaborn as sns
import statistics
import [Link] as sm
import [Link] as plt
import [Link] as stats
from [Link] import StandardScaler
from [Link] import PCA
from [Link] import shapiro
from [Link] import mannwhitneyu
from [Link] import chi2_contingency
from [Link] import pearsonr
import [Link] as plt

2 Importation des bases de données


[4]: WDG = pd.read_stata ("F:/donnees/Documents/[Link]") #la base contenant␣
↪les indicateurs de bonnes gouvernances des pays

IDH_2022_AF = pd.read_excel ("F:/donnees/Documents/IDH_2022.xlsx") #une base de␣


↪données contenant les IDH des pays d'Afrique en 2022.

# Renommer les colonnes


[Link](columns={
"code": "code_pays",
"countryname": "pays",
"year": "annee"

1
}, inplace=True)

# Modifions les valeurs de code_pays selon les conditions


WDG .loc[WDG ["code_pays"] == "ZAR", "code_pays"] = "COD" # RDC

WDG .loc[WDG ["code_pays"] == "BMU", "code_pays"] = "BWA" # Botwana

WDG .loc[(WDG ["code_pays"] == "BWA") & (WDG ["pays"] == "Bermuda"),␣


↪"code_pays"] = "BMU"

# Gardons uniquement les colonnes spécifiques


colonnes_a_conserver = ["code_pays", "pays", "annee", "vae", "pve", "gee",␣
↪"rqe", "rle", "cce"]

WDG = WDG [colonnes_a_conserver]

WDG_2022 = [Link][(WDG["annee"]==2022)] # on selectionne uniquement les␣


↪indicateurs pour 2022.

# Fusion des deux bases sur "code_pays"


Base = [Link](WDG_2022, IDH_2022_AF, on="code_pays", how="inner") #on réalise␣
↪une jointure interne entre les bases IDH_2022_AF et WDG_2022.

Base = [Link](["Pays", "annee"], axis=1)

#1. Affiche les 5 premières lignes pour vérification


[Link](5)

[4]: code_pays pays vae pve gee rqe rle \


0 AGO Angola -0.797131 -0.646241 -1.040429 -0.606699 -1.021905
1 BDI Burundi -1.387993 -1.188869 -1.262841 -0.947486 -1.277140
2 BEN Benin -0.348291 -0.349461 -0.164296 -0.348365 -0.602390
3 BFA Burkina Faso -0.633902 -1.782517 -0.825155 -0.468306 -0.607679
4 BWA Botswana 0.446498 1.077516 0.463997 0.621044 0.467351

cce IDH 2022 Niveau_dev


0 -0.601941 0.592 Moyen
1 -1.518142 0.426 Faible
2 -0.124256 0.545 Moyen
3 -0.083611 0.449 Faible
4 0.661455 0.693 Moyen

3 Presentation des variables


VA : Voice and Accountability (Voix et Responsabilité) - Mesure la liberté d’expression politique, la
liberté de la presse, la liberté d’association et de réunion, ainsi que la participation électorale. � PV
: Political Stability and Absence of Violence (Stabilité Politique et Absence de Violence) - Évalue
la probabilité de changements politiques violents ou de conflits. � GE : Government Effectiveness
(Efficacité du Gouvernement) - Mesure la qualité de la régulation, la compétence des fonctionnaires

2
publics, et l’efficacité de l’administration publique dans la mise en œuvre des politiques. � RQ :
Regulatory Quality (Qualité de la Régulation) - Évalue la transparence réglementaire, la complexité
administrative, et la qualité des normes et régulations. � RL : Rule of Law (État de Droit) - Mesure
l’indépendance du système judiciaire, l’application de la loi, et le respect des droits de propriété.
� CC : Control of Corruption (Contrôle de la Corruption) - Évalue la perception de la corruption
dans le secteur public et l’efficacité des institutions anti-corruption.
A terme, la base “Base” contient les indicateurs de gouvernance de la Banque Mondiale et les IDH
des pays d’Afrique, tous pour l’année 2022.

[5]: #2. Les types de données.


[Link]

[5]: code_pays object


pays object
vae float32
pve float32
gee float32
rqe float32
rle float32
cce float32
IDH 2022 float64
Niveau_dev object
dtype: object

[6]: #vérifier les valeurs manquantes.


[Link]().sum()

[6]: code_pays 0
pays 0
vae 0
pve 0
gee 0
rqe 0
rle 0
cce 0
IDH 2022 0
Niveau_dev 0
dtype: int64

Il n’y a aucune valeur manquante dans la base.

3
4 Résumer les statistiques descriptives pour chaque colonne
numérique
[7]: import pandas as pd
import numpy as np

# Sélection des colonnes numériques


col_num = Base.select_dtypes(include=[[Link]]).columns

# Fonction pour calculer les statistiques


def calcul_stats(col):
if round([Link](col), 3) == 0: # Éviter la division par zéro pour le CV
cv = [Link]
else:
cv = round([Link](col, ddof=1) / [Link](col), 3)

return [
round([Link](col), 3),
round([Link](col), 3),
round([Link](col), 3),
round([Link](col), 3),
round([Link](col, ddof=1), 3),
round([Link](col, ddof=1), 3),
round([Link](col, 25), 3),
round([Link](col, 75), 3),
round([Link](col, 75) - [Link](col, 25), 3),
cv
]

# Noms des statistiques pour les colonnes


stats_names = ["Max", "Min", "Moyenne", "Médiane", "Écart-type", "Variance",
"Q1 (1er quartile)", "Q3 (3e quartile)", "IQR", "CV (Coeff.␣
↪variation)"]

# Création du DataFrame des statistiques avec les variables en lignes


df_stats = [Link]({col: calcul_stats(Base[col]) for col in col_num},␣
↪index=stats_names).T

# Affichage du tableau
print(df_stats)

Max Min Moyenne Médiane Écart-type Variance \


vae 0.935 -1.699 -0.575 -0.659 0.687 0.472
pve 1.078 -2.479 -0.640 -0.508 0.887 0.787
gee 0.750 -2.390 -0.767 -0.745 0.654 0.428
rqe 1.166 -2.104 -0.725 -0.721 0.623 0.389
rle 0.800 -2.055 -0.694 -0.623 0.622 0.387

4
cce 1.698 -1.856 -0.627 -0.669 0.709 0.503
IDH 2022 0.802 0.385 0.561 0.543 0.104 0.011

Q1 (1er quartile) Q3 (3e quartile) IQR CV (Coeff. variation)


vae -1.125 -0.065 1.060 -1.196
pve -1.238 -0.082 1.157 -1.387
gee -1.226 -0.385 0.841 -0.853
rqe -1.063 -0.425 0.638 -0.860
rle -1.096 -0.353 0.743 -0.896
cce -1.114 -0.330 0.784 -1.131
IDH 2022 0.502 0.612 0.110 0.186
Avec une moyenne de 0.56, la majorité des pays semblent classés dans la tranche moyenne de
l’indice. L’écart-type relativement faible (0.104) montre une homogénéité dans les niveaux d’IDH.
Valeurs moyennes négatives (vae, pve, gee, rqe, rle, cce) : Cela reflète une performance globale
médiocre en matière de bonne gouvernance pour les pays étudiés.
Minima extrêmement faibles (-2.479 pour pve, -2.389 pour gee) : Ces pays montrent de défis
institutionnels et gouvernance déficiente importantes.

[63]: #On cree une fonction py qui prend en parametre une base,puis renvoie un␣
↪histogramme pour chaque variable quanti de la base.

def plot_histo(df):
# Sélection des colonnes numériques
col_num = df.select_dtypes(include=['number']).columns
nb_col = len(col_num) # Nombre total de variables numériques

# On définit la disposition des sous-graphiques


rows = (nb_col // 3) + (nb_col % 3 > 0) # On arrondit pour avoir assez de␣
↪lignes

cols = min(3, nb_col) # Maximum 3 colonnes pour une bonne lisibilité

fig, axes = [Link](rows, cols, figsize=(5 * cols, 4 * rows))


axes = [Link]()

# On trace chaque histogramme dans un sous-graphique


for i, col in enumerate(col_num):
df[col].dropna().hist(bins=20, color='skyblue', edgecolor='black',␣
↪ax=axes[i])

axes[i].set_title(f"Histogramme de {col}")
axes[i].set_xlabel(col)
axes[i].set_ylabel("Fréquence")
axes[i].grid(True)

# Supprimer les axes inutilisés s'il y en a


for j in range(i + 1, len(axes)):
[Link](axes[j])

5
plt.tight_layout() # Ajuste automatiquement les espacements
[Link]()

[64]: #Application de la fonction plot_histo() sur la Base.


plot_histo (Base)

La lecture de ces histogrammes permettent d’observer une certaine tendance à la loi normale,
pour les variables de bonnes gouvernances. Cependant, l’IDH semble ne pas suivre une tendance
normale.
On crée une fonction py qui prend en parametre une base,puis renvoie un boxplot pour chaque
variable quanti de la base.

[65]: def plot_boxplots(df):


# Sélection des colonnes numériques
col_num = df.select_dtypes(include=['number']).columns
nb_col = len(col_num) # Nombre total de variables numériques

# Définir la disposition des sous-graphiques

6
rows = (nb_col // 3) + (nb_col % 3 > 0) # Nombre de lignes nécessaires
cols = min(3, nb_col) # Maximum 3 colonnes pour une bonne lisibilité

fig, axes = [Link](rows, cols, figsize=(5 * cols, 4 * rows))


axes = [Link]()

# Trace chaque boxplot dans un sous-graphique


for i, col in enumerate(col_num):
df[col].dropna().plot(kind='box', vert=False, ax=axes[i], color='blue')
axes[i].set_title(f"Boxplot de {col}")
axes[i].set_xlabel(col)
axes[i].grid(True)

# Supprime les axes inutilisés s'il y en a


for j in range(i + 1, len(axes)):
[Link](axes[j])

plt.tight_layout() # Ajuste automatiquement les espacements


[Link]()

[66]: #Application sur la base.


plot_boxplots(Base)

7
L’analyse des boxplots montre que certaines variables ne présentent pas de outliers (vae,pve,gee).
D’autres par contre, en présentent. C’est le cas de: rqe: 3 outliers dont deux dépassant la moustache
droite, ainsi que IDH_2022 et cee. La variable rle présente une seule valeur extreme depassant la
moustache droite. Cela indique qu’il y a des pays qui se démarquent particulierement des autres
dans la qualité de leur gouvernance (Deux pays en particulier). Les boxplots plus allongés indiquent
une variance (ou dispersion) plus importante des données.

[67]: def scatter_plots(df):


# Vérifie que 'IDH 2022' existe bien dans la base
if 'IDH 2022' not in [Link]:
print("Erreur : La colonne 'IDH 2022' n'existe pas dans la base.")
return

# Sélectionne uniquement les colonnes quantitatives


col_num = df.select_dtypes(include=['number']).[Link]('IDH 2022',␣
↪errors='ignore')

# Création de scatter plots entre chaque variable quantitative et 'IDH 2022'


for col in col_num:

8
[Link](figsize=(12, 5))
[Link](df[col], df['IDH 2022'], color='green')
[Link](f"Scatter Plot entre IDH_2022 et {col}")
[Link](f"{col}")
[Link]("IDH 2022")
[Link](True)
[Link]()
# Calcul de la corrélation de Pearson et p-value
corr, p_value = pearsonr(df[col], df['IDH 2022'])
print(f"Test de corrélation entre 'IDH 2022' et '{col}':")
print(f"Coefficient de corrélation : {corr:.4f}")
print(f"p-value : {p_value:.4e}")

# Règles de décision
if p_value < 0.05:
if abs(corr) > 0.7:
print("Conclusion : Corrélation très forte et significative.")
elif abs(corr) > 0.5:
print("Conclusion : Corrélation modérée et significative.")
else:
print("Conclusion : Corrélation faible mais significative.")
else:
print("Conclusion : Pas de corrélation significative.")

print("-" * 50)

[68]: # Application a la base.


scatter_plots(Base)

Test de corrélation entre 'IDH 2022' et 'vae':

9
Coefficient de corrélation : 0.3636
p-value : 8.7300e-03
Conclusion : Corrélation faible mais significative.
--------------------------------------------------

Test de corrélation entre 'IDH 2022' et 'pve':


Coefficient de corrélation : 0.5294
p-value : 6.4857e-05
Conclusion : Corrélation modérée et significative.
--------------------------------------------------

Test de corrélation entre 'IDH 2022' et 'gee':


Coefficient de corrélation : 0.5732

10
p-value : 1.1014e-05
Conclusion : Corrélation modérée et significative.
--------------------------------------------------

Test de corrélation entre 'IDH 2022' et 'rqe':


Coefficient de corrélation : 0.4525
p-value : 8.5768e-04
Conclusion : Corrélation faible mais significative.
--------------------------------------------------

Test de corrélation entre 'IDH 2022' et 'rle':


Coefficient de corrélation : 0.5324
p-value : 5.7952e-05

11
Conclusion : Corrélation modérée et significative.
--------------------------------------------------

Test de corrélation entre 'IDH 2022' et 'cce':


Coefficient de corrélation : 0.4809
p-value : 3.5427e-04
Conclusion : Corrélation faible mais significative.
--------------------------------------------------

Test de corrélation entre 'IDH 2022' et 'IBG':


Coefficient de corrélation : 0.5415
p-value : 4.0772e-05
Conclusion : Corrélation modérée et significative.

12
--------------------------------------------------
Un heatmap (matrice de correlations) ou un cercle de correlations permettraient de visualiser toutes
les correlations lineaires entre les variables.

5 3. Statistiques descriptives avancées


Analyse des correlations entre les variables numeriques quantitatives.
Pour ce faire, nous allons realiser une ACP, puis commenter brievement ce cercle de correlations
des variables.

[69]: [Link]

[69]: Index(['code_pays', 'vae', 'pve', 'gee', 'rqe', 'rle', 'cce', 'IDH 2022',
'Niveau_dev', 'IBG', 'Niveau_gouv'],
dtype='object')

[70]: # On renomme les lignes selon le nom des pays correspondants


Base.set_index('pays', inplace=True)

# Séparation des variables actives et supplémentaires


var_actives = [Link](columns=['IDH 2022', 'Niveau_dev', 'code_pays'])
var_sup = Base[['IDH 2022']] # Variable supplémentaire.

# Normalisation des variables actives (centrage-réduction)


scaler = StandardScaler()
X_scaled = scaler.fit_transform(var_actives)

# Conversion optionnelle en DataFrame pour meilleure lisibilité


X_scaled = [Link](X_scaled,
columns=var_actives.columns,
index=[Link])
# Ajout des variables supplémentaires pour l'analyse
acp_df = var_actives.join(var_sup)

---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_1464\[Link] in ?()
1 # On renomme les lignes selon le nom des pays correspondants
----> 2 Base.set_index('pays', inplace=True)
3
4 # Séparation des variables actives et supplémentaires
5 var_actives = [Link](columns=['IDH 2022', 'Niveau_dev', 'code_pays'])

c:\ProgramData\anaconda3\Lib\site-packages\pandas\core\[Link] in ?(self, keys,␣


↪drop, append, inplace, verify_integrity)

6118 if not found:

13
6119 [Link](col)
6120
6121 if missing:
-> 6122 raise KeyError(f"None of {missing} are in the columns")
6123
6124 if inplace:
6125 frame = self

KeyError: "None of ['pays'] are in the columns"

[ ]: var_actives.head(5)

[ ]: vae pve gee rqe rle cce


pays
Angola -0.797131 -0.646241 -1.040429 -0.606699 -1.021905 -0.601941
Burundi -1.387993 -1.188869 -1.262841 -0.947486 -1.277140 -1.518142
Benin -0.348291 -0.349461 -0.164296 -0.348365 -0.602390 -0.124256
Burkina Faso -0.633902 -1.782517 -0.825155 -0.468306 -0.607679 -0.083611
Botswana 0.446498 1.077516 0.463997 0.621044 0.467351 0.661455

[ ]: #Scree-plot
# Appliquer PCA
pca = PCA()
X_pca= [Link](X_scaled)

# Tracer le scree plot


[Link](figsize=(12, 4))
[Link](range(1, len(pca.explained_variance_ratio_) + 1), pca.
↪explained_variance_ratio_, marker='o', linestyle='-')

[Link]('Diagramme des valeurs propres')


[Link]('Composante Principale')
[Link]('Variance expliquée')
[Link](range(1, len(pca.explained_variance_ratio_) + 1))
[Link](True)
[Link]()

14
On observe une cassure (ou changement de pente) a partir de la deuxieme dimension. Les deux
premieres dimensions permettent donc restituer l’essentiel de l’information contenue dans le jeu de
données de depart.

[ ]: # Variance cumulee
# Calculer la variance cumulée
cumulative_variance = [Link](pca.explained_variance_ratio_)
# Plot de la variance cumulée
[Link](1, 2, 2)
[Link](range(1, len(cumulative_variance) + 1), cumulative_variance,␣
↪marker='o', linestyle='-', color='red')

[Link]('Variance Cumulée')
[Link]('Composante Principale')
[Link]('Variance Cumulée (%)')
[Link](range(1, len(cumulative_variance) + 1))
[Link](True)

15
Les deux premieres dimensions cumulent 90% de la variance expliquée du jeu de données. La
premiere dimension a elle seule restitue plus de 80% de la variabilité des données, elle constitue
donc un indicateur de la qualité de gouvernance. (Asselin, 2005).
Nous allons recuperer les coordonnées des individus sur le premier facteur, puis les standardiser
par Min-Max, pour obtenir un indicateur de qualité de gouvernance au sens de Asselin, 2005.

[ ]: # Extraction des coordonnées sur le premier facteur


pca = PCA(n_components=2) # Choisir 2 composantes principales
X_pca = pca.fit_transform(X_scaled)

# Extraction des coordonnées sur le premier facteur


coordonnees_premier_facteur = X_pca[:, 0]

# Affichage des résultats


coordonnees_df = [Link](coordonnees_premier_facteur, columns=["IBG"])

# Min-Max normalisation
min_val = [Link](coordonnees_premier_facteur)
max_val = [Link](coordonnees_premier_facteur)

16
coordonnees_normalisees = (coordonnees_premier_facteur - min_val) / (max_val -␣
↪min_val)

coordonnees_normalisees_df = [Link](coordonnees_normalisees,␣
↪columns=["IBG"])

# Ajout des coordonnées normalisées comme nouvelle colonne


Base["IBG"] = coordonnees_normalisees

# On cree une variable categorielle Niveau_gouv, qui prend la modalité "Faible"␣


↪si IBG<0,5. Moyen si 0,5<=IBG<=0,7 et Elévé si IBG>0,7.

Base["Niveau_gouv"] = [Link](
Base["IBG"],
bins=[-[Link], 0.5, 0.7, [Link]],
labels=["Faible", "Moyen", "Élevé"]
)
Base_triee= Base.sort_values(by='IBG', ascending=False)
Base_triee.head(10) #pour afficher les 10 meilleurs pays d'Afrique en matiere␣
↪de bonne gouvernance en 2022, selon notre indicateur.

[ ]: code_pays vae pve gee rqe rle \


pays
Mauritius MUS 0.601032 0.835722 0.750285 1.166106 0.799989
Seychelles SYC 0.597845 0.756404 0.662167 0.327583 0.460203
Botswana BWA 0.446498 1.077516 0.463997 0.621044 0.467351
Cape Verde CPV 0.935108 0.929428 -0.026203 0.263682 0.365232
Namibia NAM 0.561278 0.556306 0.039500 -0.015001 0.404544
Rwanda RWA -0.930956 0.030514 0.232486 0.162930 0.146466
Ghana GHA 0.394974 -0.065913 -0.062546 -0.178819 -0.076320
South Africa ZAF 0.707014 -0.722118 -0.125318 -0.185126 0.019737
Senegal SEN 0.164924 -0.153299 -0.001249 -0.296521 -0.262500
Morocco MAR -0.560848 -0.319889 -0.131650 -0.086890 -0.197303

cce IDH 2022 Niveau_dev IBG Niveau_gouv


pays
Mauritius 0.412719 0.802 élévé 1.000000 Élevé
Seychelles 1.698149 0.796 élévé 0.986198 Élevé
Botswana 0.661455 0.693 Moyen 0.937324 Élevé
Cape Verde 0.983123 0.676 Moyen 0.914554 Élevé
Namibia 0.215328 0.617 Moyen 0.822373 Élevé
Rwanda 0.561203 0.536 Moyen 0.746399 Élevé
Ghana -0.045995 0.632 Moyen 0.722420 Élevé
South Africa -0.319765 0.713 élévé 0.699904 Moyen
Senegal -0.028728 0.505 Moyen 0.690398 Moyen
Morocco -0.357443 0.683 Moyen 0.634977 Moyen

Plot des individus.

17
[ ]: # Récupérer les scores des individus.
pca = PCA(n_components=2)

scores = pca.fit_transform(X_pca)
# Plot des individus (projections sur les 2 premières composantes principales)
[Link](figsize=(12, 8))
[Link](scores[:, 0], scores[:, 1], color='green', label='Individus')

# Ajouter des labels pour chaque point


for i, txt in enumerate([Link]):
[Link](scores[i, 0], scores[i, 1], str(txt), fontsize=12)

[Link]('Plot des Individus (PCA)')


[Link]('Composante Principale 1')
[Link]('Composante Principale 2')
[Link](True)
[Link]()

[ ]: # Récupération des coefficients (vecteurs propres)


coefficients = pca.components_.T

def plot_correlation_circle(coefficients, labels):


[Link](figsize=(8, 6))

18
[Link](0, color='grey', linestyle='--')
[Link](0, color='grey', linestyle='--')

# Trace le cercle
circle = [Link]((0, 0), 1, color='blue', fill=False, linestyle='-')
[Link]().add_artist(circle)

# Ajoute les flèches pour chaque variable


for i in range([Link][0]):
[Link](0, 0, coefficients[i, 0], coefficients[i, 1],
head_width=0.03, head_length=0.05, color='blue')
[Link](coefficients[i, 0], coefficients[i, 1], labels[i],
fontsize=12, ha='center', va='center')

[Link](-1.1, 1.1)
[Link](-1.1, 1.1)
[Link]('Composante 1')
[Link]('Composante 2')
[Link]('Cercle de Corrélation')
[Link]()

# Trace le cercle de corrélation


plot_correlation_circle(coefficients, var_actives.columns)

19
Interprétation :

6 Matrice de correlation
[ ]: # Sélection des colonnes numériques
col_num = Base.select_dtypes(include=[[Link]])

# Calcul de la matrice de corrélation


matrice_correlation = col_num.corr()

# Visualisation avec une heatmap


[Link](figsize=(12, 6)) # Taille de la figure
[Link](matrice_correlation, annot=True, cmap='coolwarm', vmin=-1, vmax=1,␣
↪linewidths=0.5, fmt='.2f')

# Ajouter un titre à la heatmap


[Link]("Matrice de Corrélation")
[Link]()

20
Interprétation : La matrice de correlation confirme bien la forte correlation entre les variables de
bonne gouvernance, avec des coefficients de correlation de Pearson superieur a 0,7. Cependant, les
correlations entre l’IDH et les indicateurs de gouvernance sont assez faibles, voire faibles (inferieur
a 0,5 voire meme inferieur a 0,4).

7 4. Tests statistiques
[ ]: # Test de normalité : sur l'indicateur de bonne gouvernance (IBG)

# Test de Shapiro-Wilk
stat, p_value = shapiro(Base_triee['IBG'])
print("Statistique du test:", round(stat,3))
print("p-value:", round(p_value,3))

if p_value > 0.05:


print("La distribution est normale (on ne rejette pas H0)")
else:
print("La distribution n'est pas normale (on rejette H0)")

Statistique du test: 0.976


p-value: 0.381
La distribution est normale (on ne rejette pas H0)

[ ]: [Link](Base_triee['IBG'], bins=15, density=True, alpha=0.5, color='skyblue',␣


↪edgecolor='black')

21
# Titre et étiquettes
[Link]("Histogramme de l'indicateur IBG")
[Link]("IBG")
[Link]("Nombre de pays")
[Link]()

[ ]: [Link](figsize=(8, 6)) # Taille de la figure


[Link](data=Base['IBG'], palette="Set2")

# Ajoute un titre et personnaliser les axes


[Link]("Boxplot de l'indicateur de bonne gouvernance", fontsize=10)
[Link]("IBG", fontsize=10)

# Affiche le graphique
[Link]()

C:\Users\LENOVO T470S\AppData\Local\Temp\ipykernel_1464\[Link]:
FutureWarning:

Passing `palette` without assigning `hue` is deprecated and will be removed in

22
v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same
effect.

[Link](data=Base['IBG'], palette="Set2")

[ ]: #Test de comparaison de deux groupes.

# Constitution des groupes


groupe_1 = [Link][Base["Niveau_dev"] == "élévé", "IBG"] # Les valeurs de␣
↪l'indicateur IBG pour tous les pays ayant un niveau de developpement élévé.

groupe_2 = [Link][Base["Niveau_dev"] != "élévé", "IBG"] # Les valeurs de␣


↪l'indicateur IBG pour tous les pays n'ayant pas un niveau de developpement␣

↪élévé.

# Test de Mann-Whitney
stat, p_value = mannwhitneyu(groupe_1, groupe_2, alternative="two-sided")

print("Statistique de test Mann-Whitney :", stat)


print("p-value :", round(p_value,3))

if p_value < 0.05:

23
print("Différence significative entre les deux groupes.")
else:
print("Pas de différence significative entre les deux groupes.")

Statistique de test Mann-Whitney : 191.0


p-value : 0.325
Pas de différence significative entre les deux groupes.
Le test de Mann-Whitney indique qu’il n’y a pas de difference significative de gouvernance entre
les pays ayant un niveau de developpement élévé et ceux n’ayant pas (moyen ou faible) un niveau
de developpement élévé, seuil de 5%.
Test d’indépendance entre les variables ‘Niveau_dev’ (Niveau de développement) et ‘Niveau_gouv’
(Niveau de gouvernance)

[ ]: # Création de la table de contingence


table_cont = [Link](Base["Niveau_dev"], Base["Niveau_gouv"])
print("Table de contingence :")
print(table_cont)

# Test du Chi-carré
chi2_stat, p_value, dof, expected = chi2_contingency(table_cont)

print("\nStatistique du Chi-carré :", round(chi2_stat,3))


print("p-value :", round(p_value,3))
print("Degrés de liberté :", dof)
print("Table attendue :\n", expected)

Table de contingence :
Niveau_gouv Faible Moyen Élevé
Niveau_dev
Faible 12 0 0
Moyen 15 12 5
élévé 4 1 2

Statistique du Chi-carré : 12.139


p-value : 0.016
Degrés de liberté : 4
Table attendue :
[[ 7.29411765 3.05882353 1.64705882]
[19.45098039 8.15686275 4.39215686]
[ 4.25490196 1.78431373 0.96078431]]
Le test statistique de Chi-carré permet de conclure que le niveau de développement est statistique-
ment associé au niveau de gouvernance, au seuil de 5%.

[ ]: # Création de la table de profilage (pourcentages ligne)


table_profil = [Link](Base["Niveau_gouv"], Base["Niveau_dev"],␣
↪normalize="index") * 100

24
# Arrondi des valeurs pour une meilleure lisibilité
table_profil = table_profil.round(2)

# Affichage du tableau de profilage


print("Tableau de profilage: Niveau (%) : Niveau de developpement par niveau de␣
↪gouvernance\n", table_profil)

Tableau de profilage: Niveau (%) : Niveau de developpement par niveau de


gouvernance
Niveau_dev Faible Moyen élévé
Niveau_gouv
Faible 38.71 48.39 12.90
Moyen 0.00 92.31 7.69
Élevé 0.00 71.43 28.57

[ ]: # Création du graphique en barres empilées


ax = table_profil.plot(kind="bar", stacked=True, figsize=(10, 6),␣
↪colormap="viridis")

# Personnalisation du graphique
[Link]('Profilage des niveaux de développement par niveaux de gouvernance',␣
↪fontsize=14)

[Link]('Niveau de Gouvernance', fontsize=12)


[Link]('Pourcentage', fontsize=12)
[Link](title="Niveau de Développement", bbox_to_anchor=(1.05, 1),␣
↪loc='upper left', title_fontsize=12)

[Link](rotation=0)
plt.tight_layout()

# Affichage du graphique
[Link]()

25
8 Calcul et interprétation d un intervalle de confiance pour une
moyenne: On prend l’indicateur de bonne gouvernance (IBG)
[ ]: data = Base['IBG']

# Calcul de la moyenne et de l'écart-type


moyenne = [Link]()
ecart_type = [Link]()
taille = len(data)

# Niveau de confiance
niveau_confiance = 0.95
alpha = 1 - niveau_confiance

t_score = [Link](1 - alpha / 2, df=taille - 1)

# Calcul de la marge d'erreur


marge_erreur_t = t_score * (ecart_type/ [Link](taille))

# Intervalle de confiance
ic_inf_t = moyenne - marge_erreur_t
ic_sup_t = moyenne + marge_erreur_t

# Affichage des résultats

26
print(f"Intervalle de confiance à 95% pour IBG : [{ic_inf_t:.2f}, {ic_sup_t:.
↪2f}]")

Intervalle de confiance à 95% pour IBG : [0.43, 0.55]


Interprétation: La valeur estimée de l’indice de bonne gouvernance (IBG) d’un pays africain quel-
conque en 2022 se situe entre 0.43 et 0.55, au seuil de 5%. Soit, 95% des valeurs de l’indicateur
se situe entre ces bornes. Cela indique donc que 95% des pays africains presentent un niveau de
gouvernance moyen ou faible.

[ ]: !jupyter nbconvert "C:/Users/ANSD/Documents/KEBJAM/Python/PROJET DE PYTHON.


↪ipynb" --to pdf

27

Vous aimerez peut-être aussi