ML法を用いた自己回帰移動平均(VARMA)モデルのフィット

Fortranによるサンプルソースコード : 使用ルーチン名:g13ddf

ホーム > 製品 > nAG数値計算ライブラリ > nAG Fortranライブラリ > サンプルソースコード集 > ML法を用いた自己回帰移動平均(VARMA)モデルのフィット

Keyword: ML法, 自己回帰移動平均, VARMA, 時系列, フィット

概要

本サンプルはML法を用いた自己回帰移動平均(VARMA)モデルのフィットを行うFortranによるサンプルプログラムです。 本サンプルは以下の式で表されるARモデルを長さ48の二つの時系列にフィットさせ、結果を出力します。

VARMAのデータ 

※本サンプルはnAG Fortranライブラリに含まれるルーチン g13ddf() のExampleコードです。本サンプル及びルーチンの詳細情報は g13ddf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本ルーチンの詳細はg13ddf のマニュアルページを参照)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

このデータをダウンロード
G13DDF Example Program Data
2 1 0 48 T                                    :: K,IP,IQ,N,MEAN
-1.490 -1.620  5.200  6.230  6.210  5.860  
 4.090  3.180  2.620  1.490  1.170  0.850 
-0.350  0.240  2.440  2.580  2.040  0.400 
 2.260  3.340  5.090  5.000  4.780  4.110 
 3.450  1.650  1.290  4.090  6.320  7.500 
 3.890  1.580  5.210  5.250  4.930  7.380 
 5.870  5.810  9.680  9.070  7.290  7.840 
 7.550  7.320  7.970  7.760  7.000  8.350 
 7.340  6.350  6.960  8.540  6.620  4.970 
 4.550  4.810  4.750  4.760 10.880 10.010 
11.620 10.360  6.400  6.240  7.930  4.040 
 3.730  5.600  5.350  6.810  8.270  7.680 
 6.650  6.080 10.250  9.140 17.750 13.300 
 9.630  6.800  4.080  5.060  4.940  6.650 
 7.940 10.760 11.890  5.850  9.010  7.500 
10.020 10.380  8.150  8.370 10.730 12.140     :: End of W 
-1 0.0001 3000 2                              :: IPRINT,CGETOL,MAXCAL,ISHOW
 T                                            :: EXACT
0.0 0.0 0.0 0.0 0.0 0.0                       :: PAR
 F   F   T   F   F   F                        :: PARHLD
0.0
0.0 0.0                                       :: End of QQ

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に観測された時系列の数(k=2)、ARパラメータ行列の数(ip=1)、MAパラメータ行列の数(iq=0)、時系列の観測値の数(n=48)、平均μ が推定されたかゼロとして扱われるか(mean=T:推定)を指定しています。
  • 3~18行目に時系列データWを指定しています。
  • 19行目に自動モニタリングルーチンが呼び出される頻度(iprint=-1:モニタリングされない)、解の精度(cgetol=0.0001)、尤度計算の最大数(maxcal=3000)、出力される内容(ishow=2:最大尤度推定値の表と標準誤差)を指定しています。
  • 20行目に厳密な最大尤度推定値を計算するか条件つき尤度推定値を計算するか(exact=T:厳密な最大尤度推定値)を指定しています。
  • 21行目に初期のパラメータ推定値(par)を指定しています。
  • 22行目にパラメータが一定の値(parhld=T)か自由に値を設定できるか(parhld=F)を指定しています。
  • 23~24行目にΣの初期推定値(qq)を指定しています。

出力結果

(本ルーチンの詳細はg13ddf のマニュアルページを参照)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

