R优化线性函数

时间:2013-03-06 04:40:16

标签: r optimization

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

我希望随时间将变量(sales_revenue)应用于函数变换(24个月预测值1到24)。基本上我想将产品的销售收入从后几个月推到月初。

t时间的功能转换是:

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

然后我想解决:

1)sales_revenue = sales_revenue * trans

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

total_sales_revenue是预测24个月内所有sales_revenue的总和。

如果trans有太多参数,我可以根据需要修复大部分参数,并让B自由估计。

我认为该方法应该修复除B之外的所有参数,区分函数(1)(不确定ti diff by)并求解非零最小值(使用约束来确保其正确的最小值和no-zero,对该函数运行优化,约束为sales_revenue*trans的总和将等于(或接近)1,000,000。

1 个答案:

答案 0 :(得分:1)

@ user2138362,您的意思是“1)sales_revenue = total_sales_revenue * trans”?

我假设您的参数ACD已修复,并且您希望找到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)个观测值。但是你可以得到最合适的,绘制它,看看它是否很好。