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
答案 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
。对于多元函数(例如,如果您想同时优化x
和Premium
),则可以使用optim
。您可以在R中执行?optimize
和?optim
来详细了解每个功能。
optimize
具有一个函数和最小化间隔:
optimize(f, c(0,1e6) )
# $minimum
# [1] 1536.798
# $objective
# [1] -55139.53