Выборка из распределения Wishart с p-1 <df <p в R - PullRequest
0 голосов
/ 14 апреля 2019

Мне нужно выбрать матрицу из распределения Вишарта со степенями свободы, меньшими, чем размерность матрицы масштаба.Я изо всех сил пытаюсь найти функцию R., которая позволяет это.

Для распределения Уишарта, степени свободы (назовите их df или v) должны быть больше, чем размерность шкалыматрица (скажем, p) минус 1 (то есть df> p - 1 ) (см. https://en.wikipedia.org/wiki/Wishart_distribution или любое руководство по распространению Wishart).Однако, когда я пытаюсь сэмплировать из дистрибутива wishart с p-1 , скажем, W (df = 1.1, I_p), где I_p - единичная матрица pxp, я получаю ошибки с указанием несоответствие степеней свободы .

Скажите, что p = 2, я хочу взять образцы из различных распределений Уишарта с df между 1 и 2 (исключено), но

stats::rWishart(n = 1, df = 1.1, Sigma = diag(2)) # does not work
MCMCpack::rwish(v = 1.1, S = diag(2)) # does not work

не работают.

Я думал, что проблема могла заключаться в нецелых степенях свободы, но

stats::rWishart(n = 1, df = 2.1, Sigma = diag(2))
MCMCpack::rwish(v = 2.1, S = diag(2))

работают без проблем.

Я нашел

  rWishart::rWishart(1, df = 1.1, Sigma = diag(2)) # works

, который работает, но не работает, если 1,5 =

  rWishart::rWishart(1, df = 1.5, Sigma = diag(2)) # does not works

Я хотел бы найти способ в R для выборки из дистрибутива Wishart, который имеет какой-либостепени свободы больше, чем p-1, но меньше, чем p (p-1

1 Ответ

0 голосов
/ 15 апреля 2019

Насколько я знаю, matrixsampling - единственный пакет, предлагающий такую ​​возможность (я его автор).

library(matrixsampling)
rwishart(3, nu = 1.1, Sigma = diag(2))
# , , 1
# 
#            [,1]      [,2]
# [1,]  0.7679333 -1.051319
# [2,] -1.0513191  1.439281
# 
# , , 2
# 
#            [,1]       [,2]
# [1,]  1.8536154 -0.9059983
# [2,] -0.9059983  0.4449708
# 
# , , 3
# 
#           [,1]      [,2]
# [1,] 0.9309460 0.6026472
# [2,] 0.6026472 0.3901232

Если вы действительно хотите сделать выборку с использованием матрицы тождеств в качестве матрицы масштаба Sigma, вы можете сделать:

matrixsampling:::rwishart_I(3, nu = 1.1, p = 2)

(если честно, я не помню, что я сделал, но это должно быть более эффективным).

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