始める無料で始める

なぜシミュレーションが必要なのでしょうか?

前のレッスンでは、dia の平均と共分散行列を使って多変量正規分布からのシミュレーションを行いました。ここでは、そのシミュレーション結果を使って興味深い問いに答えていきます。

「履歴データがあるのに、なぜシミュレーションを行うのでしょうか? データそのものから答えを出せないのですか?」と疑問に思うかもしれません。

とても良い質問です。モンテカルロ・シミュレーションは確率分布に基づいてモデル化を行い、多数のサンプルにより「確率分布全体」を観察できる点が特徴です。これは、履歴データの限られたデータ点数とは異なります。

たとえば、「このシミュレーションに登場する糖尿病患者の age 変数の0.1パーセンタイル(0.1%点)はいくつか?」といった問いを立てられます。履歴データの dia 自体ではこの問いに答えられません。レコード数が442しかなく、千分位(一千分の一の値)を計算できないためです。代わりに、モンテカルロ・シミュレーションの結果を活用できます。今まさにそれを行いましょう。

糖尿病データセットは DataFrame dia として読み込まれており、次のライブラリがインポート済みです:pandaspdnumpynpscipy.statsst

この演習はコースの一部です

Pythonで学ぶモンテカルロ・シミュレーション

コースを見る

演習の手順

  • シミュレーション結果の tc 変数について、0.1パーセンタイル(下位1000分の1)を計算してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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()

simulation_results = st.multivariate_normal.rvs(mean=mean_dia, size=10000, cov=cov_dia)

df_results = pd.DataFrame(simulation_results, columns=["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"])

# Calculate the 0.1st quantile of the tc variable
print(____)
コードを編集して実行