如何使用逆CDF方法从逻辑CDF生成样本

问题描述 投票:0回答:1

我的问题是如何使用逆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)
}

应该g​​enerate_samples_from_logistic_CDF(sample_q)但是相反,它只为我提供了相同的价值

我的问题是如何使用逆CDF方法从逻辑CDF生成R中的样本。 logistic密度为p(θ)= exp(θ)/(1 + exp(θ))^ 2这是该方法的算法:1:对于t = 1 ...

r sampling cdf
1个回答
2
投票
由于逆CDF已经在R中编码为qlogis(),所以应该可以:
© www.soinside.com 2019 - 2024. All rights reserved.