この出力例をダウンロード
 G13DDF Example Program Results


 VALUE OF LOG LIKELIHOOD FUNCTION ON EXIT = -0.20280E+03

 MAXIMUM LIKELIHOOD ESTIMATES OF AR PARAMETER MATRICES
 -----------------------------------------------------

 PHI(1)    ROW-WISE :    0.802   0.065
                       ( 0.091)( 0.102)

                         0.000   0.575
                       ( 0.000)( 0.121)

 MAXIMUM LIKELIHOOD ESTIMATE OF PROCESS MEAN
 -------------------------------------------

                         4.271   7.825
                       ( 1.219)( 0.776)

 MAXIMUM LIKELIHOOD ESTIMATE OF SIGMA MATRIX
 -------------------------------------------

                         2.964

                         0.637   5.380

           RESIDUAL SERIES NUMBER  1
           -------------------------

   T     1      2      3      4      5      6      7      8
 V(T)  -3.33  -1.24   5.75   1.27   0.32   0.11  -1.27  -0.73

   T     9     10     11     12     13     14     15     16
 V(T)  -0.58  -1.26  -0.67  -1.13  -2.02  -0.57   1.24  -0.13

   T    17     18     19     20     21     22     23     24
 V(T)  -0.77  -2.09   1.34   0.95   1.71   0.23  -0.01  -0.60

   T    25     26     27     28     29     30     31     32
 V(T)  -0.68  -1.89  -0.77   2.05   2.11   0.94  -3.32  -2.50

   T    33     34     35     36     37     38     39     40
 V(T)   3.16   0.47   0.05   2.77  -0.82   0.25   3.99   0.20

   T    41     42     43     44     45     46     47     48
 V(T)  -0.70   1.07   0.44   0.28   1.09   0.50  -0.10   1.70

           RESIDUAL SERIES NUMBER  2
           -------------------------

   T     1      2      3      4      5      6      7      8
 V(T)  -0.19  -1.20  -0.02   1.21  -1.62  -2.16  -1.63  -1.13

   T     9     10     11     12     13     14     15     16
 V(T)  -1.34  -1.30   4.82   0.43   2.54   0.35  -2.88  -0.77

   T    17     18     19     20     21     22     23     24
 V(T)   1.02  -3.85  -1.92   0.13  -1.20   0.41   1.03  -0.40

   T    25     26     27     28     29     30     31     32
 V(T)  -1.09  -1.07   3.43  -0.08   9.17  -0.23  -1.34  -2.06

   T    33     34     35     36     37     38     39     40
 V(T)  -3.16  -0.61  -1.30   0.48   0.79   2.87   2.38  -4.31

   T    41     42     43     44     45     46     47     48
 V(T)   2.32  -1.01   2.38   1.29  -1.14   0.36   2.59   2.64

  • 4行目に終了時の対数尤度関数の値が出力されています。
  • 9~13行目にARパラメータ行列の最尤推定値が出力されています。
  • 18~19行目に処理平均の最尤推定値が出力されています。
  • 24~26行目にシグマ行列の最尤推定値が出力されています。
  • 31~47行目に一つ目の残差時系列が出力されています。
  • 52~68行目に二つ目の残差時系列が出力されています。

ソースコード

(本ルーチンの詳細はg13ddf のマニュアルページを参照)

※本サンプルソースコードは科学技術・統計計算ライブラリである「nAG Fortranライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

このソースコードをダウンロード
    PROGRAM g13ddfe

!      G13DDF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g13ddf, nag_wp, x04abf
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: iset = 1, nin = 5, nout = 6
!      .. Local Scalars ..
       REAL (KIND=nag_wp)              :: cgetol, rlogl
       INTEGER                         :: i, ifail, ip, iprint, iq, ishow, k,  &
                                          kmax, ldcm, maxcal, n, nadv, niter,  &
                                          npar
       LOGICAL                         :: exact, mean
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: cm(:,:), g(:), par(:), qq(:,:),      &
                                          v(:,:), w(:,:)
       LOGICAL, ALLOCATABLE            :: parhld(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'G13DDF Example Program Results'
       WRITE (nout,*)
       FLUSH (nout)

!      Skip heading in data file
       READ (nin,*)

!      Read in problem size
       READ (nin,*) k, ip, iq, n, mean

!      Calculate NPAR
       npar = (ip+iq)*k*k
       IF (mean) THEN
          npar = npar + k
       END IF

       ldcm = npar
       kmax = k
       ALLOCATE (par(npar),qq(kmax,k),w(kmax,n),v(kmax,n),g(npar), &
          cm(ldcm,npar),parhld(npar))

!      Read in series
       READ (nin,*) (w(i,1:n),i=1,k)

!      Read in control parameters
       READ (nin,*) iprint, cgetol, maxcal, ishow

!      Read in exact likelihood flag
       READ (nin,*) exact

!      Read in initial parameter estimates and free parameter flags
       READ (nin,*) par(1:npar)
       READ (nin,*) parhld(1:npar)

!      Read in initial values for covariance matrix QQ
       READ (nin,*) (qq(i,1:i),i=1,k)

!      Set the advisory channel to NOUT for monitoring information
       IF (iprint>=0 .OR. ishow/=0) THEN
          nadv = nout
          CALL x04abf(iset,nadv)
       END IF

!      Fit a VARMA model
       ifail = 0
       CALL g13ddf(k,n,ip,iq,mean,par,npar,qq,kmax,w,parhld,exact,iprint, &
          cgetol,maxcal,ishow,niter,rlogl,v,g,cm,ldcm,ifail)

    END PROGRAM g13ddfe


関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks