Ocena wyników BMI
Jaka jest różnica w przewidywanym postępie choroby (zmienna odpowiedzi y) między pacjentami z najwyższym 10% BMI a tymi z najniższym 10% BMI? Odpowiedź na to pytanie uzyskasz, korzystając z wyników symulacji opartej na wielowymiarowym rozkładzie normalnym!
Symulacja została już wykonana: twoim zadaniem jest ocena jej wyników zapisanych w df_results.
Następujące biblioteki zostały już zaimportowane: pandas jako pd, numpy jako np oraz scipy.stats jako st.
To ćwiczenie jest częścią kursu
Symulacje Monte Carlo w Pythonie
Instrukcje do ćwiczenia
- Użyj
np.quantile(), aby obliczyć 10. i 90. kwantyl kolumnybmiw wynikach symulacji i zapisz je jakobmi_q10orazbmi_q90. - Użyj
bmi_q10ibmi_q90do przefiltrowaniadf_summaryi uzyskania przewidywanych wartości y.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)