Analyse exploratoire#

Import des outils / jeu de données#

1import matplotlib.pyplot as plt
2import pandas as pd
3import seaborn as sns
4
5from src.utils import init_notebook
1init_notebook()
1df = pd.read_csv(
2    "data/kickstarter_1.csv",
3    parse_dates=True,
4)

Présentation#

Plan de la présentation

1) Introduction

  • présentation du jeu de données

  • modélisation sous forme d’analyse de survie

  • définition de la problématique

2) Estimation univariée

  • Non-paramétrique

  • Paramétrique

3) Régression multivariée

  • Non-paramétrique

  • Paramétrique

  • Machine Learning

4) Conclusion

  • réponse à la problématique

Jeu de données#

Le jeu de données contient une liste de 18 143 projets Kickstarter menés entre le 15 décembre 2013 et le 15 juin 2014.

Pour chaque projet, nous disposons notamment de :

  • quand son objectif a été atteint: day_succ

  • si l’objectif a été atteint: Status

  • si le projet dispose d’une vidéo promotionnelle : has_video

  • l’objectif financier: goal

  • si le projet a un compte facebook: facebook_connected

  • le nombre de followers du projet: facebook_friends

  • le nombre de financeurs: backers

  • la catégorie du projet (art, cuisine, technologie, …): cat

  • etc.

Il est important de préciser que le jeu de données a été mis à l’échelle pour les variables quantitatives (scaling), d’où des valeurs décimales pour des variables entières.

Modélisation#

  • \(T\) : variable aléatoire modélisant la date de financement (succès du projet).

  • fonction de survie \(P(T > t)\) : probabilité que le projet n’ait pas encore été financé au temps \(t\)

  • censure (à droite) : les projets n’ont pas été financé dans le temps imparti (mais auraient pu être financés s’ils avaient eu plus de temps)

Présentation des variables#

1print(
2    f"Il y a {df.shape[1]} variables "
3    f"qui décrivent {df.shape[0]} projets kickstarter."
4)
Il y a 56 variables qui décrivent 4175 projets kickstarter.
1# df.info()

Nous séparons les variables numériques des variables catégoriques pour plus de commodités.

1var_categoriques = (
2    [f"cat{i}" for i in range(1, 16)]
3    + [f"curr{i}" for i in range(1, 7)]
4    + ["Status", "facebook_connected", "has_video"]
5)
1var_numeriques = df.columns

Nous convertissons les variables catégoriques en type category. (Nous les convertissons au préalable en type string car cela facilite l’affichage de la légende avec Matplotlib et Seaborn)

1df[var_categoriques] = df[var_categoriques].astype(str).astype("category")

Nous convertissons les variables au format date.

Nous avons 11 variables catégoriques, 16 variables quantitatives (dont 15 entières) ainsi qu’une variable de type date.

Visualisations#

1sns.histplot(df["day_succ"])
<Axes: xlabel='day_succ', ylabel='Count'>
../_images/13ffe37d01d485861796fbce6005b12649d144f626a6183cdec778216ff4dfd5.png
1plt.title("Répartition des projets")
2
3sns.histplot(df["Status"])
4
5plt.xticks([0, 1], ["Censuré", "Financé dans le temps imparti"])
6plt.xlabel("Statut des projets", labelpad=15)  # labelpad add vertical space
Text(0.5, 0, 'Statut des projets')
../_images/c3a3329d91506b24a9e6c934aa692bc318563b910252307e475bf8c2cb08d8c0.png

Problématique#

Voici les deux questions qui guident notre projet :

1) Peut-on prédire si un projet sera financé ? À quelle date ?

2) Quel est l’impact d’une vidéo promotionnelle sur le succès d’un projet ?

1plt.title(
2    "Répartition des vidéos promotionnelles :\nle projet dispose-t-il d'une vidéo ?"
3)
4
5sns.histplot(df["has_video"], stat="proportion")
6
7plt.xticks([0, 1], ["pas de vidéo", "vidéo"])
8plt.show()
../_images/a01b685a7d408b92074e8235464d7a523543f0e02628d73ed60765adced98257.png
1# old problematic # Dans une première **analyse univariée**, nous chercherons à **modéliser la fonction de survie du financement d'un projet Kickstarter**, c'est-à-dire la probabilité que le projet n'ait pas encore été financé, en fonction de sa durée de vie, en jours. # # Dans une deuxième **analyse multivariée**, nous déterminerons **comment les différents paramètres des projets Kickstarter influencent-ils la durée nécessaire pour atteindre leur objectif** de financement ou leur échec dans le temps imparti ?