近似R中变换β分布的求积

近似R中变换β分布的求积,r,numerical-integration,R,Numerical Integration,我使用R来运行一个模拟,在这个模拟中,我使用似然比测试来比较两个嵌套项目响应模型。LRT的一个版本使用联合似然函数L(θ,ρ),另一个版本使用边际似然函数L(ρ)。我想把L(θ,ρ)积分到f(θ)上,得到边际似然L(ρ)。我有两个条件:第一,f(θ)是标准法线(μ=0,σ=1),我的理解是我可以选择一些横坐标点,比如说20或30,然后使用高斯-厄米特求积来近似这个密度。但在另一种情况下,f(θ)是线性变换的β分布(a=1.25,b=10),其中线性变换b'=11.14*(b-0.11)使得b'也

我使用R来运行一个模拟,在这个模拟中,我使用似然比测试来比较两个嵌套项目响应模型。LRT的一个版本使用联合似然函数L(θ,ρ),另一个版本使用边际似然函数L(ρ)。我想把L(θ,ρ)积分到f(θ)上,得到边际似然L(ρ)。我有两个条件:第一,f(θ)是标准法线(μ=0,σ=1),我的理解是我可以选择一些横坐标点,比如说20或30,然后使用高斯-厄米特求积来近似这个密度。但在另一种情况下,f(θ)是线性变换的β分布(a=1.25,b=10),其中线性变换b'=11.14*(b-0.11)使得b'也具有(近似)μ=0,σ=1

我对如何实现贝塔分布的求积感到困惑,但是线性变换让我更加困惑。我的问题有三个:(1)当θ作为线性变换的beta分布分布时,我能用一些求积的变化来近似f(θ)吗,(2)我如何在R中实现这一点,(3)这是一种荒谬的时间浪费,以至于有一种明显更快更好的方法来完成这项任务吗?(我试着编写自己的数值近似函数,但发现我的实现速度太慢,仅限于R语言,不够用。)


谢谢

首先,我假设你可以用实际代码来表示你的L(θ,ρ)和f(θ);否则你就完了。根据该假设,您可以使用
integrate
执行必要的计算。像这样的事情应该让你开始;只需插入L和f的表达式

marglik <- function(rho) {
    integrand <- function(theta, rho) L(theta, rho) * f(theta)
    # set your lower/upper integration limits as appropriate
    integrate(integrand, lower=-5, upper=5, rho=rho)
}

编辑:不确定您是否也在询问如何为转换后的beta分布定义f(θ);对于一个有着共同和边际可能性的人来说,这似乎是相当基本的。但是如果你是,那么B'=a*B+B的密度,给定f(B),是

f’(B’)=f(B)/a=f((B’-B)/a)/a


所以在你的例子中,
f(θ)
dbeta(θ/11.14+0.11,1.25,10)/11.14

谢谢,这是非常有用的信息!我确实有用实际代码表示的L(θ,ρ)和f(θ)。我得到了基于L(θ,ρ)的所有结果,我只是很难弄清楚如何从L(θ,ρ)到L(ρ)。所以我甚至不需要走求积的路线;很高兴知道!我将拭目以待,看看是否有人有不同的感觉,如果没有,我将把这标记为公认的答案。
integrand <- Vectorize(integrand, "theta")