Выборка Гиббса в R: Ошибка Количество переменных в начальных значениях НЕ соответствует no_var - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть выборка из 50 случайных величин, которая следует гамма (5,5) распределению. Я сохранил вектор переменных как y, то есть y<-c(5.888242, 4.828093,.... Теперь переменные r.variable имеют два типа; тип 1 и тип 2. Я сохранил вектор типов как s i. e s<-c(1, 2, 1, 1,... Вероятность получения переменной типа 1 равна 0,7, что означает, что если длина y равна 50, то я ожидаю, что 35 переменных типа 1.

I я пытаюсь использовать метод выборки Гиббса для получения выборки длиной 35, относящейся к типу 1, а также другой выборки длины 15, относящейся к типу 2. У меня есть следующий код для получения выборки типа 1:

library(gibbs.met)
log_gamma<-dgamma(y,5, 5, log = TRUE)
gibbs_met(log_f = log_gamma,no_var = 35,
          ini_value = 0,iters = 500,
          stepsizes_met = 0.5)

Когда я запускаю приведенный выше код, я получаю сообщение об ошибке

The number of variables in initial values does NOT match no_var  

Пожалуйста, помогите, как go об этом.

С уважением.

1 Ответ

2 голосов
/ 23 апреля 2020

Прежде всего, я не знаком с gibbs_met, на самом деле я не знаю, что я здесь делаю. Но есть несколько вещей, которые нужно изменить в вашем коде для работы

gibbs_met(log_f=dgamma,
  no_var = 1,
  ini_value = 1,
  iters = 500,
  iters_met = 2,
  stepsizes_met = 0.5, 
  shape=5, rate=5, log=TRUE)

Сначала gibbs_met требуется функция log_function, поэтому вы должны предоставить фактическую функцию, а не вектор, основанную на данном распределении. Аргументы функции dgamma передаются gibbs_met, как указано выше.

Second ini_value - это вектор длины no_var. Так что либо no_var = 1 (для ini_value - число), либо ini_value = rep([startvalue],35), либо ini_value = c( ... ) длиной 35 для no_var = 35.

ini_value должна иметь вероятность> 0, поэтому [startvalue] имеет быть> 0.

В-третьих, аргумент iters_met отсутствует, поэтому я установил его на 2.

Пожалуйста, подробнее посмотрите Справочное руководство так как я не знаю, что я здесь делаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...