gpt4 book ai didi

r - 如何最好地使用其概率函数模拟任意单变量随机变量?

转载 作者:行者123 更新时间:2023-12-03 14:51:48 25 4
gpt4 key购买 nike

在R中,如果仅可用其概率密度函数,那么模拟任意单变量随机变量的最佳方法是什么?

最佳答案

当只给定密度时,这是逆cdf方法的(慢速)实现。

den<-dnorm #replace with your own density

#calculates the cdf by numerical integration
cdf<-function(x) integrate(den,-Inf,x)[[1]]

#inverts the cdf
inverse.cdf<-function(x,cdf,starting.value=0){
lower.found<-FALSE
lower<-starting.value
while(!lower.found){
if(cdf(lower)>=(x-.000001))
lower<-lower-(lower-starting.value)^2-1
else
lower.found<-TRUE
}
upper.found<-FALSE
upper<-starting.value
while(!upper.found){
if(cdf(upper)<=(x+.000001))
upper<-upper+(upper-starting.value)^2+1
else
upper.found<-TRUE
}
uniroot(function(y) cdf(y)-x,c(lower,upper))$root
}

#generates 1000 random variables of distribution 'den'
vars<-apply(matrix(runif(1000)),1,function(x) inverse.cdf(x,cdf))
hist(vars)

关于r - 如何最好地使用其概率函数模拟任意单变量随机变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1594121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com