R, интервал HPD (Наивысшая апостериорная плотность) на основе выборок апостериорных данных, WinBUGS - PullRequest
0 голосов
/ 11 июля 2020

Как рассчитать интервал HPD (самая высокая апостериорная плотность) из апостериорных образцов? У меня есть четыре параметра, и я генерирую 1000 выборок из распределения апостериорных параметров. Теперь Как рассчитать HPD в программном обеспечении R. Я использовал код пакета. Но у меня возникла ошибка:

    HPDinterval(winbugsresult$sims.list,prob=0.05)
    Error in UseMethod("HPDinterval") : 
    no applicable method for 'HPDinterval' applied to an object of class "list"

, где «winbugsresult» - это список, содержащий апостериорные образцы.

Я также использовал вектор, который получил следующую ошибку

    HPDinterval(winbugsresult$sims.list$alpha ,prob=0.05)
    Error in UseMethod("HPDinterval") : 
    no applicable method for 'HPDinterval' applied to an object of class "c('double', 'numeric')"

Я использовал просто случайный вектор из нормального и снова получил ошибку

    HPDinterval(rnorm(100))
    Error in UseMethod("HPDinterval") : 
    no applicable method for 'HPDinterval' applied to an object of class "c('double', 'numeric')"

1 Ответ

1 голос
/ 11 июля 2020

Я не совсем уверен, какова структура winbugsresult$sims.list (вы можете отредактировать свой ответ, включив str(winbugsresult$sims.list)), но преобразовав числовую c вектор или матрицу с as.mcmc() дает вам объект, который вы можете передать в HPDinterval, например

library(coda)
HPDinterval(as.mcmc(rnorm(1000)))
HPDinterval(as.mcmc(matrix(rnorm(1000),ncol=10)))  # matrix
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...