【问题标题】:Optimizing a simple linear curve (constant and coefficient estimated from a regression)优化简单的线性曲线(从回归估计的常数和系数)
【发布时间】:2015-06-10 14:10:08
【问题描述】:

我正在尝试计算一些函数的转折点,其中我从回归中估计了系数和常数。我正在为此使用优化功能,因为我的曲线都是线性的。

My function looks like:
F<- function(x){
   beta* x + alpha
}

mind:beta 和 alpha 在这里都是向量。使用 optimize 运行优化时,出现以下错误:

 Error in optimize(F, interval = c(10, 20), lower = (10),  : 
      invalid function value in 'optimize'

这是因为优化是在数学上运行优化,所以 beta 和 alpha 需要是单个参数吗?如果有人知道这样做的更好方法,请做出贡献!

提前谢谢你:)

【问题讨论】:

    标签: r optimization


    【解决方案1】:

    如果函数是线性的,那么它们将至少在 beta>=0 的范围的下端,如果 betaoptimize() .

    尚不完全清楚您希望代码做什么 - 如果您希望它为每组参数返回 x,请查看 optim() 并让 F 返回总和,或运行优化每组参数依次使用apply() 函数或循环。

    另一件事是你的语法有点古怪 - 我想你的意思是:

    > F<- function(x){
    +     beta* x + alpha
    + }
    > alpha <- 1
    > beta <- 2
    > optimize(F,c(10,20))
    $minimum
    [1] 10.00006
    
    $objective
    [1] 21.00011
    

    【讨论】:

    • 我认为问题在于他将他的函数命名为F(x),这不是正确的命名方式。函数名称应为FxF
    • 对不起!我在这里写了 F(x) 只是为了暗示它是一个函数,我已经为自己命名了其他名称。我现在已经编辑了 OP 以确保没有混淆。为了简单起见并专注于优化语法的问题,我使用了线性曲线的示例(稍后它们将是抛物线,但我想这不会对我编写代码的方式产生影响,因此您的答案就足够了: )) 还有一个问题,这里的 $Objective 指的是什么?我试过用谷歌搜索它没有成功!谢谢你的帮助米夫
    • @LCM,输出由以下内容组成:$minimum(或$maximum)和$objective,它们给出了最小值(或最大值)的位置和函数的值那一点,分别。基本上,F(minimum or maximum) = $objective.
    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 2018-03-16
    • 2021-08-20
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2020-10-23
    相关资源
    最近更新 更多