短い多変量時系列を予測する最も愚かな方法


16

29番目の時間単位について、次の4つの変数を予測する必要があります。約2年分の履歴データがあります。1と14と27はすべて同じ期間(または時期)です。最後に、私は、、、および Oaxaca-Blinderスタイルの分解を行っています。w d w c pWwdwcp

time    W               wd              wc               p
1       4.920725        4.684342        4.065288        .5962985
2       4.956172        4.73998         4.092179        .6151785
3       4.85532         4.725982        4.002519        .6028712
4       4.754887        4.674568        3.988028        .5943888
5       4.862039        4.758899        4.045568        .5925704
6       5.039032        4.791101        4.071131        .590314
7       4.612594        4.656253        4.136271        .529247
8       4.722339        4.631588        3.994956        .5801989
9       4.679251        4.647347        3.954906        .5832723
10      4.736177        4.679152        3.974465        .5843731
11      4.738954        4.759482        4.037036        .5868722
12      4.571325        4.707446        4.110281        .556147
13      4.883891        4.750031        4.168203        .602057
14      4.652408        4.703114        4.042872        .6059471
15      4.677363        4.744875        4.232081        .5672519
16      4.695732        4.614248        3.998735        .5838578
17      4.633575        4.6025          3.943488        .5914644
18      4.61025         4.67733         4.066427        .548952
19      4.678374        4.741046        4.060458        .5416393
20      4.48309         4.609238        4.000201        .5372143
21      4.477549        4.583907        3.94821         .5515663
22      4.555191        4.627404        3.93675         .5542806
23      4.508585        4.595927        3.881685        .5572687
24      4.467037        4.619762        3.909551        .5645944
25      4.326283        4.544351        3.877583        .5738906
26      4.672741        4.599463        3.953772        .5769604
27      4.53551         4.506167        3.808779        .5831352
28      4.528004        4.622972        3.90481         .5968299

私は信じている近似することができるプラス測定誤差が、あなたはそれを参照することができ常にかなりあるため、廃棄物、近似誤差、または盗難の数量を超えます。P W D + 1 - P W CWpwd+(1p)wcW

ここに私の2つの質問があります。

  1. 私が最初に考えたのは、これらの変数に対して1ラグと外因性の時間および期間変数を使用してベクトル自己回帰を試みることでしたが、データが少ないことを考えると、これは悪い考えのようです。(1)「マイクロ数」に直面した場合のパフォーマンスが向上し、(2)変数間のリンクを活用できる時系列メソッドはありますか?

  2. 一方、VARの固有値のモジュラスはすべて1未満であるため、非定常性について心配する必要はないと思います(ただし、Dickey-Fullerテストではそうではありません)。予測は、とが低いことを除いて、時間傾向のある柔軟な単変量モデルからの予測とほぼ一致しているようです。ラグの係数は大部分は重要ではありませんが、ほとんど合理的と思われます。一部の期間ダミーと同様に、線形トレンド係数は重要です。それでも、VARモデルよりもこの単純なアプローチを好む理論的な理由はありますか?pWp

完全開示:Statalistで同様の質問をしましたが、回答はありませんでした。


こんにちは、時系列データに適用されるのを見たことがありませんので、あなたがしたい分解の周りのコンテキストをもう少し教えてもらえますか?
ミシェル

次の方法で変更をコンポーネントに分割しています:、プライムは変数の現在の値を示します。WW=p(wDwD)+(1p)(wCwC)+(wDwC)(pp)+(ϵϵ)
Dimitriy V. Masterov

うーん、最初に外れ値を除外してから回帰するのはどうですか?
アトス

どのレベルの精度が必要ですか?ご存知のように、ARIMAモデルを使用して非常に低いMSEを取得できるため、私は尋ねています。ただし、これらのモデルは通常、最尤法を使用して適合されるため、過剰適合することはほぼ確実です。ベイジアンモデルは、少量のデータを扱う場合に堅牢ですが、ARIMAモデルよりも1桁高いMSEが得られると思います。
ロバートスミス14

回答:


2

私はこの質問がここに何年も座っていることを理解していますが、それでも、次のアイデアが役に立つかもしれません:

  1. 変数間にリンクがある場合(および理論式がうまく機能しない場合)、PCAを使用して体系的な方法で(線形)依存関係を検索できます。この質問で与えられたデータに対してこれがうまく機能することを示します。

  2. 多くのデータ(合計112の数字)がない場合、推定できるモデルパラメーターはごくわずかです(たとえば、季節効果を完全に調整することはオプションではありません)。

以下に、これらの原則に従って予測を行う方法を示します。

ステップ1. PCAを使用して、データの依存関係を明らかにできます。Rを使用し、データを以下に保存しxます。

> library(jvcoords)
> m <- PCA(x)
> m
PCA: mapping p = 4 coordinates to q = 4 coordinates

                              PC1         PC2          PC3          PC4
standard deviation     0.18609759 0.079351671 0.0305622047 0.0155353709
variance               0.03463231 0.006296688 0.0009340484 0.0002413477
cum. variance fraction 0.82253436 0.972083769 0.9942678731 1.0000000000

これは、最初の2つの主成分が分散の97%を説明し、3つの成分を使用すると分散の99.4%をカバーすることを示しています。したがって、最初の2台または3台のPCのモデルを作成すれば十分です。(データはほぼ満たし。)W=0.234wd1.152wc8.842p

PCAを行うには、直交行列を見つける必要がありました。このような行列の空間は6次元なので、6つのパラメーターを推定しました。(実際には以下のPC1のみを使用しているため、これは「有効な」パラメータが少ない場合があります。)4×4

ステップ2. PC1には明確な傾向があります:

