在R中模拟给定的概率密度函数
Simulating given probability density function in R
给出以下p.d.f:
f(x)=2x/k^2, where 0 <= x <= k
令 k=10,我试图为此模拟 100 次 p.d.f,然后打印前 5 个结果并求所有 100 次结果的平均值。
如果你想模拟 0
和 k
之间的均匀分布,那么你可以将 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))
根据 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))
给出以下p.d.f:
f(x)=2x/k^2, where 0 <= x <= k
令 k=10,我试图为此模拟 100 次 p.d.f,然后打印前 5 个结果并求所有 100 次结果的平均值。
如果你想模拟 0
和 k
之间的均匀分布,那么你可以将 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))
根据 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))