R Holt-Winters関数で呼び出されるC関数を理解しようとしています。私は混乱していたことによりR Holt-Winters関数内で呼び出されるC_Holt-Winters関数
セクションの読み取り:「t」は13であり、12の季節の期間がある場合、これは、のようにかかわらず、読み出し
for (i = *start_time - 1; i < *xl; i++) {
56 /* indices for period i */
57 i0 = i - *start_time + 2;
58 s0 = i0 + *period - 1;
59
60 /* forecast *for* period i */
61 xhat = level[i0 - 1] + (*beta > 0 ? trend[i0 - 1] : 0);
62 stmp = *gamma > 0 ? season[s0 - *period] : (*seasonal != 1);
63 if (*seasonal == 1)
64 xhat += stmp;
65 else
66 xhat *= stmp;
(すなわち、「期間」は12である)、次いで、I0は次のようになり1とs0は12になります。stmpは時間(s0-12)からの "season"値に基づいた値をとるでしょう。この場合は時間0になります。しかし、これは意味をなさない。季節性Holt-Wintersモデルのコンポーネントは、(この場合は)以前の12つの期間からのものです。
誰かがi0とs0が実際に何であるか、私がこれを理解できなかった箇所について説明できるなら、私は感謝します。
全コード:
https://github.com/pierre/holt-winters/blob/master/holt-winters.c
あなたが言っているようにループをはじめて見ると、 'i0'は1になりますが、' s0'は13ではなく12になります。(1 + period - 1)、それは一つの間違いです。 – Gregor
これを基底Rで複製すると、印刷文で何が起こっているのか、そうでないのかを簡単に知ることができます。ちょうど覚えておいてください。あなたがここに見るものはすべて0である。 –
はい@Gregor、あなたは正しい - 私は12を意味した。 – Statsanalyst