简体   繁体   English

在 R 中模拟给定的概率密度函数

[英]Simulating given probability density function in R

The following pdf is given:给出了以下pdf:

f(x)=2x/k^2, where 0 <= x <= k

Let k=10, I'm trying to simulate 100 times for this pdf, then print the first 5 results and find the mean for all 100 times results.让 k=10,我试图为这个 pdf 模拟 100 次,然后打印前 5 个结果并找到所有 100 次结果的平均值。

If you want to simulate with a uniform distribution between 0 and k , then you can pass runif(n, min, max) into your pdf.如果您想模拟0k之间的均匀分布,那么您可以将runif(n, min, max)传递到您的 pdf 中。

f <- function(x, k) {
  return(2*x/k^2)
}

k <- 10
res <- f(runif(100, 0, k), k)
print(res[1:5])
print(mean(res))

Per MrFlick's comments, if you were instead wanting to do inverse transform sampling, this should suffice.根据 MrFlick 的评论,如果您想要进行逆变换采样,这应该就足够了。

pdf <- function(x, k) {
  return(2*x/k^2)
}

cdf <- function(x, k){
  return(x^2/k^2)
}

icdf <- function(y, k){
  return(sqrt(k^2*y))
}

k <- 10
res <- icdf(runif(100,0,1), k)
print(res[1:5])
print(mean(res))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM