【发布时间】:2016-09-10 04:19:00
【问题描述】:
我的问题如下:
我有一个包含 6000 个观察的数据集,其中包含来自客户的信息(每个观察都是一个客户的信息)。
我正在优化一个给定的函数(在我的例子中是一个利润函数),以便为我感兴趣的变量找到一个最优值。特别是我正在寻找我应该提供的最佳利率,以最大限度地提高我的预期利润。
我对自己的职能没有任何疑问。问题是我不知道我应该如何进行才能将此功能应用于每个观察,以便为我的 6000 个客户(或您喜欢的观察)中的每个客户获得最佳利率。
到目前为止,很容易找到这个变量的唯一最优值(对所有客户都一样),这将使我的利润最大化(这是我猜的全局最大值)。但我需要知道的是,我应该如何进行,以便将我的优化问题分别应用于我的 6000 个观察结果中的每一个,以便为每个客户提供最佳利率(即 6000 个最佳利率,一个每个人)。
我想我应该做一些类似于 for 循环的事情,但是我在这方面的经验是有限的,我已经很沮丧了。更重要的是,我尝试像往常一样使用 mapply(myfunction, mydata) ,但我只收到错误消息。
这就是我的(真正)简单代码现在的样子:
profits<- function(Rate)
sum((Amount*(Rate-1.2)/100)*
(1/(1+exp(0.600002438-0.140799335888812*
((Previous.Rate - Rate)+(Competition.Rate - Rate))))))
对于整个样本来说,ONE 的结果是最优的:
> optimise(profits, lower = 0, upper = 100, maximum = TRUE)
$maximum
[1] 6.644821
$objective
[1] 1347291
所以问题是,我如何重写我的代码以最大化这一点并为我的每一行获得我感兴趣的变量的最佳值?
希望我已经清楚了!提前谢谢大家!
【问题讨论】:
-
包含reproducible example 总是好的。这让其他人更容易帮助您。
-
你可以使用
apply(dataset, 1, FUN=function(obs) ...)如果dataset是一个数据框,那么函数中的参数obs是一个命名向量。检查您是否可以使用with()或transform()。
标签: r for-loop optimization mathematical-optimization