整数和数值优化(nlminb)R

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

我在涉及包含未知变量的积分的数值估计的优化问题上遇到问题。

数值估计积分很简单,只需在R中使用积分函数。我试图估计一个相当不愉快的积分,由于它包含未知变量和约束,因此需要优化。我正在使用nlminb函数,但是结果非常不正确。想法是评估约束小于或等于1-l的积分,其中l在0和1之间。

代码如下:

integrand <- function(x, p) {dnorm(x,0,1)*(1-dnorm((qnorm(p)
                            -sqrt(0.12)*x)/(sqrt(1-0.12)), 0, 1))^800}

并且是未知的变量p。

要最小化的目标函数如下:

objective <- function(p){

  PoD <- integrate(integrand, lower = -Inf, upper = Inf, p = p)$value  

  PoD - 0.5
}

test <- nlminb(0.015, objective = objective, lower = 0, upper = 1)$par*100  

经过编辑以反映目标函数和积分中的错误。同样的问题仍然存在。

我认为我的错误不是指定要最小化的变量。优化只给出了​​以nlminb乘以100的起始值。

[论文的作者使用伪变量,并表明l = 0,5应该给出p = 0,15%。

谢谢您的时间。

r optimization numerical-methods
1个回答
0
投票

当然,因为您的目标函数不取决于p。做:

integrand <- function(x, p) {dnorm(x,0,1)*(1-dnorm((qnorm(p)
                           -sqrt(0.12)*x)/(sqrt(1-0.12)), 0, 1))^800}

objective <- function(p){

  PoD <- integrate(integrand, lower = -Inf, upper = Inf, p = p)$value  

  PoD - 0.5
}
© www.soinside.com 2019 - 2024. All rights reserved.