R优化线性函数



我是R的新手,需要一些简单的优化帮助。

我想随着时间的推移(24个月的预测值1到24)对变量(sales_revenue)应用函数变换。基本上,我想把产品的销售收入从后几个月推到前一个月。

t时间上的泛函变换为:

trans=D+(t/(A+B*t+C*t^2))

我想解决:

1) sales_revenue = sales_revenue *反式

其中total_sales_revenue=1,000,000(或在+/- 2.5%以内)

total_sales_revenue为所有sales_revenue在24个月预测中的总和。

如果trans有太多的参数,我可以在需要时修复其中的大部分,并让B自由估计。

我认为该方法应该是修复除B之外的所有参数,微分函数(1)(不确定它的区别)并解决非零最小值(使用约束以确保其正确的最小值和非零,在该函数上运行优化,sales_revenue*trans的总和将等于(或接近)1,000,000。

@user2138362,你的意思是"1)sales_revenue=total_sales_revenue*trans"吗?

我假设你的参数A, CD是固定的,你想找到B,这样你的观测值和预测值之间的距离是最小的。

假设你的时间以月为单位。所以我们可以写一个函数来给出距离的平方:

dist <- function(B)
{
t <- 1:length(sales_revenue)
total_sales_revenue <- sum(sales_revenue)
predicted <- total_sales_revenue * (D+(t/(A+B*t+C*t^2)))
sum((sales_revenue-predicted)^2)
}

我也用欧几里得距离的平方作为距离的度量。如果不是这种情况,请进行适当的更改。

现在,dist是你必须最小化的函数。您可以使用optim,正如@iTech指出的那样。但即使在dist的最小值,它也可能不会为零,因为你有很多(24)个观测值。但你可以找到最适合的,画出来,看看效果如何

最新更新