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 を自由に見積もることができます。

アプローチは、 を除くすべてのパラメーターを修正し、関数 (1) を微分し (どの ti diff によるかわからない)、ゼロ以外の最小値を解決する必要があると思いますB(制約を使用して、正しい最小値と非ゼロであることを確認し、その上で最適化を実行します)。の合計がsales_revenue*trans1,000,000 に等しい (またはそれに近い) という制約を持つ関数。

4

1 に答える 1

1

@ user2138362、「1) sales_revenue=total_sales_revenue*trans」のことですか?

私はあなたのパラメータが固定されていると仮定してAおりC、観測値と予測値の間の距離が最小になるようDに見つけたいと考えています。B

あなたの時間が月単位だとしましょう。したがって、距離の 2 乗を求める関数を作成できます。

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 で指摘されているように、を使用できます。しかし、多くの (24) 観測値があるため、最小値でdistもおそらくゼロにはなりません。しかし、最適なフィットを取得してプロットし、それが適切かどうかを確認できます。

于 2013-03-15T03:48:59.040 に答える