rstanarm — ошибка при запуске байесовской модели

#r #bayesian #stan #rstanarm #bayesglm

Вопрос:

РЕДАКТИРОВАТЬ — мне удалось решить эту проблему. Смотрите мой комментарий ниже

Я запускаю байесовскую регрессию в R, используя rstanarm, используя установленные мной критерии, используя следующий код:

priors <- rstanarm::normal(location = c(-1, 0.5, 2), scale = c(1, 2, 0.5))

bmd <- stan_glm(s01_1 ~ pc a03 l01, data=bes19, prior = priors, iter=1000, seed=6942)

Это приводит к следующей ошибке, которую я понятия не имею, как исправить:

   Exception: mismatch in dimension declared and found in context; processing stage=data initialization; variable name=prior_scale; position=0; dims declared=(19); dims found=(3)  (in '/data/hyperparameters.stan' at line 2; included from 'model_continuous' at line 56)

failed to create the sampler; sampling not done
Error in check_stanfit(stanfit) : 
  Invalid stanfit object produced please report bug
 

Я был бы признателен за любые решения, пожалуйста. Спасибо.

Комментарии:

1. Я нашел решение — моими независимыми переменными были факторы. Достаточно было изменить их на числовые, используя as.numeric (), и теперь модель работает. Я подумал, что опубликую это на случай, если кто-нибудь еще наткнется на эту проблему.

2. Да, в общем случае аргументы location и scale для предшествующего в rstanarm должны иметь длину, равную числу коэффициентов (или быть скалярами, которые внутренне перерабатываются для применения ко всем коэффициентам). Когда некоторые из прогнозов являются факторами, количество коэффициентов для оценки этого фактора равно количеству уровней меньше единицы. Изменив три предиктора с факторов на целые числа, вы заставили их требовать только по одному коэффициенту для каждого, хотя это добавляет предположение о том, что влияние переменной линейно.