如何将优化用作求解器?

时间:2015-07-19 15:25:47

标签: r optimization

在关于Cross ValidatedHow to simulate censored data)的问题中,我看到optim函数被用作一种求解器而不是优化器。这是一个例子:

  
optim(1, fn=function(scl){(pweibull(.88, shape=.5, scale=scl, lower.tail=F)-.15)^2})
# $par
# [1] 0.2445312
# ...
pweibull(.88, shape=.5, scale=0.2445312, lower.tail=F)
# [1] 0.1500135

我在optim here找到了一个教程,但我仍然无法弄清楚如何使用optim作为求解器。我有几个问题:

  1. 什么是第一个参数(即传入的值1)?

  2. 传入的函数是什么?

  3. 我可以理解它是采用威布尔概率分布并减去0.15,但我们为什么要对结果进行平方?

1 个答案:

答案 0 :(得分:4)

我相信你指的是我的回答。让我们来看几点:

  • OP(该问题)希望从具有指定形状和比例参数的Weibull分布生成(伪)随机数据,并且在经过一定审查时间后对所有数据应用删失,并且以预先指定的审查率结束。问题是,一旦你指定了其中的任何三个,第四个必然是固定的。您不能同时指定所有四个,除非您非常幸运并且您指定的值碰巧完美地组合在一起。事实上,OP并没有那么幸运的四个首选值 - 因为它们不一致所以不可能拥有全部四个值。此时,您可以决定指定任意三个并解决最后一个问题。我提供的代码是如何做到这一点的例子。

  • 正如?optim的文档中所述,第一个参数是par“[i]要优化的参数的基本值”。

    非常宽松,优化例程的工作方式是计算给定函数和输入值的输出值。然后它“环顾四周”,看看是否移动到不同的输入值会导致更好的输出值。如果情况确实如此,则会朝那个方向移动并再次启动该过程。 (当它看起来不向两个方向移动会产生更好的输出值时停止。)

    重点是必须从某处开始,用户必须指定该值。在每种情况下,我都从OP的首选值开始(尽管我可以在任何地方开始)。

  • 我传入的功能是?pweibull。它是cumulative distribution functionWeibull distribution(CDF)。它将分位数( X 值)作为其输入,并返回已经传递到该点的分布的比例。由于OP想要审查该分布中最极端的15%,我指定pweibull返回尚未通过的比例(即lower.tail=F部分)。然后我从结果中减去.15

  • 因此,理想的输出(从我的角度来看)将是 0 。但是,通过查找使pweibull< 1的输出成为可能的比例参数,可以获得低于零的值。 0.15。由于optim(或者实际上大多数任何优化器)都找到了最小化输出值的输入值,因此它就是这样做的。为了防止这种情况发生,我平衡了差异。这意味着,当优化程序“走得太远”时,发现一个比例参数从.05产生pweibull的输出,差异为-.10(即< 0 ),平方使最终输出+.01(即> 0 ,或更糟)。这会将优化器推回到使pweibull输出.15 - .15)^ 2 = 0 的比例参数。

  • 一般来说,你在“优化器”和“求解器”之间的区别对我来说是不透明的。他们看起来像two different views of the same elephant

  • 此处可能存在的另一个混淆是优化与回归。 Optimization只是找到一个最小化(最大化)函数输出的输入值[s]。在regression中,我们将数据概念化为来自数据生成过程的绘制,该过程是stochastic函数。给定一组实现值和函数形式,我们使用优化技术来估计函数的参数,从而从嘈杂的实例中提取数据生成过程。回归的一部分分析了优化的参与,但回归的其他方面不太关注优化和优化本身比回归大得多。例如,在我对另一个问题的回答中优化的函数是确定性的,并且没有分析“数据”。

相关问题