R 中的大多数标准分布都有一系列命令 - pdf/pmf、cdf/cmf、分位数、随机偏差(例如 - dnorm、pnorm、qnorm、rnorm)。
我知道使用一些标准命令来为离散均匀分布重现这些函数很容易,但是是否已经有一个首选的内置函数族用于在 R 中建模我不知道的离散均匀分布?
R 中的大多数标准分布都有一系列命令 - pdf/pmf、cdf/cmf、分位数、随机偏差(例如 - dnorm、pnorm、qnorm、rnorm)。
我知道使用一些标准命令来为离散均匀分布重现这些函数很容易,但是是否已经有一个首选的内置函数族用于在 R 中建模我不知道的离散均匀分布?
正如 nico 所写,它们没有在 R 中实现。假设我们在 1..k 中工作,这些函数应该如下所示:
对于随机生成:
rdu<-function(n,k) sample(1:k,n,replace=T)
PDF:
ddu<-function(x,k) ifelse(x>=1 & x<=k & round(x)==x,1/k,0)
CDF:
pdu<-function(x,k) ifelse(x<1,0,ifelse(x<=k,floor(x)/k,1))
以下是 [min, max] 范围内离散均匀分布的代码,改编自 mbq 的帖子:
dunifdisc<-function(x, min=0, max=1) ifelse(x>=min & x<=max & round(x)==x, 1/(max-min+1), 0)
punifdisc<-function(q, min=0, max=1) ifelse(q<min, 0, ifelse(q>=max, 1, (floor(q)-min+1)/(max-min+1)))
qunifdisc<-function(p, min=0, max=1) floor(p*(max-min+1))
runifdisc<-function(n, min=0, max=1) sample(min:max, n, replace=T)
CRAN 任务视图:概率分布页面说:
用基本函数可以很容易地得到离散的均匀分布。
我想这应该做一些事情:
a <- round(runif(1000, min=0, max=100))
编辑
正如csgillespie指出的那样,这是不正确的......
a <- ceiling(runif(1000, min=0, max=100))
不过会起作用(请注意,该示例将生成1到 100 之间的值,而不是 0 到 100 之间的值)