> t <- 1:28
> plot(m$y[,1], type = "b", ylab = "PC1")
> trend <- lm(m$y[,1] ~ t)
> abline(trend)

PC1の動向

この傾向を取り除いて、PCスコアのコピーを作成します。

> y2 <- m$y
> y2[,1] <- y2[,1] - fitted(trend)

他のPCのスコアをプロットしても明確な傾向は明らかにならないため、これらは変更しません。

PCスコアは中央にあるため、傾向はPC1サンプルの重心を通過し、傾向の適合は1つのパラメーターの推定にのみ対応します。

ステップ3.ペア散布図には明確な構造が示されていないため、PCを独立としてモデル化します。

> pairs(y2, asp = 1, oma = c(1.7, 1.7, 1.7, 1.7))

トレンドを除去した後のPCのペア散布図

ステップ4. PC1には明らかな周期性があり、ラグ13があります(質問で示唆されています)。これはさまざまな方法で見ることができます。たとえば、遅延13の自己相関は、コリログラムでは0とは著しく異なるものとして表示されます。

> acf(y2[,1])

ドリフトを除去した後のPC1のACF

(シフトされたコピーと一緒にデータをプロットするとき、周期性は視覚的により印象的です。)

推定されたパラメーターの数を少なくしたいので、コレログラムはラグ13を重要な寄与を持つ唯一のラグとして示すため、PC1をとしてモデル化します。、ここでは独立しており、標準正規分布です(つまり、これはほとんどの係数が0に固定されたAR(13)プロセスです)。とを推定する簡単な方法は、次の関数を使用することです:yt+13(1)=α13yt(1)+σεt+13εtα13σlm()

> lag13 <- lm(y2[14:28,1] ~ y2[1:15,1] + 0)
> lag13

Call:
lm(formula = y2[14:28, 1] ~ y2[1:15, 1] + 0)

Coefficients:
y2[1:15, 1]  
     0.6479  

> a13 <- coef(lag13)
> s13 <- summary(lag13)$sigma

妥当性テストとして、与えられたデータ(黒)と、PC1のモデルのランダムな軌跡(青)を1年先までプロットします。

t.f <- 29:41
pc1 <- m$y[,1]
pc1.f <- (predict(trend, newdata = data.frame(t = t.f))
          + a13 * y2[16:28, 1]
          + rnorm(13, sd = s13))
plot(t, pc1, xlim = range(t, t.f), ylim = range(pc1, pc1.f),
     type = "b", ylab = "PC1")
points(t.f, pc1.f, col = "blue", type = "b")

PC1のシミュレートされた軌道

青のシミュレートされたパスは、データの合理的な継続のように見えます。PC2とPC3のコレログラムには有意な相関関係は示されていないため、これらのコンポーネントをホワイトノイズとしてモデル化します。PC4は相関を示しますが、全体の分散にはほとんど寄与しないため、モデリングする価値がないと思われます。また、このコンポーネントをホワイトノイズとしてモデル化します。

ここで、さらに2つのパラメーターを適合させました。これにより、モデル内の合計9つのパラメーター(PCAを含む)が得られます。これは、112個の数字で構成されるデータを使用して開始したとき、不合理に思えません。

予測。 ノイズを除外して(平均を取得)、PCAを逆にすると、数値の予測を取得できます。

> pc1.f <- predict(trend, newdata = data.frame(t = t.f)) + a13 * y2[16:28, 1]
> y.f <- data.frame(PC1 = pc1.f, PC2 = 0, PC3 = 0, PC4 = 0)
> x.f <- fromCoords(m, y.f)
> rownames(x.f) <- t.f
> x.f
          W       wd       wc         p
29 4.456825 4.582231 3.919151 0.5616497
30 4.407551 4.563510 3.899012 0.5582053
31 4.427701 4.571166 3.907248 0.5596139
32 4.466062 4.585740 3.922927 0.5622955
33 4.327391 4.533055 3.866250 0.5526018
34 4.304330 4.524294 3.856824 0.5509898
35 4.342835 4.538923 3.872562 0.5536814
36 4.297404 4.521663 3.853993 0.5505056
37 4.281638 4.515673 3.847549 0.5494035
38 4.186515 4.479533 3.808671 0.5427540
39 4.377147 4.551959 3.886586 0.5560799
40 4.257569 4.506528 3.837712 0.5477210
41 4.289875 4.518802 3.850916 0.5499793

不確かさのバンドは、分析的に、または単にモンテカルロを使用して取得できます。

N <- 1000 # number of Monte Carlo samples
W.f <- matrix(NA, N, 13)
for (i in 1:N) {
    y.f <- data.frame(PC1 = (predict(trend, newdata = data.frame(t = t.f))
              + a13 * y2[16:28, 1]
              + rnorm(13, sd = s13)),
              PC2 = rnorm(13, sd = sd(y2[,2])),
              PC3 = rnorm(13, sd = sd(y2[, 3])),
              PC4 = rnorm(13, sd = sd(y2[, 4])))
    x.f <- fromCoords(m, y.f)
    W.f[i,] <- x.f[, 1]
}
bands <- apply(W.f, 2,
               function(x) quantile(x, c(0.025, 0.15, 0.5, 0.85, 0.975)))
plot(t, x$W, xlim = range(t, t.f), ylim = range(x$W, bands),
     type = "b", ylab = "W")
for (b in 1:5) {
    lines(c(28, t.f), c(x$W[28], bands[b,]), col = "grey")
}

予測の不確実性バンド

プロットは、の実際のデータと、近似モデルを使用した予測の60%(内側3行)および95%(外側2行)の不確実性バンドを示しています。W


1
興味深いアプローチ。これを少し消化しましょう。
Dimitriy V. Masterov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.