Генерация различных вероятностей плотности в R

При использовании чего-то вроде sample(c(rep(0, 5), 1), 6) я могу создать матрицу вроде:

item A B C D E F 1 1 0 0 0 0 0 2 0 1 0 0 0 0 3 1 0 0 0 0 0 4 0 0 0 0 1 0 5 0 0 0 0 1 0 6 0 0 1 0 0 0 7 0 0 0 1 0 0 8 0 1 0 0 0 0 9 1 0 0 0 0 0 10 0 0 0 0 1 0

По замыслу, если я генерирую большое количество элементов (строк), плотность вероятности признаков (столбцов) будет очень похожей, то есть следуйте бета-распределению (1,1):

введите здесь описание изображения

Как я могу переписать свой код R, чтобы я мог генерировать матрицы, в которых эти 6 признаков следуют различному бета-распределению, например: бета (3,3)] или бета (7,3)

введите здесь описание изображения введите здесь описание изображения


person Sergio Henriques    schedule 27.07.2018    source источник
comment
Вы видели функцию rbeta? rdocumentation.org/packages/stats/versions/3.5.1/ темы/бета-версия   -  person RLave    schedule 27.07.2018
comment
Бета-распределения непрерывны, а вы хотите создать бинарную матрицу? Почему бы вам напрямую не создать бета-распределение для каждого столбца?   -  person Stéphane Laurent    schedule 27.07.2018
comment
Где вы взяли эти картинки? Это дискретные распределения, следовательно, не бета-распределения.   -  person Stéphane Laurent    schedule 27.07.2018
comment
Вы имеете в виду бета-биномиальное распределение?   -  person Stéphane Laurent    schedule 27.07.2018
comment
Действительно, я ищу способ генерировать матрицы, плотность вероятности которых в целом соответствует бета-распределениям (для x = 0; x = 0,2, x = 0,4, x = 0,6, x = 0,8 и x = 1).   -  person Sergio Henriques    schedule 27.07.2018


Ответы (1)


Ваши дистрибутивы не являются бета-версиями. Вам нужно что-то подобное, с нужными вам вероятностями (неясно) в векторе probs:

nsims <- 10000
sims <- matrix(0, nrow=nsims, ncol=6)
colnames(sims) <- LETTERS[1:6]
probs <- c(1/12, 1/6, 1/4, 1/4, 1/6, 1/12) # "Beta(3,3)" ??????
for(i in 1:nsims){
  sims[i,sample.int(6, 1, prob=probs)] <- 1 
}

barplot(colSums(sims)/nsims)

введите здесь описание изображения

person Stéphane Laurent    schedule 27.07.2018
comment
Да, это очень близко к тому, что я хочу сделать. Я хотел бы создать матрицы 0/1, которые производят дискретные распределения, которые следуют широким шаблонам бета-подобных распределений (для x = 0; x = 0,2, x = 0,4, x = 0,6, x = 0,8 и x = 1) - person Sergio Henriques; 27.07.2018
comment
возьми probs <- diff(c(0, pbeta(c(1/6, 2/6, 3/6, 4/6, 5/6), 3, 3), 1)) - person Stéphane Laurent; 27.07.2018
comment
Спасибо, это точно. Раз бета не может быть бимодальной, кроме (0.5,0.5), как я могу сгенерировать бимодальное распределение? - person Sergio Henriques; 27.07.2018
comment
опять же, вам просто нужно определить вероятности, которые вы хотите в probs - person Stéphane Laurent; 27.07.2018