Моделирование байесовской иерархической линейной регрессии (частичный опрос) с использованием PYMCPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Моделирование байесовской иерархической линейной регрессии (частичный опрос) с использованием PYMC

Сообщение Anonymous »

Набор данных:
Изображение
У меня есть набор данных по штатам США, показывающий уровень смертности от сердечно-сосудистых заболеваний в зависимости от различных характеристик, например AQI, ожирение и т. д.
Цель:
Я хочу спрогнозировать уровень смертности (значение_данных), используя заданные функции.
Модель:
Используя корреляционную матрицу, я обнаружил, что уровень смертности больше коррелирует со значениями AQI, ожирения, температуры и предыдущего года.
Итак, я определяю свою модель следующим образом:

Код: Выделить всё

import pymc as pm
import numpy as np

# Preparing the data
cleaned_data['LocationDesc_encoded'] = cleaned_data['LocationDesc'].astype('category').cat.codes

# Define the model
with pm.Model() as hierarchical_model:
# Hyperpriors for group nodes
mu_a = pm.Normal('mu_a', mu=0, sigma=1)
sigma_a = pm.HalfCauchy('sigma_a', beta=1)

# Priors for individual intercepts
a = pm.Normal('a', mu=mu_a, sigma=sigma_a, shape=len(cleaned_data['LocationDesc_encoded'].unique()))

# Hyperpriors for group slopes
mu_b = pm.Normal('mu_b', mu=0, sigma=1)
sigma_b = pm.HalfCauchy('sigma_b', beta=1)

# Priors for individual slopes
b = pm.Normal('b', mu=mu_b, sigma=sigma_b, shape=(len(cleaned_data['LocationDesc_encoded'].unique()), 4))

# Model error
sigma = pm.HalfCauchy('sigma', beta=1)

# Expected value
mu = a[cleaned_data['LocationDesc_encoded'].values] + \
b[cleaned_data['LocationDesc_encoded'].values, 0] * cleaned_data['obesity_Prevalence'] + \
b[cleaned_data['LocationDesc_encoded'].values, 1] * cleaned_data['data_value_py'] + \
b[cleaned_data['LocationDesc_encoded'].values, 2] * cleaned_data['Avg Temp(°F)'] + \
b[cleaned_data['LocationDesc_encoded'].values, 3] * cleaned_data['AQI']

# Likelihood
Y_obs = pm.Normal('Y_obs', mu=mu, sigma=sigma, observed=cleaned_data['Data_Value'])

# Sampling from the posterior distribution
trace = pm.sample(5000, tune=1000, return_inferencedata=True)

  • Правильно ли определена моя модель?
  • Мы рассчитать точность по данным испытаний. Итак, как я могу спрогнозировать значения данных (уровень смертности) для тестовых данных, чтобы я мог рассчитать RMSE?
  • Различные ресурсы рассчитывают RMSE на данные, которые они использовали для нахождения апостериорного распределения. Правильный ли способ оценки модели?


Подробнее здесь: https://stackoverflow.com/questions/786 ... using-pymc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»