【发布时间】:2015-07-20 09:51:29
【问题描述】:
在关于Cross Validated (How 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
我在optimhere 上找到了一个教程,但我仍然无法弄清楚如何使用optim 作为求解器。我有几个问题:
什么是第一个参数(即传入的值
1)?传入的函数是什么?
我可以理解它是取 Weibull 概率分布并减去 0.15,但我们为什么要对结果进行平方呢?
【问题讨论】:
-
来自 R 中的 ?Optim:第一次调用 optim 函数是“x”的开始猜测。 IE。告诉“求解器”从哪里开始。
-
嗨 Repmat,谢谢。我已经做了优化,比如牛顿法,必须使用一个起始值。但是在原始帖子中,该人在一个 Optim 函数中使用了 0.5 的值,在另一个 Optim 函数中使用了 1 的值,这似乎与问题中使用的 Weibull 分布的尺度参数和形状参数的值相同。所以这就是我感到困惑的原因之一。我想知道这是否是他使用与比例和形状参数相同的起始值的偶然情况?
-
即使您将起始值设置为 10 或 100,您仍然是正确的解决方案 - 但存在一些错误。我认为这只不过是巧合。
-
好的,感谢您的意见。但他为什么构造函数使其平方是一个谜,
-
其实是最小二乘法的巧妙改编。当审查率为 0.15 时,OP 想知道如何找到形状参数。这就是他减去 0.15 的原因。下一个; Optim(在 R 中)试图最小化函数,因此在效果中他告诉 R 最小化(平方)之间的差异:pweibull(paramaters) - 0.15
标签: r optimization