Explorer le Biais de Genre dans la Communauté Open Source : Une Analyse Prédictive avec Prophet

thumbernail ia

En m'intéressant aux contributions des femmes dans l'open source, j'ai trouvé une étude sur le biais de genre dans le processus d'approbation des Pull Requests dans les projets open source.

Cette étude, menée en 2017 par des chercheurs de l'Université d'État de Caroline du Nord, est l'une des rares qui aborde en profondeur le sujet du genre dans la contribution aux projets open source, et elle révèle des dynamiques complexes qui méritent une attention particulière.

Les chiffres clés de l’étude

L'étude a montré que les contributions de code sur GitHub faites par des femmes ont un taux d'acceptation plus élevé (78,7 %) par rapport à celles des hommes (74,6 %).

Toutefois, cette tendance s'inverse lorsque le genre de la contributrice est identifiable, menant à un taux de rejet supérieur pour les contributions féminines.

Cela indique l'existence d'un biais de genre sous-jacent au sein de la communauté. Il est particulièrement remarquable que les femmes qui contribuent à GitHub soient généralement des développeuses très qualifiées, ce qui pourrait être le résultat d'un processus de sélection exigeant et d'une auto-sélection parmi celles qui proposent des Pull Requests.

L'étude a été réalisée en adhérant scrupuleusement aux standards scientifiques et éthiques, garantissant ainsi l'intégrité de la recherche.

Un aspect clé de cette conformité a été l'anonymisation des ensembles de données, une pratique qui non seulement respecte la vie privée des participants, mais ouvre également la porte à de futures recherches.

Analyse prédictive basée sur l’IA

Dans la suite de l'article, nous allons utiliser la librairie Prophet pour réaliser une prévision des tendances futures en se basant sur les données anonymisées fournies par l'étude.

Prophet, développé par Facebook, est une librairie de prévision pour données temporelles qui est robuste face aux données manquantes et aux changements de tendance, et qui gère bien les effets saisonniers.

Méthodologie de prédiction avec Prophet

  1. Charger le jeu de données : Tout d'abord, nous devons lire le fichier CSV pour comprendre sa structure, notamment les colonnes liées aux dates et les valeurs que nous souhaitons prévoir. Ici nous allons utiliser le jeu de données numéro 3 de l'étude, ce dernier montre le taux d'acceptation des hommes et des femmes à travers le temps. Ci-dessous le format de données que nous allons utiliser.

Dataset source

Ce dataset a permis de construire le graphique ci-dessous dans l'étude initiale.

GRaphique de l'étude

  1. Préparer les données pour Prophet : Prophet nécessite que le jeu de données contienne deux colonnes nommées ds (la colonne des dates) et y (la métrique à prévoir). Nous allons donc convertir notre dataset au format CSV, puis l'ajuster. Dans notre cas, utilisons l'index comme colonne des dates (en incrémentant de 7 jours sur chaque ligne) et le taux d'acceptance des Pull Requests comme métrique.

  2. Créer et ajuster le modèle Prophet : Nous allons instancier un modèle Prophet et l'ajuster avec le jeu de données préparé. La librairie Prophet est disponible sous R et Python, ici nous allons utiliser une image Docker Python 3.7, il faut préalablement récupérer le projet sur GitHub afin de le copier dans l'image. Lors de la construction de l'image Docker, on constate jusqu'à 6Go d'utilisation de RAM et dure à peu près 5 minutes (la première fois), une fois en cours d'exécution le programme est très léger.

FROM python:3.7-stretch
RUN apt-get -y install libc-dev
RUN pip install --upgrade pip
COPY . .
WORKDIR python
RUN python -m pip install -e ".[dev, parallel]"
WORKDIR /
  1. Faire une prévision et la modéliser : Nous créerons un dataframe futur pour les dates que nous voulons prédire et utiliserons le modèle pour faire la prévision et générer un graphique.
# Import necessary libraries
from prophet import Prophet
import pandas as pd
import matplotlib.pyplot as plt

# Load the dataset from a CSV file
# Ensure the CSV has 'ds' and 'y' columns
file_path = 'render.csv'  # Update this to your file path
df = pd.read_csv(file_path)

# Check the first few rows to ensure data is loaded correctly
print(df.head())
# Assuming you've already loaded your dataset into a DataFrame df

# Initialize and fit the model
model = Prophet(daily_seasonality=True)
model.fit(df)

# Create a future dataframe for predictions
future = model.make_future_dataframe(periods=365)

# Use the model to make predictions
forecast = model.predict(future)

# Plot the forecast and save it to a file
fig = model.plot(forecast)
plt.title('Forecast plot')
fig.savefig('/usr/src/app/forecast_plot.png')  # Update this path

Ci-dessous l'exécution du script qui fait appel au modèle pour générer la prédiction et le graphique. L'exécution du programme ne dure que quelques secondes

Executer en Python

Ensuite on observce ci-dessous le graphique de prédiction généré par la programme.

Executer en Python

Conclusion

Bien que les résultats obtenus ne soient pas d'une précision irréprochable, ils demeurent néanmoins intéressants et pertinents compte tenu de la simplicité du processus de prédiction, de la faible capacité de calcul mobilisée et du volume relativement modeste de données exploitées.

Découvrez les technologies d'alter way