【发布时间】:2020-05-03 21:58:43
【问题描述】:
我的问题是如何使用逆 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
这是我的代码,但它只生成一个相同数字的向量。结果应该是log-concave的,但如果我把它放在直方图中显然不是这样,那么问题是什么?:
首先将 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)
}
应该生成_samples_from_logistic_CDF(sample_q) 但相反,它只会给我所有的相同价值
【问题讨论】: