1

我是 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_revenuesales_revenue是24 个月预测的总和。

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

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

4

1 回答 1

1

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

我假设您的参数A和是固定的,C并且D您希望找到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) 个观察值。但是你可以得到最合适的,绘制它,看看它是否很好。

于 2013-03-15T03:48:59.040 回答