Valutare gli esiti del BMI
Qual è la differenza nella progressione prevista della malattia (la risposta, y) tra i pazienti che sono nel 10% superiore del BMI rispetto al 10% più basso del BMI? Userai i risultati di una simulazione che campiona dalla distribuzione normale multivariata per rispondere a questa domanda!
La simulazione è già stata eseguita per te: il tuo compito è valutare i risultati della simulazione in df_results.
Sono già state importate le seguenti librerie: pandas come pd, numpy come np e scipy.stats come st.
Questo esercizio fa parte del corso
Simulazioni Monte Carlo in Python
Istruzioni dell'esercizio
- Usa
np.quantile()per calcolare il 10º e il 90º quantile dibminei risultati simulati, salvandoli comebmi_q10ebmi_q90. - Usa
bmi_q10ebmi_q90per filtraredf_summarye ottenere i valori previsti di y.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
simulation_results = st.multivariate_normal.rvs(mean=mean_dia, size=20000, 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)
# Calculate the 10th and 90th quantile of bmi in the simulated results
bmi_q10 = np.quantile(df_summary["bmi"], ____)
bmi_q90 = np.quantile(df_summary["bmi"], ____)
# Use bmi_q10 and bmi_q90 to filter df_summary and obtain predicted y values
mean_bmi_q90_outcome = np.mean(df_summary[____]["predicted_y"])
mean_bmi_q10_outcome = np.mean(df_summary[____]["predicted_y"])
y_diff = mean_bmi_q90_outcome - mean_bmi_q10_outcome
print(y_diff)