Как мне найти код C ++ для пакета R? - PullRequest
0 голосов
/ 10 марта 2020

Рассмотрите возможность установки модели локального уровня Student-t в R с использованием пакета bsts:

library(bsts)
y <- rnorm(100)
ss <- AddLocalLevel(list(), y)
mod <- bsts(y, state.specification = ss, family='student', niter=500)

После подгонки модели объект mod имеет атрибуты mod$sigma.level и mod$observation.df каждый из которых содержит niter=500 dr aws дисперсии и степени свободы для уравнения наблюдения соответственно.

Может кто-нибудь помочь мне найти исходный код, который генерирует 500 др aws для mod$sigma.level и mod$observation.df? Кажется, это скрыто в коде C ++, но я не могу найти его в архиве пакетов на CRAN. Мы будем благодарны за любые рекомендации - вам не нужно ничего знать об этой конкретной модели c.

1 Ответ

2 голосов
/ 10 марта 2020

Как указывает @ Mr.Rlover, исходный код указан здесь . Если вы проследите его, вы обнаружите, что генератор случайных чисел происходит из одноэлементного класса C ++ с именем RNG, определенного в библиотеке BOOM, который включен в код bsts C ++ и, кажется, написан тем же автор. Класс RNG определен здесь на странице GitHub библиотеки BOOM. Если вы посмотрите на этот репозиторий, вы найдете множество функций C ++, вызываемых в bsts.

. Если вы прочитаете определение для RNG, то генератор случайных чисел, в конечном счете, будет зависеть от стандартной библиотеки C ++. реализация алгоритма Мерсенна Твистера с использованием 64-битных чисел и размером состояния 19937 бит, std::mt19937_64. Вы можете узнать больше об этом, включая детали реализации, здесь

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