2

我想解一个方程如下,其中X是唯一的未知变量,函数f()是一个多元学生t分配。更准确地说,我有一个学生密度函数的多 k 维积分,它给了我们一个概率,我知道这个概率是 q。所有积分的下限是 -Inf 并且我知道最后一个 k-1 维度的上限(如给定的),唯一未知的变量是第一个积分的上限。它应该有一个变量和一个方程的解。我试图在 R 中解决它。我做了动态条件相关以获得相关矩阵,以指定我的 t 分布。因此,将此相关矩阵插入我的多 t 分布“dmvt”,并使用“cubature”包中的“adaptIntegral”函数构造一个函数作为命令“uniroot”的参数,以求解第一个积分的上限。但是我有一些困难来实现我想要的。(我希望我的问题很清楚)我之前提供了我的代码,有人告诉我有问题,但找不到那里有问题的原因。非常感谢您的帮助。

我现在如何用一维积分来处理它,但我不知道如何在 R 中求解多维积分方程?(例如二维案例)

\int_{-\infty}^{X}
    \int_{-\infty}^{Y_{1}} \cdots
       \int_{-\infty}^{Y_{k}}
           f(x,y_{1},\cdots y_{k})
      d_{x}d_{y_{1},}\cdots d_{y_{k}} = q

此代码失败:

require(cubature) 
require(mvtnorm) 
corr <- matrix(c(1,0.8,0.8,1),2,2)
f <- function(x){ dmvt(x,sigma=corr,df=3) } 
g <- function(y) adaptIntegrate(f, 
                  lowerLimit = c( -Inf, -Inf), 
                  upperLimit = c(y, -0.1023071))$integral-0.0001    
uniroot( g, c(-2, 2)) 
4

1 回答 1

2

由于mvtnorm包含pmvt计算多元 t 分布的 CDF 的函数,因此您无需通过蛮力进行积分。(mvtnorm还包括分位数函数qmvt,但仅适用于“等坐标”值。)

所以:

library(mvtnorm)
g <- function(y1_upr,y2_upr=-0.123071,target=1e-4,df=3) {
    pmvt(upper=c(y1_upr,y2_upr),df=df)-target
}
uniroot(g,c(-10000,0))
## $root
## [1] -17.55139
## 
## $f.root
## [1] -1.699876e-11
## attr(,"error")
## [1] 1e-15
## attr(,"msg")
## [1] "Normal Completion"
## 
## $iter
## [1] 18
## 
## $estim.prec
## [1] 6.103516e-05
## 

再确认一次:

pmvt(upper=c(-17.55139,-0.123071),df=3)
## [1] 1e-04
## attr(,"error")
## [1] 1e-15
## attr(,"msg")
## [1] "Normal Completion"
于 2013-01-03T22:33:24.377 回答