Analyse de sensibilité

Simulations de Monte Carlo en Python

Izzy Weber

Curriculum Manager, DataCamp

Analyse de sensibilité

  • Aide à comprendre l'impact de l'éventail des entrées

  • Fait ressortir des schémas ou tendances via des tableaux ou graphiques

 

 

Si nous augmentons ou diminuons les valeurs de bmi et hdl par une simulation de Monte Carlo, comment évolueront les valeurs prédites de y (progression de la maladie) ?

Simulations de Monte Carlo en Python

Définir les paramètres

cov_dia = dia[["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]].cov()
mean_dia = dia[["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]].mean()
Simulations de Monte Carlo en Python

Définir la fonction de simulation

def simulate_bmi_hdl(cov_dia, mean_list):

list_ys = [] for i in range(50): simulation_results = st.multivariate_normal.rvs(mean=mean_list, size=500, cov=cov_dia) df_results = pd.DataFrame(simulation_results, columns=["age","bmi","bp","tc","ldl","hdl","tch","ltg","glu"]) predicted_y = regr_model.predict(df_results) df_y = pd.DataFrame(predicted_y, columns=["predicted_y"]) df_summary = pd.concat([df_results, df_y], axis=1) y = np.mean(df_summary["predicted_y"]) list_ys.append(y)
return(np.mean(list_ys))
Simulations de Monte Carlo en Python

Simuler avec un éventail de paramètres d'entrée

hdl = []
bmi = []
simu_y = []
for mean_hdl_inc in np.arange(-20, 50, 30): 
    for mean_bmi_inc in np.arange(-7, 11, 3):

mean_list = mean_dia + np.array([0, mean_bmi_inc, 0, 0, 0, mean_hdl_inc, 0, 0, 0]) hdl.append(mean_hdl_inc) bmi.append(mean_bmi_inc)
mean_y = simulate_bmi_hdl(cov_dia, mean_list)
simu_y.append(mean_y)
df_sa = pd.concat([pd.Series(hdl), pd.Series(bmi), pd.Series(simu_y)], axis=1)
df_sa.columns = ["hdl_inc", "bmi_inc", "y"]
Simulations de Monte Carlo en Python

DataFrames stylés : résultats de l'analyse de sensibilité

df_sa.sort_values(by=['hdl_inc', 'bmi_inc']).pivot(index='hdl_inc',
                                             columns='bmi_inc',
                                             values='y').style.background_gradient(
                                             cmap=sns.light_palette("red", as_cmap=True))

Le df_sa après tri, pivot et style

Simulations de Monte Carlo en Python

Graphique hexbin : résultats de l'analyse de sensibilité

df_sa.plot.hexbin(x='hdl_inc',y='bmi_inc', C='y',
                    reduce_C_function=np.mean,
                    gridsize=10, cmap="viridis",
                    sharex=False) 

Un hexbin de df_sa

Simulations de Monte Carlo en Python

Graphique hexbin pour un espace de paramètres dense

Simulations de Monte Carlo en Python

Passons à la pratique !

Simulations de Monte Carlo en Python

Preparing Video For Download...