Байесовские модели предлагают метод вероятностных прогнозов состояния мира. Ключевые преимущества перед частотной структурой включают способность включать априорную информацию в анализ, оценивать недостающие значения вместе со значениями параметров и делать заявления о вероятности определенной гипотезы. Корень байесовской магии находится в теореме Байеса, описывающей условную вероятность события. Эта статья не является теоретическим объяснением байесовской статистики, а скорее пошаговым руководством по построению вашей первой байесовской модели на R.Если вы не знакомы с байесовской структурой, вероятно, лучше всего будет прочитать вводное чтение перед работой. через эту статью. Чтобы узнать больше о байесовской статистике, Мэт Леонард предлагает несколько замечательных идей.

Мы собираемся смоделировать теоретическую стоимость оборудования для сотового телефона (которое со временем становится экспоненциально дешевле). Я смоделировал некоторые данные, используя уравнение экспоненциального затухания:

Pt - цена в момент времени t, 3000 долларов плюс b0 - это начальная цена при t = 0, Z - скорость снижения, а b0 - это минимальная асимптотическая цена. Я добавил шума в отношения, чтобы сделать их более реалистичными; вы можете скачать код и данные для этого упражнения здесь.

[Статья по теме: байесовская оценка, сравнение групп и рабочий процесс]

Взгляните на данные, они должны напоминать график ниже. Истинные значения Z и b0 равны 0,003 и 500 соответственно.

Приступим к моделированию. Для начала нам понадобятся следующие пакеты. Эта модель будет построена с использованием «rjags», интерфейса R для JAGS (Just Another Gibbs Sampler), который поддерживает байесовское моделирование. Мы также будем использовать функции из пакетов R2OpenBugs и coda для поддержки процессов компиляции модели и MCMC. MCMCvis поможет нам подвести итоги работы MCMC.

Мы собираемся оценить b0 (асимптоту) и Z (скорость снижения), настроив модель под названием «mod». Поскольку это байесовская модель, нам придется придумать некоторые априорные значения, не зависящие от данных. В этом случае у нас нет никаких предварительных знаний, поэтому мы будем использовать расплывчатые априорные значения. Мы определим расплывчатые априорные значения, используя нормальное распределение с очень большим стандартным отклонением. В R2OpenBugs (пакет, с помощью которого написана эта модель) нормальные распределения определяются с помощью «dnorm» с учетом аргументов mu и точности (1 / дисперсия). Мы сделали точность очень маленькой, чтобы подчеркнуть отсутствие предварительной информации. Мы также будем оценивать меру вариации (точности) распределения ошибок выборки «тау». Поскольку «тау» представляет точность, он моделируется как 1 / дисперсия.

Далее мы построим функцию правдоподобия. Напомню, что вероятность - это вероятность получения данных при определенном значении параметра. У нас есть три компонента правдоподобия в этой модели: 1) детерминированный компонент, оценивающий параметр mu из нашей независимой переменной Time с учетом уравнения экспоненциального затухания с параметрами Z и b0, 2) стохастический компонент, связывающий переменную отклика Price с mu при нормальном распределении ошибка выборки и 3) компонент для отслеживания цены, прогнозируемой моделью.

Затем мы напишем модель в OpenBugs и установим гиперпараметры для процесса MCMC. Мы будем оценивать случайные величины tau, Z, b0 и Price_pred. Вы можете настроить гиперпараметры (количество итераций, интервал приработки, интервал прореживания и т. Д.), Чтобы обеспечить сходимость модели. Мы не будем здесь углубляться в настройку гиперпараметров, но вы можете узнать больше здесь.

Сначала мы скомпилируем модель как «jags.model», а затем воспользуемся «update» для итерации через интервал выгорания. Наконец, мы будем использовать coda.samples для получения выборок из апостериорных распределений наших параметров с помощью MCMC.

На этом процесс MCMC завершен, теперь мы оценим конвергенцию и посмотрим на результаты.

В приведенном выше коде мы сначала создаем график трассировки для двух параметров, которые нас больше всего интересуют, b0 и Z.

Апостериорные распределения выглядят относительно гладкими, а график трассировки показывает достаточное перемешивание цепочек, все это хорошие признаки сходимости! Мы также будем использовать диагностику Гельмана и Рубина для оценки степени перемешивания цепей; мы хотим, чтобы многовариантный потенциальный коэффициент уменьшения масштаба (PSRF) был около 1.

С помощью вызова MCMCsummary мы можем увидеть средние и вероятные границы интервалов для каждого из интересующих нас апостериорных распределений.

Обладая приведенной выше информацией, мы можем делать такие утверждения, как «существует 95% -ная вероятность того, что значение параметра для b0 составляет от 490 до 510 долларов США». Среднее значение апостериорных распределений соответствует действительным значениям для b0 и Z (500 и 0,003 соответственно). Отлично, затем мы можем построить прогнозы модели и посмотреть, как они соотносятся с наблюдаемыми значениями.

Неудивительно, что модель очень хорошо предсказывает цену без видимой закономерности в остатках.

Это простое и ограниченное введение в байесовское моделирование. Вы можете найти код и данные для этого упражнения здесь.

Оригинальный пост здесь.

Прочтите больше статей по науке о данных на OpenDataScience.com, включая учебные пособия и руководства от новичка до продвинутого уровня! Подпишитесь на нашу еженедельную рассылку здесь и получайте последние новости каждый четверг.