Ubuntu on IBM CloudにOctaveとdynareをインストール + 経済モデルシミュレーション

###### 環境
- Windows 10 Home 64bit(接続元)
  - TigerVNCクライアント
    - 接続元-接続先間でVNC(ここではGUI)接続を実現
  - Teraterm
    - VNC接続の際にSSHポート転送機能を利用 
- Ubuntu 20.04 64bit(接続先)
  - TigerVNCサーバ
    - 接続元-接続先間でGUI接続を実現
  - Octave(Ver 5.2.0)
    - 主に数値解析を目的とした高レベルプログラミング言語環境
    https://www.gnu.org/software/octave/index
    - 無料
  - dynare(Ver 4.6.0)
    - 様々な経済モデルを処理するためのソフトウェアプラットフォーム
    https://www.dynare.org/
    - Octaveのアドインとして機能
    - 無料
###### 手順
###### 1. クラウドサーバ(Virtual Server for Classic)を注文
- サイト
  - https://cloud.ibm.com/gen1/infrastructure/provision/vs
- タイプ・スペック
  - 仮想サーバのタイプ:一時
  - ロケーション: TOK05 東京
  - プロファイル: 平衡型 | B1.2x4(vCPU 2 RAM 4GB SANストレージ 25GB) 
  - OS: Ubuntu 20.04 LTS Focal Fossa Minimal Install(64bit)
  - パブリック・セキュリティー・グループ: allow_outbound
    - クラウドサーバに端を発したパブリックインターフェースを介した外部への通信(パブリックアウトバウンド)とその応答のみを許可 
  - アップリンク・ポート速度: 100Mbps
###### 2. SSL-VPN通信でプライベート側からサーバにsshなどで接続し、Octave・dynareなどをインストール
- サイト
  - https://www.ibm.com/cloud/vpn-access
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/f0816da3-265c-e27d-bdbe-baaede0af27d.png)
```
apt update -y
apt upgrade -y 
apt install octave dynare liboctave-dev x13as -y
```
###### 3. 続けてGUI環境を導入すると共にVNC接続できるよう設定
```
apt install tasksel -y
tasksel install ubuntu-desktop
systemctl set-default graphical.target
reboot # 再起動後、サーバに再接続
apt install tigervnc-standalone-server -y # TigerVNCサーバをダウンロード
adduser vncuser
usermod -a -G sudo vncuser
su vncuser
vncpasswd # パスワードを入力後、以下のように出力されるのでnを入力
Would you like to enter a view-only password (y/n)? n
sudo vncserver -localhost no
sudo vncserver -list # 例えば以下のように出力される
X DISPLAY #     RFB PORT #      PROCESS ID
:1              5901            1917
```
###### 4. クライアント側でSSHポート転送機能を有効化、また、VNC接続できるよう設定、その上でVNC接続を実行
- Teratermをダウンロード(ない場合)
  - サイト
    - https://forest.watch.impress.co.jp/library/software/utf8teraterm/
  - 設定(SSHポート転送を有効化)
    - 設定 > SSH転送 > 追加 とクリック
    - ローカルポート(49152 から 60999 までの間であれば不具合は少ない)、リモート側ホスト(クラウドサーバのプライベートIPアドレス)、ポートを下記のように設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/5929fe13-c942-c0e3-2dcc-249b6daa5506.png)
    - 設定 > 設定の保存 とクリック(Teratermを再度立ち上げた際には、設定 > 設定の読み込み とクリックし、保存した設定ファイルを読み込む必要あり)
- TigerVNCクライアントをダウンロード
  - サイト: vncviewer64-1.12.0.exe
    - https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/
  - 設定
    - ソフトを⽴ち上げ127.0.0.1:55901と⼊⼒(VNC通信を安全に⾏うために先ほど設定したSSHポート転送機能を利⽤。そのため、127.0.0.1(ループバックアドレス) + 55901ポートを指定)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/c192f14c-2aeb-0fc3-6579-6dd60ddda6a0.png)
    - 設定したVNCパスワードを⼊⼒
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/998571d5-f589-ce29-2073-5060e4b0ca37.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/3c001743-e3e2-4354-d957-8e5db3dd274c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/223c0370-b27b-94c1-d739-80f3feac790f.png)
    - 接続完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/1c014857-f0b6-3fec-85c2-64d136caaf51.png)
    - すぐに画⾯の⾃動ロックを無効化(※ロックが発動してしまうと、解除のため正しいパスワードを打ち込んでも、なぜかパスワードエラーとなりログイン不能--調査中--)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/34d8d9aa-64b2-88d4-5fef-22a65f68c982.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/13ba0df9-0400-e5d7-598a-fb8baf85fbce.png)
###### 5. terminalを起動させてviなどで今回実⾏する実物的景気循環モデル(Real Business Cycle Model)のファイルを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/75d68384-3a62-0b98-f6e8-660b3f054132.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/6df009bf-e33b-2f1a-8165-475c365fa1ef.png)
###### コード
```rbc.mod
var c k y A; // 消費、資本、生産量(=需要量)、技術的ショック
varexo e; // ホワイトノイズ
parameters alpha beta delta rho sdG;
alpha=0.37; // 資本の弾力性
beta=0.98; // 主観割引率
delta=0.06/4; // 資本減耗率
rho=0.8; // ショックの持続性
sdG = 0.25; // ショック値

model;
1/exp(c) = beta*(1 - delta + alpha*exp(A(+1))*exp(k)^(alpha-1))*1/exp(c(+1));
exp(y) = exp(c) + exp(k) - (1 - delta)*exp(k(-1));
exp(y) = exp(A)*exp(k(-1))^(alpha);
A = rho*A(-1) + e;
end;

check;

shocks;
var e = sdG^2;
end;

stoch_simul(periods=350);
```
###### 6 terminalからOctaveを起動(octave --gui)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/b57b7f33-9681-bfa4-330c-1902bff8edcb.png)
###### 7 OctaveのCommand Windowでdynareを実⾏(dynare rbc.mod)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/492ad9fb-4ce4-0669-d89a-cf69b9a019c2.png)
###### 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/45b6eb62-474e-7100-a1d0-7085725203f4.png)
###### 8 VNC接続を終了(vncserver -kill :1、1はX DISPLAY番号、vncserver -listで確認可)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/34101bf5-e73c-681a-4648-bc2652a06b1a.png)
###### 参考
Ubuntu 20.04にVNCサーバーをインストールする⽅法
https://tutorialcrawler.com/ubuntu-debian/ubuntu-20-04%E3%81%ABvnc%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/

VNC 利⽤⼿順まとめ
https://qiita.com/ryo-sato/items/7cf2da401dd13dd4f36d

リアルビジネスサイクル理論
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB%E7%90%86%E8%AB%96