r语言 - 如何进行二元优化



是否可以在R中解决以下问题?

特别是,我想找到a1和a2的值,使下面的损失最小:

> n <- 1000
> x <- rnorm(n, 1, 1)
> e <- rnorm(n, 0, 1)
> d <- a1+a2*x+e < 0
> loss <- (mean(d) - 0.5) + (mean((a1 + a2*x + e)[d=0]) - 2)

也就是说,我想找到a1和a2的值,使mean(d)mean((a1+a2*x+e)[d=0])分别尽可能接近0.5和2。

(选择的值0.5和2只是暂时值)

使用optimf函数计算定义损耗。p是参数向量,即p[1]是您的a1p[2]是您的a2。在函数中调用optim时,请使用合理的起始值。

f <- (p) {
d <- p[1] + p[2]*x + e < 0
(mean(d) - 0.5) + (mean((p[1] + p[2]*x + e)[d]) - 2)
}
res <- optim(c(0, 0), f)
res$par
# [1] 4.393432e+53 1.010012e+55  ## a1 and a2

注意d已经是布尔值了。

如果你用不同的起始值得到不同的结果,你的分布可能是多模态的。


数据:

n <- 1e3; set.seed(42); x <- rnorm(n, 1, 1); e <- rnorm(n, 0, 1)

相关内容

  • 没有找到相关文章

最新更新