После комментария @Andrew Gustar вот код, который вы хотите:
Gam <- function(alpha, beta){
N <- 1000
X <- rep(0,N)
for(j in 1:N){
u <- runif(alpha)
X[j] <- -beta * log(prod(u))
}
return(X)
}
Кроме того, этот код выполняет выборку гамма-распределения с параметром формы alpha
и масштаб параметр beta
, в то время как beta
в rgamma(N, alpha, beta)
является параметром rate .Таким образом, для сравнения с rgamma
вам нужно сделать:
alpha <- 3; beta <- 4
y1 <- Gam(alpha, beta)
y2 <- rgamma(1000, alpha, scale=beta)
par(mfrow=c(1,2))
hist(y1, freq=F, nclass=10)
hist(y2, freq=F, nclass=10)
или
y2 <- rgamma(1000, alpha, 1/beta)
(коэффициент обратный к шкале).