R中的功能最大值

时间:2018-07-20 15:36:30

标签: r

Y = 20*(1-EXP(-(10*(1-EXP(-X/400)))/5))* Premium - X

我想最大化Y。在X的哪个值处,Y的值将被最大化。 我需要为此编写一个函数。

样本数据

 id     premium     Y   X
110936  3300       NA   NA
41492   18000      NA   NA
31300   3300       NA   NA
19415   9600       NA   NA
99379   9600       NA   NA

1 个答案:

答案 0 :(得分:1)

在R中定义函数,然后使用optimize查找其最小化器。因为您正在寻找最大值,所以需要取反函数定义的输出。 您没有指定Premium如何适合您的优化任务,因此我只是假设它是一个固定值:

f <- function(x)
{
  Premium <- 3300
  y <- 20*(1-exp(-(10*(1-exp(-x/400)))/5))* Premium - x
  -y  ## Negate the output, because we want to find the maximum
}

对于像您这样的单变量函数,您将使用optimize。对于多元函数(例如,如果您想同时优化xPremium),则可以使用optim。您可以在R中执行?optimize?optim来详细了解每个功能。

optimize具有一个函数和最小化间隔:

optimize(f, c(0,1e6) )
# $minimum
# [1] 1536.798

# $objective
# [1] -55139.53