ПочатиПочніть безкоштовно

Навіщо нам потрібні симуляції?

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

Може виникнути запитання: навіщо ми робимо симуляції, якщо маємо історичні дані? Хіба не можна просто використати самі дані, щоб відповісти на потрібні запитання?

Це слушне запитання. Симуляції Монте-Карло ґрунтуються на моделюванні за допомогою імовірнісних розподілів, які дають змогу отримати весь розподіл імовірностей для аналізу (велику кількість вибірок), а не обмежену кількість спостережень, доступних в історичних даних.

Наприклад, можна запитати: який 0,1-й квантиль змінної age для пацієнтів із діабетом у нашій симуляції? Ми не можемо відповісти на це запитання, спираючись лише на історичні дані dia: оскільки в них лише 442 записи, ми не можемо обчислити тисячне за величиною значення. Натомість можна використати результати симуляції Монте-Карло — саме це ви зараз і зробите!

Набір даних про діабет завантажено як датафрейм 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(____)
Редагувати та запускати код