Как сделать распределение вероятностей аргументом функции в R? - PullRequest
1 голос
/ 20 июня 2019

У меня есть функция f в R, которая включает в себя отрисовку множества образцов вида

sample <- rnorm(k,0,1) 

, где k - некоторое целое число.Я хотел бы указать в качестве аргумента этой функции тип распределения, чтобы я мог быстро сгенерировать выборки вида

sample <- runif(k,0,1)

или, например, другие вероятностные распределения.Другими словами, я хочу иметь возможность написать f (k, равномерное) и сгенерировать второй тип выборки, а f (k, нормальное) для первого.

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

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Вот многообещающая реализация того, что вы ищете. Пакет distributions доступен на Github , но еще не доступен на CRAN.

Вот пример использования:

library(distributions)

X <- Bernoulli(0.1)

random(X, 10)
#>  [1] 0 0 0 0 0 0 0 0 1 0
pdf(X, 1)
#> [1] 0.1

cdf(X, 0)
#> [1] 0.9
quantile(X, 0.5)
#> [1] 0
2 голосов
/ 20 июня 2019

Не знаю, насколько это полезно, но:

f <- function(k,g){g(k)}

Используется как f(100,runif) или f(100,rnorm)

Как вариант:

f <- function(k,g,...){g(k,...)}

что также позволило бы такие вещи, как f(100,rnorm,10,2)

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