Как определить нижнюю и верхнюю границу для разных переменных в пакете BRMS в R? - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь запустить байесовскую регрессию c для данных панели домохозяйств (огромный набор данных с> 1,2 миллиона строк) с использованием пакета BRMS R. Мой код такой:

my_prior <- c(prior(beta(2,30),class='b',coef='X1'),
              prior(beta(10,30),class='b',coef='X2'))

model <- brm(data=train,family='bernoulli',Y ~ X1+X2,
prior = my_prior,warmup = 3000,chains = 5,cores=5,seed=12345,iter=5000)

Это дает ниже ошибка:

Rejecting initial value:
Chain 1:   Error evaluating the log probability at the initial value.
Chain 1: Exception: beta_lpdf: Random variable is -0.243779, but must be >= 0!  (in 'model31883818b7d_f587f3632d3e0a9838716955c8523c09' at line 31)

Несмотря на то, что я дал бета-априоры для X1 и X2 (это должно ограничивать значение от 0 до 1 в зависимости от свойства бета-распределения), переменная инициализируется с выходящими значениями и выдает ошибку.

Далее я указал нижнюю и верхнюю границу для параметров, как показано ниже:

my_prior <- c (предыдущая (бета (2,30), класс = 'b', coef = 'X1) ', <strong>lb = 0, ub = 1 ), предшествующий (бета (10,30), класс =' b ', coef =' X2 '))

Выдает ошибку, как показано ниже :

Coef may not be specified using boundaries

Кто-нибудь может мне помочь, как задать границы (разные для разных параметров)?

Я даже использовал Rstan и jags, но они занимают много времени на таком огромном наборе данных.

...