AGARCH type1プロセスの実現値の生成

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

Keyword: AGARCH, 非対称, 実現値

概要

本サンプルはAGARCH(非対称GARCH) type1プロセスの実現値の生成を行うFortranによるサンプルプログラムです。 本サンプルは以下の式で示されるAGARCH type1モデルにより10個の観測値から成る2つの実現値を生成し出力します。

AGARCH type1のデータ 

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

入力データ

(本ルーチンの詳細はg05pdf のマニュアルページを参照)
1
2
3
4
5
6
7

このデータをダウンロード
G05PDF Example Program Data
1  1  1762543      :: GENID,SUBID,SEED(1)
10  2              :: NUM,NREAL
0  3               :: IP,IQ
'N'
0.8  0.6  0.2  0.1 :: THETA
-0.4               :: GAMMA

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に使用する生成器(genid=1:nAG基本生成器)、生成器に関する情報(subid=1:GENIDが1の場合この値は参照されません)、生成器の初期値(seed=1762543)を指定しています。
  • 3行目に生成される数列の項数(num=10)と実現値の数(nreal=2)を指定しています。
  • 4行目に係数βの数(ip=0)と係数αの数(iq=3)を指定しています。
  • 5行目に誤差分布の種類(dist='N':正規分布)を指定しています。
  • 6行目に係数α0の値(theta(1)=0.8)、α1の値(theta(2)=0.6)、α2の値(theta(3)=0.2)とα3の値(theta(4)=0.1)を指定しています。
  • 7行目にパラメータγ(gamma=-0.4)を指定しています。

出力結果

(本ルーチンの詳細はg05pdf のマニュアルページを参照)
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

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

  Realization Number 1
    I            HT(I)            ET(I)
   --------------------------------------
     1           0.9440           0.3389
     2           0.8502          -1.1484
     3           2.2553           0.9943
     4           1.4918           1.0204
     5           1.3413          -1.4544
     6           2.9757          -0.0326
     7           1.6386          -0.3767
     8           1.5433           0.9892
     9           1.1477          -0.0049
    10           1.0281           0.4508

  Realization Number 2
    I            HT(I)            ET(I)
   --------------------------------------
     1           0.8691          -1.5286
     2           3.0485          -1.1339
     3           2.9558           0.5424
     4           1.6547          -2.0734
     5           4.7100           0.5153
     6           2.0336          -0.8373
     7           2.3331          -1.0912
     8           2.4417           3.8999
     9           8.7473           3.8171
    10          10.4783           0.2480
 

  • 3~15行目に1つめの実現値の条件付き分散と観測値が出力されています。
  • 17~29行目に2つめの実現値の条件付き分散と観測値が出力されています。

ソースコード

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

※本サンプルソースコードは科学技術・統計計算ライブラリである「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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92

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

!      G05PDF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g05kff, g05pdf, nag_wp
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: lseed = 1, nin = 5, nout = 6
!      .. Local Scalars ..
       REAL (KIND=nag_wp)              :: gamma
       INTEGER                         :: df, genid, i, ifail, ip, iq, lr,     &
                                          lstate, ltheta, nreal, num, rn, subid
       LOGICAL                         :: fcall
       CHARACTER (1)                   :: dist
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: et(:), ht(:), r(:), theta(:)
       INTEGER                         :: seed(lseed)
       INTEGER, ALLOCATABLE            :: state(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'G05PDF Example Program Results'
       WRITE (nout,*)

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

!      Read in the base generator information and seed
       READ (nin,*) genid, subid, seed(1)

!      Initial call to initialiser to get size of STATE array
       lstate = 0
       ALLOCATE (state(lstate))
       ifail = 0
       CALL g05kff(genid,subid,seed,lseed,state,lstate,ifail)

!      Reallocate STATE
       DEALLOCATE (state)
       ALLOCATE (state(lstate))

!      Initialize the generator to a repeatable sequence
       ifail = 0
       CALL g05kff(genid,subid,seed,lseed,state,lstate,ifail)

!      Read in sample size and number of realizations
       READ (nin,*) num, nreal

!      Read in number of coefficients
       READ (nin,*) ip, iq

       lr = 2*(ip+iq+2)
       ltheta = ip + iq + 1
       ALLOCATE (theta(ip+iq+1),ht(num),et(num),r(lr))

!      Read in error distribution
       READ (nin,*) dist

!      Read in degrees of freedom if required
       IF (dist=='T' .OR. dist=='t') THEN
          READ (nin,*) df
       END IF

!      Read in rest of series parameters
       READ (nin,*) theta(1:ltheta)
       READ (nin,*) gamma

!      Set FCALL for first realization
       fcall = .TRUE.

!      Generate NREAL realizations
       DO rn = 1, nreal

          ifail = 0
          CALL g05pdf(dist,num,ip,iq,theta,gamma,df,ht,et,fcall,r,lr,state, &
             ifail)

!         Display the results
          WRITE (nout,99998) ' Realization Number ', rn
          WRITE (nout,*) '   I            HT(I)            ET(I)'
          WRITE (nout,*) '  --------------------------------------'
          WRITE (nout,99999) (i,ht(i),et(i),i=1,num)
          WRITE (nout,*)

!         Set FCALL flag for any further realizations
          fcall = .FALSE.
       END DO

99999  FORMAT (1X,I5,1X,F16.4,1X,F16.4)
99998  FORMAT (1X,A,I0)
    END PROGRAM g05pdfe


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