BMIによるアウトカムの評価
BMIの上位10%にいる患者と下位10%にいる患者では、予測される疾患進行(応答、y)にどれくらい差がありますか? 多変量正規分布からサンプリングしたシミュレーション結果を使って、この問いに答えます。
シミュレーション実行はすでに済んでいます。あなたのタスクは、df_results にあるシミュレーション結果を評価することです。
次のライブラリはインポート済みです:pandas は pd、numpy は np、scipy.stats は st。
この演習はコースの一部です
Pythonで学ぶモンテカルロ・シミュレーション
演習の手順
np.quantile()を使って、シミュレーション結果のbmiの10パーセンタイルと90パーセンタイルを計算し、それぞれbmi_q10とbmi_q90に代入します。bmi_q10とbmi_q90を使ってdf_summaryをフィルタし、予測された y の値を取得します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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)