r-如何使用反向CDF方法从逻辑CDF生成样本

  • 本文关键字:CDF 样本 方法 何使用 r sampling cdf
  • 更新时间 :
  • 英文 :


我的问题是如何使用逆CDF方法从逻辑CDF生成R中的样本。逻辑密度为p(θ(=exp(θ(/(1+exp(β((^2

以下是该方法的算法:

1: for t = 1 to T do
2: sample q(t) ∼ Unif(0, 1)
3: θ(t) ← F^−1(q(t))
4: end for

这是我的代码,但它只是生成一个相同数字的向量。结果应该是对数凹的,但如果我把它放在直方图中,显然不会是这样,那么问题是什么?:

首先将T定义为您从均匀分布中提取的平局次数

T<-100000
sample_q<-runif(T,0,1)

看起来plogis会给你累积分布函数,所以我想我可以取它的逆:

generate_samples_from_logistic_CDF <- function(p) {
for(t in length(T)) 
cdf<-plogis((1+exp(p)/(exp(p))))
inverse_cdf<-(1/cdf)
return(inverse_cdf)
}

应从_注册表_CDF(sample_q(生成_samples_但它只给了我所有相同的值

由于反向CDF已经在R中编码为qlogis(),因此这应该起作用:

qlogis(runif(100000))

或者,如果你想"手动"而不是使用内置的qlogis(),你可以使用R <- runif(100000); log(R/(1-R))

请注意,rlogis(100000)应该更高效。

你的一个困惑是,上面算法描述中的"逆"并不意味着乘法逆或倒数(即1/x(,而是函数逆(在这种情况下是log(q/(1-q))(

相关内容

  • 没有找到相关文章

最新更新