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

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

Keyword: AGARCH, 非対称, 実現値

概要

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

AGARCH type2のデータ 

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

入力データ

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

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

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

出力結果

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

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

 Realization Number 1
    I            HT(I)            ET(I)
   --------------------------------------
     1           0.6400           0.2790
     2           0.5336          -0.9098
     3           0.7780           0.5840
     4           0.6491           0.6731
     5           0.5670          -0.9456
     6           0.8275          -0.0172
     7           0.6593          -0.2390
     8           0.5639           0.5980
     9           0.5005          -0.0032
    10           0.4303           0.2917

 Realization Number 2
    I            HT(I)            ET(I)
   --------------------------------------
     1           0.3874          -1.0205
     2           0.7594          -0.5659
     3           0.7371           0.2709
     4           0.6013          -1.2499
     5           1.1133           0.2505
     6           0.8638          -0.5457
     7           0.8014          -0.6395
     8           0.8013           2.2341
     9           1.0003           1.2908
    10           0.9002           0.0727
 

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

ソースコード

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

※本サンプルソースコードは科学技術・統計計算ライブラリである「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 g05pefe

!      G05PEF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g05kff, g05pef, 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,*) 'G05PEF 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 = iq + ip + 1
       ALLOCATE (theta(ltheta),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 g05pef(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 g05pefe


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