НачатьНачать бесплатно

Зачем нужны симуляции?

В предыдущем уроке вы построили многомерное нормальное распределение, используя вектор средних значений и ковариационную матрицу набора данных dia. Теперь вы будете отвечать на интересующие вас вопросы с помощью результатов симуляции!

Можно задаться вопросом: зачем проводить симуляции, если у нас уже есть исторические данные? Разве нельзя использовать сами данные для ответа на нужные вопросы?

Это закономерный вопрос. Метод Монте-Карло основан на моделировании с помощью вероятностных распределений, которые позволяют получить полное распределение вероятностей (большое число выборок), а не ограниченное количество точек из исторических данных.

Например, можно спросить: каков квантиль 0,1% переменной age для пациентов с диабетом в нашей симуляции? Ответить на этот вопрос, используя только исторические данные dia, не получится: в них всего 442 записи, и рассчитать тысячное значение невозможно. Зато это можно сделать с помощью результатов симуляции Монте-Карло — чем вы сейчас и займётесь!

Набор данных о диабете загружен как DataFrame dia, а следующие библиотеки уже импортированы: pandas как pd, numpy как np и scipy.stats как st.

Это упражнение является частью курса

Симуляции Монте-Карло на Python

Посмотреть курс

Инструкции к упражнению

  • Вычислите квантиль 0,1% (нижнюю тысячную часть) переменной tc в результатах симуляции.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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(____)
Редактировать и запускать код