• 検索結果がありません。

新しい経済分析システムの提唱-香川大学学術情報リポジトリ

N/A
N/A
Protected

Academic year: 2021

シェア "新しい経済分析システムの提唱-香川大学学術情報リポジトリ"

Copied!
24
0
0

読み込み中.... (全文を見る)

全文

(1)

新しい経済分析システムの提唱

大 野 拓 行

1れ はじめに ξーソナル・コンビューターの普及により,計算機を用いた経済学の研究や 教育が身近なものになり,いままで大型計算機に頼ってきたものが研究室で出 来るようになってきた。パーソナル・コンビューターの利点を簡単に要約すれ ば,導入期にある程度の投資さえすれば,いつでも,身近に,自由な形で利用 できることであろう。研究面では,分析に用いる文献や資料は研究室にある場 合が多いので,分析材料があるところで計算機が利用できることになり研究の 効率性が上がる。さらに,研究には試行錯誤を伴うことが多いが,研究室に計 算機があることによって,他人に迷惑をかけずに自分が納得できるまで試行を 繰り返すことができるという利点も生じてくる。統計学や計量経済学の教育面 でもパーソナル・コンビューターを利用すれば単に考え方や手法を教えるだけ でなく,いろいろな手法のアルゴリズムを身近なものとして教えることが可能 になる。さらに,現実のデータを用いた応用例を手軽に作成でき, しかもそれ を視覚的に示すことも可能となる。 4ーソナル・コンピューターを研究や教育に利用しようとする場合には目的 にあったソフト(プログラム〉が必要である。ソフトは自分で作成することも, 既存のパッケージソフトを利用することも可能であるが,それぞれに長所と短 所を持ち合わせている。自分で、フ。ログラムを書けば目的に最もフィットしたソ フトを作成できる半面,プログラムを書いたり,テストしたりするのに多くの 時聞を費やす必要がある。一方,パーソナル・コンビューターのハード面での 普及に伴い次第に普及してきた経済分析用のパッケージソフトを利用するとソ

(2)

-136- 第60巻 第l号 136 フトを開発するのに時聞をかけなくて済むという利点がある。しかし,その半 面で研究や教育が使用するパッケージソフトの内容に大きく制限され画一的な ものになりがちであるという欠点がある。 研究教育者はあまり時聞をかけずに目的に合ったソフトの利用を望んでいる のであるが,一般的には目的が特殊になるほどソフトの開発に時間を費やすこ とが必要とされる。しかしながら,経済分析の場合,種々の分析手法に使用さ れる基本的演算は共通なものが多く,個々の分析手法は基本的演算の組み合わ せが異なるだけといった場合が多し、。そこで, このような経済分析に特有な性 質を利用すれば,汎用性があり,しかも個性的な研究や教育にも対応可能なシ ステムを構築できると思うのである。以下の諸節で筆者が提唱する経済分析シ ステムの基本的な考え方を例示を含めながら述べていきたいと思う。

2

基本的な考え方 一般的なプログラム作成方法はソースプログラムを

FORTRAN

BASIC

で書き,それをコンパイル, リンクして実行形式ファイノレを作成する。ある目 的のためにプログラムを自分で作成す刷る場合には,最初からソースプログラム を書くか,過去に書いたソースプログラムを修正することになる。また, 目的 に合わせて他人が作成したプログラムやパッケージソフトを修正しようとする 場合にもソースプログラムを修正するのが一般的である。しかし,自分が過去 に書いたソースプログラムの修正でさえ,プログラムが長くなると困難な場合 が多くある。まして,他人のプログラムやパッケージソフトを修正して利用し ようとする場合にはかなりの忍耐と努力が要求されるであろう。 書き方を工夫することによって,読みやすく,修正しやすいプログラムを書 くことは可能であるがそれにも限度がある。例えば,サフツレーチンを多用して メインプログラムをすっきりさせることは可能であるが,そのようなプログラ ムを修正する場合にも使用されている変数や配列の大きさに注意する必要があ るし,サブルーチンプログラムだけを完全に独立した形で使用することはでき ない。このような意味で,サブルーチンプログラムは独立しているようである

(3)

137 新しい経済分析システムの提唱 137-がプログラムの他の部分と密接に関連しているのである。これらのことを経済 学における代表的分析である回帰分析を例にとって説明してみよう。 回帰分析における回帰係数を計算する過程を読みやすくプログラムするに は,行列の転置,積,逆行列のサブルーチンプログラムを作成し,メインプロ グラムでは計算順序に従って各サブルーチンを呼び出すようにするのが一般的 であろう。次に,このプログラムを利用して産業連関分析の産出水準決定のプ ログラムを作成する場合を考えて見ょう。 この時,回帰分析のプログラムを参考にしようとする研究者は,まずソース プログラムの全体を見て,使用されている変数,配列,サブ、ルーチンプログラ ムなどを点検する必要がある。サブルーチンプログラムを使用している場合に は,個々のサブルーチンは変更しなくてもよいかもしれないが,メインプログ ラムにおける配列宣言などを修正する必要がある。このような作業も,この例 のように,単純な場合は簡単であるがプログラムが大きくなり COMMON文 などを多用している場合には複雑になるであろう。 さらに,単に逆行列を計算したい場合を考えてみると(経済分析ではこのよ うな単純な行列演算を必要とする場合がかなりある),回帰分析のプログラムを 修正するより,はじめからプログラムを書いた方が早く目的とするプログラム が作成できるかも知れない。 このようにある特定の分析を

1

つのプログラムでしょうとすると,個々のプ ログラムに重複する箇所が出てくるし,新たな計算が必要になった場合には常 にソースプログラムのレベルで、修正が必要となってくる。そこで,考え方を変 え,逆行列の計算などの経済分析によく使用される計算を完全に独立したコマ ンド(以下で詳しく述べる〉として作成し,特定の分析は基本的演算コマンド を組み合わせて行うようなシステムを構築すれば,今述べたような欠点を解消 し,かっ,新たな利点が生じてくると考えられる。 現在のパッケージソフトの傾向は少数のプログラムにより多くの機能を持た せようとするものであるが,筆者が提唱しようとするシステムは,このような 傾向とは異なり,ブロック玩具のようなもので,ある特定の機能しか持たない

(4)

-138 第60巻 第1号 138 小さなコマンド(部品〕を組み合わせて目的となる作業を行おうとするもので ある。このことを最小二乗法を例に述べてみよう。 回帰係数の最小二乗推定量は

s

=

(

X

'

X)

lX'y

) 噌E A ( で与えられ,これは行列の転置,積,および逆行列という

3

つの基本的演算の 組み合わせである。いま,逆行列の計算だけを行う完全に独立したプログラム を作成し,コンパイル,リング後の実行形式ファイノレにMATINVという名前 を付けるとしよう。 MATINVを完全に独立したコマンドとするためには,そ のソースプログラムに,逆行列を計算する機能だけでなく,行列データの入力 機能と演算結果の出力機能を含ませる必要がある。逆行列をある特定の目的の ため使用しようとする研究教育者は逆行列の計算の細部まで知る必要はなく, そのプログラムの使用法が解れば十分である場合が多し、。そこで,ここではソー スプログラムの細部には立ち入らないで,その使用法だけを述べることにする。 (ソースプログラムについては後の節で述べる〉 MATINVの使用法は簡単で, MATINV A B (2) である。機能は,ファイノレAの行列データを読み込んで逆行列を計算して,そ の結果をファイルBに出力するだけである。実際の実行例を図1に示す。この よ う に MATINVはMS-DOS付 属 の 外 部 コ マ ン ド の FORMATや

DISKCOPYと同様に利用できるのである。 (2)式において MATINVがコマ ンドで, AとBがそのパラメーターである。個々のコマンドをMS-DOSの外 部コマンドとして利用できるのがこのシステムの第lの利点である。 逆行列と同様に行列の転置と積のコマンドを作成する。それぞれの使用法は, MATTRN A B MATPRO A B C

(

3

)

(

4

)

(1) MS-DOSは米 Microsoft社の商標である。 MS-DOSvこは,システム自体に含まれてい るコマンド(内部コマンド〉とコマンドの実行形式のファイノレが必要なコマンド(外部コマ ンド〕とがある。

(5)

139 新しい経済分析システムの提唱 -139-図 1 逆行列計算コマンド MATINVの使用例 /5 7 6 5¥ I 7 10 8 7 ¥

I

~として A→の計算を実行する。 ¥ 6 8 10 9 I ¥5 7 9 10/ ファイノL-

A

の内容表示

A

>

type A 住) typeはファイノレの内容を表示させるMS-DOS付属コマント。最 4 4 初の4は行数,次の 4は列数を表し,それ以後が行列Aの内容。行 5 7 6 5 列データの記述法は図 4参照。 7 10 8 7 6 8 10 9 5 7 9 10 MATINVの実行 A > MATINV A B ファイノレ Bの内容表示 A

>

type B 4 4 6800000000000 E +01 -4 100000000000 E +01 -1 700000000000 E +01 L 000000000000 E +01 -4100000000000E +01 2 500000000000E +01 1 OOOOOOOOOOOOE +01 -6000000000000E +00 -1 700000000000 E + 0 1 1 000000000000 E + 0 1 5 000000000000 E + 00 -3 000000000000 E + 00 1 000000000000 E + 0 1 -6 000000000000 E + 00 -3 000000000000 E + 00 2 000000000000 E + 00 である。 (3)式 は 行 列 の 転 置 の コ マ ン ド で A の 行 列 を 読 み 込 ん で , そ の 転 置 行 列 をファイノレBに出力する。 (4)式 は 行 列 の 積 の コ マ ン ド でAとBの積を計算し, 結果をファイノレ

C

に出力する。 (2),(3), (4)の コ マ ン ド を 組 み 合 わ せ る こ と に よ っ て(1)式は以下のように記述できる。

MATTRN X

MATPRO X'

MATINV X'X

MATPRO X'

MATPRO IX'X

X'

(

5

)

(

6

)

(7) (8) (9)

X

Y

X

Y

X

X'X

X'y

B

(5)から(9)ま で コ マ ン ド を 順 番 に 実 行 す る こ と に よ っ て フ ァ イ ル B に 回 帰 係 数 が 出 力 さ れ る こ と に な る 。 こ の よ う な シ ス テ ム を 用 い る こ と に よ っ て 以 下 の よ う な利点が生じてくる。

(6)

-140- 第60巻 第1号 140

a

個々のコマンドを単独に

MS-DOS

の外部コマンドとして使用できる。

b

.

コマンドの組み合わせ方法は利用者の自由である。 C 利用者は個々のコマンドの内部構造に注意する必要はない。他人が作成 したコマンドでも計算が正しく,入出力の形式が統一しておれば自由に利 用可能である。 d.作業内容が簡潔に記述できる。このことは研究面でも教育面でも便利で ある。

e

作業の途中結果がファイルに保存されるので,計算のチェックや途中結 果を用いた別の分析が簡単にできる。不要のファイノレは最後に

MS-DOS

付属コマンドで消去すればよし、。 f.プログラムの作成や修正がコマンド単位なので,保守や機能拡大が簡単 にできる。 g.新しい作業に対する対応がコマンドの組替えや少数の新規コマンドの作 成で済み汎用性がある。過去に作成したコマンドの蓄積を生かすことがで きる。 h.作業は個々の小さなコマンドを連続的に実行することにより為されるた め

CPU

のメモリーが少なくても大きな作業をすることが可能である。 一方,このシステムの一番の欠点は, コマンドを連続的に実行したり,常に ファイルに対して入出力を繰り返すことによる計算時間の長さである。しかし, 最近急速に普及してきたRAMディスクやハードディスクを利用すればこの 問題は解消することができるであろう。

3

, パッチファイルの利用

MS-DOS

のバッチファイルを利用することにより定型的な作業を

1

つのコ マンドとして実行することが可能となる。さらに

MS-DOS

付属コマンドを利 (2) パッチファイノレとは,そのファイノレを呼び出すとファイノレに記述されているコマンドを 順番に実行していくような特別なファイルである。他のファイノレとはファイノレ拡張子BAT によって区別される。

(7)

1

4

1

新しい経済分析、ンステムの提唱 リスト

1

最 小 二 乗 法

OLSBAT

1 ECHO OFF

2 CLS

3 ---一一一一一一一一一一

4

OLS.BAT

最小二乗法 5

6

使 用 法

OLS %1 %2

7

%1

説明変数行列 8

%2

被説明変数ベクトノレ 9

1

0

出カ

X

'

X

.

.

@

積率行列

I

X

'

X

.

@ 積 率 行 列 の 逆 行 列 11 B @ 係数推定値ベクトノレ E @ 残差ベクトノレ

1

2

VAR

@ 分 散 共 分 散 行 列

1

3

1

4

1

5

ファイノレチエググ

1

6

1

7

OLS$ %1 %2

1

8

I

F

ERRORLEVEL 1

GOTO END

1

9

2

0

ECHO

最小二乗法

2

1

ECHO ON

2

2

2

3

係数推定備を求める。

2

4

2

5

MATTRN

%1

X

'

@

2

6

2

7

MATPRO

X

'

@

%1

X

'

X

.

.

@

2

8

2

9

MATINV

X

'

X

.

@

I

X

'

X

.

@

3

0

3

1

MATPRO

X

'

@

%2

X'Y.@

3

2

3

3

MATPRO

I

X

'

X

.

.

@

X'Y.@

B @

3

4

3

5

分散共分散行列の計算

3

6

3

7

MATPRO

%1

B @

XB@

3

8

3

9

MATADD

%2

X

B

.

@

E

.

@

(8)

-141--142ー 第60巻 第l号 142 40 41

VARCOR

E.@

I

X

'

X

@

VAR

@ 42 43 一時的ファイノレの消去 44

4

5

.

FOR %%X I

N

(

X

'

X

'

Y

XB) DO DEL %%X

@ 46 47 .

END

用することにより複雑な作業も記述可能となる。 パッチファイノレの例として前節の最小二乗法を考えてみよう。回帰係数を計 算する度に(5)式から(9)式のコマンドをキーボードから入力するのは大変であ り,入力ミスによる計算間違いも起こりがちである。そこで, リスト

1

に示す ようなパッチファイル

O

L

S

.

.BAT

を作成することによって,単に

OLS X Y

(10) と入力することによって回帰係数と係数の分散共分散行列を計算することがで きる。

O

L

S

.

.BAT

の内容を詳しく見てゆこう。このノミッチファイルにおいて使 用されている

MS-DOS

付属コマンド

(ECHO

CLS

IF

FOR)

以外のコマ ン ド は

OLS$

MATTRN

MATPRO

MATINV

MATADD

VARCOR

6

つである。

MATTRN

MATPRO

MATINV

はそれぞれ行 列の転置,積,逆行列のコマンドで前節でその使用法と機能は説明したので, ここでは残りの

3

つについてその使用法と機能を説明してし、く。

OLS$ OLS. BA

T

のためのファイルチェック 使用法

OLS$ X Y

X

説明変数行列のファイル名 Y 被説明変数ベクトルのファイル名 機能 ファイル

X

Y

の存在のチェックと

X

Y

の行数, 列数が最小二乗法を適用するのに適切かどうかを チェックする。このコマンドは

O

L

S

.

.BAT

~こ特有 なもので汎用性はなし、。

(9)

143 新しい経済分析システムの提唱 MATADD.行列の加減演算 使 用 法 加 算 MATADD A B C

+

減算 MATADD A B C - -143-機能 行 列AとBの加算あるいは減算を行い,結果をファ イルCに出力する。 VARCOR 係数推定値の分散共分散行列の計算 使 用 法 VARCOR A B C

A

残差ベクトル B 積 率 行 列 の 逆 行 列 機能 残差ベクトノレAと積率行列の逆行列Bを用いて分散 共分散行列を計算し,結果をファイルCに出力する。 OLS.. BATの内容の説明の前にノミッチファイノレの引数について説明をしてお く。パッチファイルの実行時に必要!な値はノミラメーターとして与えることがで きる。 (10)式において OLSがパッチコマンドで, XとYがOLSに対するパラ メーターとなる。パッチファイル内で、はノξラメーターは

%0-%9

で表し, コ マンド実行時にパラメーターと置き換えられる。例えば, (10)式 の よ う な 使 い 方 をすると OLS..BATにおける

%1

%2

が 自 動 的 にXとYに置き換えられて 実行される。 OLS.. BATの

1

行目と 2行 目 はMS-DOS付属コマンドの実行である。 l行 自のECHOOFFは以下 ECHOONが表れるまで画面表示を中止する命令で あり 2行自のCLSは画面消去の命令である。 3行目から 16行 自 ま で は 注 釈 であり実行に関係しなし、。 17行 目 で フ ァ イ ル チ ェ ッ グ コ マ ン ドOLS$を 実 行 し,もしエラーがあれば

1

8

行 自 で47行自のENDに飛んで、作業を終わる。

2

0

行目は単にれ最小二乗法11 という文字列を画面に表示させるMS-DOS付属コ (3) 使用法から見ると, (1的式のパッチコマンドは(2)式の一般コマンドと同じであるがファイ ノレ拡張子が一般コマンドの場合

EXE

COM

なのに対してパッチコマンドは

BAT

であ る点が異なっている。さらに重要な違いは一般コマンドがその内容を簡単に見ることがで きないのに反して,パッチコマンドは一般コマンドを特定の順番に実行するコマンドでそ の内容を内部コマンドtype,copy等で容易に見ることができる点である。

(10)

-144ー 第60巻 第1号 図

2 OLS BAT

の使用例 付表に示した統計データを用いて,次式を計測する。 144 LN(GNP) ==bO+b1*LN(K)+b2*LN(L) (i ) 説明変数行列,被説明変数ベクトノレをそれぞれ, X, Yとすると,モれぞれのファイノレの内 容は以下のようになる。データの記述法は図4を参照のこと。 A > type X A

>

type Y 20 3 20 1 1 11 196 8477 11 535 l 11 264 8 494 11 637 1 11 355 8506 11 758 1 11 458 8 522 1L871 1 11 587 8 536 11944 1 11 713 8525 11993 1 11.806 8 553 12082 l 11 891 8554 12 126 1 11 991 8541 12122 1 12 072 8 556 12159 1 12 143 8 562 12 204 1 12 208 8575 12 256 l 12 265 8 585 12307 l 12 326 8 599 12 358 1 12 393 8 610 12 397 l 12459 8622 12430 l 12 519 8 636 12 462 1 12 575 8 641 12 498 1 12627 8650 12546 l 12686 8657 12587 ファイノレXとYに対して最小二乗法を適用するには

A

>

OLS X

Y

と入力すればよL、。係数推定値はファイノレ

B @

に保存されている。その内容は, A

>

type B.. @ 3 1 -4 261314713396E +00 4 980334117863E -01 1 217637737747E +00 となっているので, bO ==-4..261, b1==0.498, b2 ==L218であることがわかる。また,推定 値の分散共分散行列は, A

>

type VAR @ 3 3 2 526702197474E+01 3768484106729E-01 -3477131149497E+OO 3..768484106734E-01 6124045686370E -03 -5256684277569E -02 -3A77131149499E +00 -5 256684277562E -02 4.794997459184 E -01 となっている。

(11)

145 新しい経済分析システムの提唱 -145ー マンドである。 21仔目で画面表示を復活させる。23行目は注釈である。25行自 から33行目で回帰係数を計算している。ここはファイル名が異なるだけで(5)式 から(9)式までと同じである。 37,39行自で残差 (e

=

Y

-

X

s

)

の計算をして, 41 行自で分散共分散計算コマンドVARCORを実行している。45行目は不要ファ イルX'..@,X'Y引@, X

B

.

.

@を消去する MS-DOS付属コマンドの実行であ る。結局,このパッチファイルの本質的な部分は25,27, 29, 31, 33, 37, 39, 41の8行にすぎないのである。このバッチファイルを実行することによって, 10行目から 12行目に記述したような結果ファイルを得ることができる。 OLS BATによるコブ・ダグラス生産関数の計測例を図Hこ示しておく。 このようにパッチファイノレを作成することにより入力ミスによる計算間違い をなくすることができる。さらに, リスト 1のように,作業内容を簡潔に記述 できるためパッチファイルをプログラムファイルとドキュメントファイルを兼 用したものとして利用することが可能となる。 次に,このシステムの汎用性を示す例をあげてみよう。回帰分析を行う場合, 経済理論からの要請で回帰係数の間にある種の制約を置いて推定を行し、たし、場 合がよくある。その目的のために利用される手法は線型制約付最小二乗法であ るが,研究者の利用可能なパッケージソフトにそれがない場合には自分でプロ グラムを組むか,その手法の使用を諦めるしかなし、。FORTRANなどに慣れて いる研究者は別として,自分でプログラムを組むのは大変で、あるが筆者の提唱 するシステムを利用すれば数式どうり作業手順を記述するだけで簡単に目的と する手法が利用可能となる。 線型制約付最小二乗法の係数推定量とその分散共分散行列は以下の式で与え られる。

s

=

s

-

(

X

'

X)ーlA'[A(X'X)ーlA']-l(As-r) Var(s)= };-};A'(A};A')-lA}; ここで,s:制約なしの最小二乗推定量 };:βの分散共分散行列 A,

r

:

線型制約

As

=

r

におけるA行列と 7ベクトル

1

)

( 12)

(12)

-146ー 第60巻 第1号 リスト 2 制約付最小ニ乗法LCOLS.BAT 1 ECHO OFF 2 CLS 3 一一司--- -4. LCOLS..BAT 線形制約付き最小ニ乗法 5 6 使用法 LCOLS %1 %2 %3 %4 7 . %1 説明変数行列 8. %2被説明変数ベクトル 9 %3, %4 線形制約Ab=ァにおけるA行列と γベクトノレ 10 出力 B @ 無制約の場合の係数推定値ベクトノレ E @ 無制約の場合の残差ベクトノレ VAR@ 無制約の場合の分散共分散行列 LB. @ 線形制約の場合の係数推定値ベクトノレ LE.. @ 線形制約の場合の残差ベクトノレ 11 12 13 14 15 16 LVAR@ 線形制約の場合の分散共分散行列 17 18 19 : ファイノレチhエ ッ グ 20 21 LCOLS$ %1 %2 %3 %4

22 IF ERRORLEVEL 1 GOTO END 23 24. ECHO制約付き最小二乗法 25 ECHO ON 26 27: : OLS..BATを呼び出す。 28 29. COMMAND/C 30 DEL X'X.. @ 31 32 係数推定値を求める。 33 34: MATTRN %3 35 : 36恥1ATPRO IX'X @ 37 : 38: MATPRO %3 39 OLS %1 A' @ A' @ X A @ XA.@ AXA @ %2 146

(13)

1

4

7

新しい経済分析、ンステムの提唱

-147

4

0

MATINV

AXA.@

IAXA @

4

1

4

2

MATPRO

%3

B @

A

B

.

@

4

3

4

4

MATADD

AB @

%4

AB B

.

@

4

5

4

6

MATPRO

XA

@

IAXA @

T..

@

4

7

4

8

MATPRO

T @

AB

B.

@

Tl@

4

9

5

0

MATADD

B @

T

1

@

LB@

5

1

5

2

残差ベクトノレの計算

5

3

:

5

4

.

MATPRO

%1

L

B.

@

XL

B.

@

5

5

5

6

MATADD

%2

XL

B..

@

L

E

.

@

5

7

5

8

分散共分散行列の計算。

5

9

6

0

MATPRO

%3

VAR@

A

S

.

.

@

6

1

6

2

MATPRO

T @

AS @

T

A

S

.

@

6

3

:

6

4

MATADD

VAR@

TAS @

LVAR@

6

5

6

6

!一時的ファイノレの消去

6

7

6

8

FOR %%x I

N

(

A'

I

X

'

X

XA AXA IAXA AB AB B

T

Tl

XLB AS TAS) DO

DEL %%x @

6

9

7

0

END

(

1

1

)

(

1

2

)

式を計算するパッチファイル

L

C

O

L

S

.

.BAT

はリスト

2

のようにな る。

L

C

O

L

S

.

.BAT

において新たに作成したコマンドは

LCOLS$

だけであり, これも先の

O

L

S

.

.BAT

における

OLS$

と同様なもので作業の本質的な部分で はない。

L

C

O

L

S

.

.BAT

において注意すべき所は

2

9

行目である。

(

1

1

)

(

1

2

)

式を計 算するためには前もって制約なしの

OLS

推定値とその分散共分散行列を得て

(14)

-148- 第60巻 第1号 関

3 L

C

O

L

S

.

.

BAT

の使用例 コブ・ダグラス生産関数に1次同次を課すことを図2の(i )式の係数で表現すると, b1+b2 = 1 となり, (ij)式を行列表示As= rで表現すると, A

=

(0 1 1), r

=

1 となる。よって, ファイノレA,rの内容は, A

>

type A 1 3

o

1 1 B

>

type r 1 1 1 となる。(i )式を(ii)式の制約の下で推定するには,

A

>

LCO

L

S

X

Y

A

r と入力すればよい。係数推定値はファイノレLB@に保存されている。その内容は, A

>

type LB..@ 3 1 1 570066645203E +00 5 853885609784E -01 4 146114390222E -01 となっていて, b1+b2 = 1が成立していることがわかる。 148 (ii) おく必要があるので,ここで、パッチコマンド

OLS

を呼び出している。他の一般 コマンドと異なり,パッチファイルの中で他のノミッチコマンドを呼び出す場合 には,このように

COMMAND/C

パッチコマンド 帥 とする必要がある。

LCOLS..BAT

の他の内容はコマンドの組み合わせ方と ファイノレ名が異なるだけなので作業内容の把握は簡単にできると思う。先のコ ブ・ダグラス生産関数に向次性を課した場合の計測例を図3に示す。 このように, このシステムでは過去に作成したコマンドやパッチファイノレの 蓄積を利用して,新しい要請に最小の努力で対応することが可能となるのであ る。研究教育者はこのような基本演算のコマンドをより多く集めれば集める程, 多くの局面に対応できることになる。なお,ここでは行列演算を用いた例をあ げたが,基本的演算コマンドは行列演算に限られないことは明白である。この システムでは入出力のデータの形式が統ーしておれば個々のコマンドの内容は

(15)

149 新しい経済分析システムの提唱 , , d4A Qd A どのようなものでもよいのである。 経済分析では収束判定を含んだ繰り返し計算を行う場合もよくある。そこで, 最後に,このような場合を考えてみよう。いま,次のような,

3

つのパッチファ イルと lつのコマンドがあるとしよう。 IN

T

.

BAT 初期値計算の作業内容を記述したパッチファイル。初期 値はファイノレAに出力されるものとする。 REPEAT引BAT 1回の繰り返し計算においてなされる作業内容を記述し たパッチファイル。計算結果はファイルBに出力される ものとする。

CHEC

K

.

EXE 収束判定用のコマンド。使用法はCHECKA B Cで,

AとBは比較するファイルで ,

Cv

ま収束判定基準値であ る。機能は基準値CによってAとBの内容を比較し,収 束していたらERRORLEVEL0を返し,収束していな かったらERRORLEVEL1を返す。 CHANGE..BAT 収束しなかった場合,次の繰り返し計算に入る前になさ れるパラメーターの変更などの作業を記述したノミッチ ファイノレ。 以上のような部品を揃えれば, リスト 3に示したようなパッチファイルで、目的 とする作業は記述できる。パッチファイルの内容を説明すると

1

行目で初期 値を計算し,

3

行自で最初の繰り返し計算を実行する。そして

7

行自で収束 判定をして収束していると判定されたら

1

9

行自に飛んで作業を終わる。もし収 束しなかったら, 13行自に飛び, 15行自で変更作業を施し, 17行自で13行自 に返る。 この例で示したように,このシステムではコマンド,パッチファイル,

MS

-DOS

付属コマンドを組み合わせることによって複雑な作業も記述可能とな るのである。

(16)

150ー 第60巻 第1号 リスト 3 収束判定を含むパッチファイノレの例

1 I

N

T

2 3

START

4

5 REPEAT

6

7 CHECK A B

0

0

1

8

9 I

F

ERRORLEVEL 1

GOTO LOOP

1

0

1

1

GOTO END

12

1

3

LOOP

14

1

5

CHANGE

16

1

7

GOTO START

18

1

9

END

4

基本的演算のプログラムの作成

1

5

0

ブログク玩具で遊ぶ子供が個々のブロックの内部構造を知らなくてもいいよ うに,このシステムの利用者が全て個々の基本的演算コマンドの内部構造を知 る必要はない。このことは我々が何の疑問もなく

MS-DOS

付属コマンドを使 用していることでも解る。しかし,他人の作成したコマンドだけでは目的とす る作業ができない場合もあるし,プログラムが書ける研究者は自分でコマンド を作成したい場合もある。そこで,この節では筆者が作成したコマンドを例に プログラムの作成方法を述べることにする。 このシステムにおける基本的特質は入出力におけるデータ構造の統一性であ る。これはブロ yク玩具において,接続用の穴の大きさが統ーされているのと 同じである。データ構造が同ーであればコマンドの内容がどんなものであろう とシステムの他のコマンドと一緒に使用することが可能である。データ構造の

(17)

151 新しい経済分析システムの提唱 -151-一 例 と し て 筆 者 が 使 用 し て い る も の を 紹 介 す る 。

a

数値デ ー タは全 て 行列として扱う。 す な わ ち , ス カ ラ ー はl行 1列の行列として扱い,ベクトノレは行か列が 1の 行 列 と し て 扱 う 。 経 済 分 析 に は ベ ク ト ル や 行 列 が 多 く 使 用 さ れ る の で デ ー タ を 行 列 に 統 一 し て お く と 扱 い や す く な る た め で あ る 。

b

.

フ ァ イ ル に お け る デ ー タ の 記 述 は ア ス キ ー 形 式 と す る 。 こ れ は , バ イ ナ リ 形 式 だ と フ ァ イ ル 容 量 が 節 約 で き る 半 面 , フ ァ イ ル の 内 容 を 見 る た め に 特 別 な コ マ ン ド を 通 す 必 要 が あ る た め で あ る 。 C フ ァ イ ル に お い て は 最 初 の 数 値 が 行 数 を 2番目の数値が列数を表す。 図4 データの記述法 l スカラーの場合 A = 5の場合, ファイノレの内容は 115 となる。最初の1が行数で,次の 1が列数である。 2 縦ベクトノレの場合

A

"

m

の場合 フ……アバ山

ω

山イわルレノ 3 1 123 となる。最初の3が行数で,次の1が列数である。 3 横ベクトノレの場合 A

=

(1 2 3)の場合, ファイノレの内容は 1 3 123 となる。最初のlが行数で,次の 3が列数である。 4 行列の場合 11 2 3 4¥ A = 1 5 6 7 8 1の場合, ファイノレの内容は ¥9 10 11 12/ 3 4 1 2 3 4 5 6 7 8 9 10 11 12 となる。最初の 3が行数で,次の 4が列数である。 以上であるが,ファイノレにおいて l行にいくつ数値を並べるかは任意である。すなわち, A

=

5の場合,次の 3つの記述とも同じである。 (a) 1 1 5 (b) 1 (c) 1 1 5 1 5

(18)

-152ー 第60巻 第1号 152 3番目からが数値データで行列の行ごとに記述される。記述例を図4に示 す。 データを以上のように記述すれば筆者が作成したコマンドが自由に使用でき るようになる。また,データ構造変換プログラムは簡単なので,データ構造変 換コマンドを利用すれば,異なったデータを持ったシステム聞のコマンドの混 合使用も簡単に可能だと思われる。 次に,基本的演算プログラムはコマンドにできるだけ汎用性を持たせるため に,以下の点に留意して作成すべきである。

a

1つのコマンドに多くの機能を持たせないようにする。 使用者に自由な使い方を許すためにもコマンドの構造は単純な方がよ い。また, コマンドの保守や修正にとってもこのことは大切である。 b.入出力ファイル名はコマンドのパラメーターで与えられるようにする。 特定のファイル名しか対応しないようなコマンドは汎用性に乏しいし, コマンドの実行時にファイル名を聞いてくるようなプログラムではコマン ドを連続的に実行する際の使用者の負担が大きくなりすぎるからである。 C 配列を実行時に動的に宣言できること。 配列を動的に割り当てることにより,種々の大きさのデータに柔軟に対 応でき,配列の上限を利用するハードの状態に適合させることができる。 このようにすると,使用するハードのメモリーの状態に応じて配列の大き さを変更するという厄介な作業から解放される。 以上のような点に留意すれば,どのような言語プログラムを作成してもよい が,筆者は

C

言語でプログラムを作成することを推奨したい。

C

言語は経済分 析のプログラム言語としては

FORTRAN

BASIC

のように馴染みはない が,

FORTRAN

BASIC

でできることは全て可能で,かつ,それ以上の機能 をも持ち合わせた言語!である。 プ ロ グ ラ ム 作 成 の 例 と し て 第

2

節 で 使 用 し た 逆 行 列 計 算 コ マ ン ド

MATINV

のジースプログラムをリスト

4

に示す。プログラムの内容を簡単に 説明しておくと,プログラムはメインプログラム

(

2

2

行自から 44行自まで〉と

(19)

153 新しい経済分析システムの提唱 4つの関数からなっている。 4つの関数はそれぞれ, 行列入力の関数

(

4

7

行自から

7

0

行目まで〉

6

2

行自で行列の行数,列数に応じてメモリーを確保している。 逆行列計算の関数 (73行自から 96行目まで〉 逆行列計算の中心部分は82行固から91行自である。 計算結果の出力の関数 (99行目から 121行自まで〉 110行自でファイルの1行自に行数と列数を出力している。 111行目から 118行自で結果を出力している。 エラー処理の関数(1

2

4

行自から130行自まで〉 153-である。メインプログラムの最初を

2

2

行から

2

4

行までのように記述すると, このプログラムを実行するときのパラメーターの数が変数

a

r

g

c

に,パラメー ターの文字列が配列

a

r

g

v

[

]

に格納され,プログラム内でパラメーターを参照可 能となる。 37行目で行列入力の関数を呼び出し, 41行自で逆行列計算の関数を 呼び出し, 43行目で結果の出力の関数を呼び出している。

5

おわりに 以上,筆者の提唱する経済分析システムについて基本的な考え方を述べてき たが,それを要約すると以下のようになる。ある固定的な箱の中に多くの機能 を詰め込もうとするとそれ自体に限界があるし,利用者の自由な使用を制限す ることにもなる。そこで,考え方を変えて,単純な機能しか持たなし、小さな箱 を多く作成して,その組み合わせ方を替えることによりいろいろな目的に対応 するシステムを構築すると次のような利点が生まれてくるのである。

a

個々のコマンドを単独に

MS-DOS

の外部コマンドとして使用できる。

b

.

コマンドの組み合わせ方法は利用者の自由である。

c

利用者は個々のコマンドの内部構造に注意する必要はない。他人が作成 したコマンドでも計算が正しく,入出力の形式が統一しておれば自由に 利用可能である。

d

.

作業内容が簡潔に記述できる。

(20)

-154ー 第60巻 第l号 154

e

作業の途中結果がファイノレに保存されるので,計算のチェックや途中結 果を用いた別の分析が簡単にできる。 f.プログラムの作成や修正がコマンド単位なので,保守や機能拡大が簡単 にできる。 g.新しい作業に対する対応がコマンドの組替えや少数の新規コマンドの作 成で済み汎用性がある。過去に作成したコマンドの蓄積を生かすことが できる。 h.作業は個々の小さなコマンドを連続的に実行することにより為されるた め

CPU

のメモリーが少なくても大きな作業をすることが可能である。 さらに,このような発想の下でパッケージソフトを開発すると,利用者はパッ ケージソフトの持つ利点、を享受できると同時にそのパッケージソフトを構成し ている個々のコマンドを自由に使用して,特定の目的に応じたソフトを簡単に 作成することが可能となる。 参 考 文 献 [ 1 ] 内田幸夫「経済データの統計解析用計算機言語-COLSAー」『国民経済雑誌J,第151 巻第4号, 1985年 [2 ] 内国孝夫「統計解析用計算機言語COLSAkJ f閤民経済雑誌.1,第155巻第3号, 1987 年 [ 3 ] アスキー書籍編集部編 fMS-DOS3.1ハンドフlツグ J,アスキー, 1986年 [4] B. W カーニ円ン, D M リッチー共著 rプログラム言語CJ,共立出版 1981年 [ 5 ] ピー卜・メテヴェーレス著 fMS-DOSファイノレ整理学J,アスキー, 1986年

(21)

-155ー LN(L) 8 457 8 477 8494 8506 8522 8536 8 525 8 553 8 554 8 541 8 556 8562 8575 8 585 8599 8 610 8 622 8636 8641 8 650 8 657 10億円 10億円 万人 1L196 11 264 11 355 1L458 11 587 11713 1L806 11 891 11 991 12072 12 143 12 208 12265 12 326 12 393 12459 12 519 12575 12..627 12 686 位 位 位 単 単 単 新 し い 経 済 分 析 シ ス テ ム の 提 唱 ﹀ K ( 。 る タ 凶 あ で デ タ 斗 什 ¥ ノ 一 応 P 0 5 7 8 1 4 3 2 6 2 9 4 6 7 8 7 0 2 8 6 7 J 戸 お 刷 v u u l q d n O Q d F U ウ tA ヨ Q U 白 u n L つ b p b A υ F D ハ V F b Q d Q d ι υ Q U A T O O 主 ド 町 三 の 日 4 5 6 7 8 9 9 0 1 1 1 2 2 3 3 3 4 4 4 5 5 剖 妹

J f 、 1 ‘ 1 4 1 A 1 4 唱i 1 A 可 ょ っ “ 。 , U 今 ん つ u q L 。 f M つ U ワ U つ れ M つ , “ 。 ρ つ ム ワ ω つ U 1 差 別 w h ペ 川 内 τ i 可i t i 句i 唱i1 ム 可 i t -A 可 止 1 4 1 よ 唱 よ 1 4 市i 可 A 1 4 1 i 1 i 1 ム胃ょーェ一十トルー ヒ L S t の ル 柿 L ィ 昭 乱 開 9 1 3 5 5 5 8 1 7 1 8 0 7 3 5 8 0 3 7 9 2 ア ︹ 行 持 0 0 8 4 2 9 3 8 8 2 9 3 9 5 2 8 5 3 5 0 5 1 ノ 附 剛 院 L 7 8 8 9 0 0 0 1 1 1 1 2 2 3 4 4 5 6 6 7 7 7 準 F 訪 米 玄 凋 性 4 告 a 佳 A q F b w D F U F h d 戸 b p b F D に d p h d F D F b p b F b F b F D F D F b z ; s t v 関 寸 ヨ グ K 諸

d F

m

川 内 U M -1 8 5 4 7 5 2 4 0 3 6 9 9 5 1 0 5 6 ロ 和 本 れ 6 6 7 9 は

w

u

w

引 幻 ω ∞ U M 白 川 目 白 川 町 四 刊 日 刊 M “ お F 昭 崎 行 表 K 一 3 5 6 0 7 2 4 5 1 4 7 0 2 5 0 7 3 9 4 3 ( 浦 一 -1 ﹄ Q O Q ν 。 δ 氏 V A U つ & つ i u A 宮 内 旬 ヴ 4 0 0 0 U 1 ょ っ ' U 4 A F b ヴ d Q U ハ υ つ u イ L フ 付 2 7 5 4 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 E 産 設 上 7 7 8 9 口 生 業 開 山 総 企 M U M 民間数日川 州 国 民 者 勺 ヴ d A V っ “ Q ν A 性 F b o o o o Q U O O F D A V 4 & つ d o o t i A V -- つ 釘 つ u o o h A 一 2 1 8 0 9 1 8 2 6 9 7 3 3 4 7 3 5 4 8 0 3 0 質 質 業 件

Nmn

況 判

H

m

m

却 目 前 必 幻

ω M

m ω

ロ お 幻

mmηunc

突 実 就 ラ 門 J n w d A V 唱A つ 臼 凋 告 に d c υ ヴ 4 0 0 0 O A Y A 汐 1 ょ 。 L q J A t 戸 b F b ︽ b o o n w d p u ' d 1 4 1 A 1 A 1 4 噌 i 1 A t i -t ム 1 4 1 4 つ ゐ 。 , “ 。 , “ 。 , “ つ u つ 白 つ ' U 今 L 。 , u .• J 'TPKL 引 用 N t 出 G た F b p O ヴ a o o q u A U 可i つ 白 q O A a τ F U F O 巧 , a o o n w d A U T i 。 ん の J 4 a p b 内 U 氏 υ a u 氏u a u a υ ヴ d 句 t ヴ d ヴ d 巧 t ウ 4 勾 t η t ヴ 4 巧 t 。 。 。 。 。 。 。 。 。 。 。 。 加 国 o d o d A W M A Y A Y Q U A V Q d A Y A w d A V Q u o d Q M A Y A H o y n y A y n y q d 可i 噌i 唱i t -ム 咽 i 1 4 咽 i 苛 i t i 噌i 唱 i 1 鼻 咽 i 唱i 1 i t -A 唱i 唱i 唱よ 155 逆行列コマンドの Yー ス プ ロ グ ラ ム リスト 4 /* * 逆 行 列 matmv.c 入力行列 出力行列 A B MATINV A B 使 用 法 B

=

INV(A) 大里子拓行 作成者 1 ょ っ “ つ j v A 弓 p b 氏 υ 々 t o O A W M

(22)

-156- 第60巻 第I号 156 10 作成日 02/05/1987 11 **/ 12 13 # inc1ude <stdlib h> 14再inc1ude<stdio h> 15 # define TYPE double /*TYPEをdoubleと定義*/ 16 17 typedef struct { 18 int n, m; /*構造体MATRIXの定義*/ /* n 行数 m 列数 */ /* a 行列データへのpointer*/ 19 20 TYPE*a; }MATRIX; 21 22 void main(argc, argv) 23 int argc; 24 . c. har *argv[] ; 25 { /*main program*/ 26 void error(), mat_out3(); /*使用関数の宣言*/ 27 .. int mat inpl(); 28 MATRIX *maUnv(); 29 30: MATRIX *a; /*使用変数の宣言ホ/ 31。 。f “ n t υ 凋 4aFhυpnvn , a A X U A U d q 喝 uqtυqtυqtun ︿ υ 内屯 υ 内 ︿ υ の ︽ ω allmen() ; /*メモリの確保*/ if(argc!=3) /*エラーチェック*/ error("使用法に誤りがあります。",NULL); maUnpl(argv[l), a); /*行列の入力*/ if(a->n ! = a->m) error("正方行列ではありません。", NULL); 40 41 : a = mat inv(a); /*逆行列の計算*/ 42 43 44 } mat out3(a, argv[2)); /*結果の出力*/ 45 46 47 : int maUnpJ(a, b) 48 char*a; 49: MATRIX*b; /*行列入力の関数*/ /*第1引数 入力データファイノレ名*/ /*第2引 数 構 造 体MATRIXへのpointer*/

(23)

157 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 } 71 72' 新しい経済分析システムの提唱 -157ー E J, P A 仁 Y m ﹄ T P ソ 1

h

ω

* 幻 ' P 0 . , U 一 一 m 吋 -U 凡 E S 7 比 四 U F b m /*使用変数の宣言*/ if ((fpJ = fopen(a,"r"))= = NULl) /*ファイノレのopen*/ error("ファイノレがopenできません%s

a); fscanf(fp_r, "%d" , &b->n); fscanf(fp r, "%d

&b->m); n

=

b-

>

n; m

=

b-

>

m ; /*行数と列数の読み込み*/

if((b->a = (TYPE* )getm1(n*m*siz))= = NULL) /*メモリの確保*/

error("out of memory", NULL); for(i = 0; i<n*m; i++) /*行列データの読み込み*/ fscanf(fPJ,"%lf", &*(b->a+i)); fclose(fPJ) ; return(O) ; /*ファイノレのcloseとreturn*/ 73 MATRIX*mat inv(a) /*逆行列計算の関数*/ 74 MATRIX*a; / * 引 数 構 造 体MATRIXへのpointer*/ 75' ( 76 n 6 ea n J・ k /*使用変数の宣言*/ 77 TYPE p, q, *x; 78 79# define Xi,(j) *(x+(i)*n+j) 80 /*X,(ij)の定義*/ 81 n

=

aー>n;x

=

aー>a; /*逆行列の計算*/ 82 for(k

=

0 ; kくn;k++){ 83 p

=

X(k, k); 84 X(k, k) = LO; 85. for(j

=

0; j<n; j++) X(k, j)

=

X(k, j)/p; 86 for(i

=

0; iくn;i++){ 87 if(i

=

=

k) cQntinue・ 88 . q = X(i, k); 89 Xi,(k)

=

0..0;

(24)

-158ー 第60巻 第1号 90 91 92 for(j= 0; jくn;J十+) 93 94 95 # undef X return(a) ; 96 } 97 98 X(i, j) = X(i, j)-q*X(k, j); /*構造体MATRIXへのpointerを返す*/ 99 void mat out3(a, b) 100 MATRIX *a; /*行列印刷の関数(typeIII)* / 101 char *b; 102 { 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 : 121 } 122 123 : int i, ,i1 = 0; mt n, m; FILE *fp w, *fopen(); fp_ w = fopen(b, "w

;

n=a一>n;m = aー >m; /*使用変数の宣言*/ /*ファイノレのopen*/ fprintf(fp_w, %d %d¥n", n, m);/ホ行数,列数の出力./ for(i= 0; i < n; i + + )( / *行列データの出力*/ for(j= 0; jくm;j++){ fprintf(fp_w, %2.J2E", *(aー>a+i*m+j)); 十+1; if(l = = 4){fprintf(fp_w, "¥n"); 1 = O;} if(l)(fprintf(fp_w, 呼n");1 = 0; } fclose(fp _ w ) ; exit(O) ; /*ファイノレのclose

&

return * / 124 void error(sl, s2) 125 char * sl, * s2 ; 126 ( /ホエラーメッセージの表示と実行停止*/ 127 128 : 129 130 fprintf(stderr, sl, s2); fprintf(stderr, "¥n") ; exit(l); 158

参照

関連したドキュメント

テキストマイニング は,大量の構 造化されていないテキスト情報を様々な観点から

(2011)

本論文での分析は、叙述関係の Subject であれば、 Predicate に対して分配される ことが可能というものである。そして o

経済学研究科は、経済学の高等教育機関として研究者を

 自然科学の場合、実験や観測などによって「防御帯」の

 分析実施の際にバックグラウンド( BG )として既知の Al 板を用 いている。 Al 板には微量の Fe と Cu が含まれている。.  測定で得られる

経済特区は、 2007 年 4 月に施行された新投資法で他の法律で規定するとされてお り、今後、経済特区法が制定される見通しとなっている。ただし、政府は経済特区の

自分ではおかしいと思って も、「自分の体は汚れてい るのではないか」「ひどい ことを周りの人にしたので