尝试复制rgeom()函数
作为练习,我试图编写一个复制尝试复制rgeom()函数,r,function,distribution,R,Function,Distribution,作为练习,我试图编写一个复制rgeom()函数的函数。我希望它具有相同的参数和返回值。我首先使用runif生成包含x元素的向量,但我不确定如何应用概率分布: rgeometric <- function(x, prob) { outcomes <- runif(x) P <- (1 - prob)^length(x) * prob return (P) } rgometric我们可以使用。 首先,让我们澄清一些符号。 在rgeom()函数中,
rgeom()
函数的函数。我希望它具有相同的参数和返回值。我首先使用runif
生成包含x
元素的向量,但我不确定如何应用概率分布:
rgeometric <- function(x, prob) {
outcomes <- runif(x)
P <- (1 - prob)^length(x) * prob
return (P)
}
rgometric我们可以使用。
首先,让我们澄清一些符号。
在rgeom()
函数中,我们希望第一个参数是n
,一个长度为1的整数向量,给出要生成的样本数:
rgometric注意,对于r实现的几何函数的定义,随机变量是第一次成功之前的失败次数。因此,你可以:
my_rgeom <- function(n, p){
fun <- function(p){
n <- 0
stopifnot(p>0)
while(runif(1)>p) n <- n+1
n
}
replicate(n, fun(p))
}
从上图中,你可以看到这两种测试几乎完全相同“我不知道有什么正式的测试可以帮助‘chi2应该可以工作,为什么不呢?
my_rgeom <- function(n, p){
fun <- function(p){
n <- 0
stopifnot(p>0)
while(runif(1)>p) n <- n+1
n
}
replicate(n, fun(p))
}
n <- 100000
p <- 0.25
X <- rgeom(n, p)
Y <- my_rgeom(n, p)
barplot(table(X), col = rgb(0.5, 1, 0.5, 0.4))
barplot(table(Y), add = TRUE, col = rgb(1, 0.5, 0, 0.3))