経済学のためのシミュレーション手段としての統計処理環境
富山大学経済学部 准教授 大坂 洋
オープンソースの統計処理環境
を経済学のためのシミュレーションに使う観点から評価した.は目的を満 すにに十分な数値計算の機能をもち,オープンソースである利点をもち,確率・統計分野の豊富な拡張機能をもち,データの整理に有用な機能を持っている.
キーワード: 経済学教育,シミュレーション,
言語はじめに
私は,富山大学経済学部で
年後期と年後 期の回にわたって,同学部の堂谷昌孝教授とともに,マクロ経済学
を担当した.この授業では,マクロ動 学経済成長理論,経済変動理論をコンピュータによ るシミュレーションを通じて学習することが主眼にお かれた.シミュレーションの手段としては,広く統計 処環境としてもちいられているオープンソースの を用いた.その授業実践については,年に経済学 部の経済情報処理ワークショップと経済教育学会で報 告した. を採用したのは,情報基盤センターの管理して いる端末室に,たまたま導入されていたからにすぎな かった.経済モデルのシミュレーションの手段として は,/%#)/&!
や/(
が用いられていることが 多い./%#)/&!
は経済学部の端末室には導入され ていなかったし,/%#)/&!
は,コンピュータ言語 に不慣れな経済学部生にとって,とっつきやすいもの とは思えなかった./(
については,富山大学で 導入されているライセンス数に制限があるのが不安で あった./(
に似たの!/1#
や!&(
といった フリーやオープンソースの言語も数多くある.しかし,それらは端末室には導入されていなかった.
しかし,授業で
を使っているうちに,は他のシ ミュレーションの手段の代替に十分なりうるのではと 考えるようになった.ここでは,そうしたの利点を 紹介したい.本論でのメッセージのひとつは,フリーソフトなら ば,得意な分野に特化したソフトウェアを複数そろえ
)7).12/)05 13) !)%/ $ .%0 +6%+) %0( )07-310/)05 *13 45%5-45-'%. '1/265-0+
160(%5-10 *13 5%5-45-'%. 1/265-0+ #-)00% 6453-%
!!"""!
ることで,学習時間も,作業時間も節約するできると いうことである.それを強調するために以下では数式 処理ソフトウェア
/%#)/&!
を数値計算に使うこ とに対して辛辣な評価をしていく.しかし,それらの「欠点」のほとんどは,
/%#)/&!
の柔軟性のうら がえしであることを指摘しておく.なお,
全般については,舟尾暢男氏の&,.
を 参照していただきたい.オープン・ソースとしての利点
は#*#-( 0 (&! &!#*!#
にもとづいた オープンソースのソフトウェアである.オープンソー ス・ソフトウェアは金銭的な費用なしに,インストー ルの手間だけで導入することができる.フリーソフトウェアだというと,商用のものよりも品 質が悪いと思われがちだ.しかし,すくなくとも
の ような科学分野で広く普及しているソフトウェアに関 しては,そのような心配は無用である.オープンソー スのソフトウェアはソースコードが公開され,ユーザ 自身がソフトウェアを改良する自由が保証されている.不具合があったり,足りない機能があっても,ユーザ がプログラミングをする能力があれば,改善すること ができる.科学分野のソフトウェアの場合,ユーザの かなり割合がプログラマなので,深刻なソフトウェア の不具合が長期間放置されることは,めったにない.
2(*版
!! !#"!
,5/.版
!! !#"! !
「入門編」,「シュミレーション入門」,「+3-( +3%2,-'4」を拡 充した書籍版
舟尾 暢男 『5-24データ解析環境の基本技・グラ フィックス活用集』,九天社.
オフィス系のオープンソースのソフトウェアが,マイクロソ フト製品の代替になるのにいたらないのは,マイクロソフト 製品のファイル形式の無茶苦茶さとともに,ハードユーザの 富山大学総合情報基盤センター広報 vol.6 (2009) 13-16頁.
また,商用のソフトウェアの場合,身につけたスキ ルが無駄になってしまうリスクがある.大学で商用ソ フトウェアを習得したとしても,高額のソフトウェア が就職先でも使用可能であるとは限らない.また,昨 今の大学の予算状況はたいへんきびしい.商用のソフ トウェアは値上りやコンピュータ関連予算の削減もあ りうる.そうなれば,
年生までに身につけたスキル が卒業論文でつかえなくなることもある.しかし,フ リーソフトウェアはこのような心配はない.これらの 点は教育上重要である.は統計処理を主な目的に開発され,一般に統計処 理環境として知られている.しかし,は数値計算言 語としての基本的な機能をそなえている.
/(
など が数値計算用の環境として知られ, が統計処理環境 として知られているのは,言語の特徴よりも,/(
などが数値計算分野の拡張機能を多く備え,
が統計 処理関係の拡張機能を多く備えていることが大きい.実際,
&'&,#"&
の「数値解析ソフトウェア」という 項目では,いずれも「汎用数値解析アプリケーション」として分類されている.
数値計算用言語の大きな特徴は,ベクトルの扱いや すやである.
において,変数は基本的にベクトルで ある.ベクトルでない数はの中では,要素が一つの ベクトルとして扱われる.数値計算言語で面白いのは,通常の数
のなか では要素が一つのベクトル とベクトルの演算であ る.での実例を見てもらおう.リスト では,ま ず , と い う 変 数 に を 代 入 し , と い う 変 数 にというベクトルを代入した.
を計算すると,の各要素にの値を加えた ものが出力される.これは,四則演算やべき乗,基本 的な数学関数についても同様である.したがって,そ れらの演算や関数を用いて定義した自作の関数は,と くに何もしなくても,ベクトルを返す.
これらと類似のことは,
/%#)/&!
でも同様にで きる.ただ,/%#)/&!
との違いは,/%#)/
&!
において,ベクトルでない数とベクトルはちがっ たデータの型としてあつかわれるのに対して,で多くがプログラマでないからかもしれない.
はベクトルでない数は,要素が一つのベクトルと扱わ れる.このため,
/%#)/&!
で,新しい関数を定義 し,以上のようなベクトルの演算をおこなうには,関 数に(&./ (#
属性を設定するか,),
関数を使う必要 がある.ベクトル演算の機能を使うと,多くの数列が数式の 表記のまま,計算できる.多く言語なら繰り返し計算 のループを書かなくてはできない数列も簡単に計算で きる.たとえば,
で をがからま で,計算するにはリストのようにする.さて,リスト
はによる繰り返し計算の例である. 言語などのように,初期化,条件,インクリメント をあたえるのではなく,インデックスをベクトルとし て与えるのが特徴である.繰り返し計算をエクセルでさせる教材を見かける が,
回の繰り返し計算のためには,エクセルでは, 個のセルを埋めなくてはならない.そうなれば,実質的なプログラミングより,コピーをする作業のほ うが時間がかかってしまう.エクセルを使った計量経 済学やシミュレーションの学習は,コピペ大会をする か,データの数に制約を置くかの選択を迫られる.繰 り返し計算は,繰り返し計算の機能をもったプログラ ミング言語のほうが楽にできる.このことは,
がベ クトル演算できる計算についても同様である./%#)/&!
とも比較をしてみよう./%#)/
&!
の特徴は,繰り返しの構文にいたるまで,すべて が,関数になっていることである.たとえば,/%#
)/&!
の$+-
ループは初期化,条件,インクレメント,本体は,すべて,関数
+-
への引数として渡される.%&(#
ループも同じ特徴をもつ.通常,われわれは繰 り返し計算を関数であるとは意識しない.手続き型の 発想で書かれた/%#)/&!
のプログラムは,読みづ らい.他方,も内部的には,関数言語であるらしい が,ループに関しては手続き型言語とのちがいはほと んど感じられない.は手続き型の発想でプログラム することへの配慮がある.これらの簡単なループ計算や上記のベクトル演算に
/%#)/&!
をつかうのはとてもおおげさに感じる./%#)/&!
は,もともとがメモリを消費しがちな数 式処理ソフトであることに加えて,基本的に計算結果 はすべてメモリに残す.このことによって,ちょっと した計算がやたらとメモリを食うことが,しばしばあ る.パソコンのメモリの上限がのころは他の 富山大学総合情報基盤センター広報 vol.6 (2009) 13-16頁.リスト
! !!
リスト
言語ならば,楽々できる計算が,メモリ不足のためで きなることも多かった.
微分方程式については,
には"#.+(1#
というパッ ケージが提供されており,これをインストールすること で,微分方程式を扱うことができる.はパソコンの 管理者権限があれば,上から拡張機能をインストー ルすることができる.の"#.+(1#
は!/1#
の微分方 程式ルーチンと同じ微分方程式ソルバー+"#,!'
が 採用されており,/(
のデフォルトの微分方程式 ルーチンよりすぐれている./%#)/&!
もデフォル-0(/%34, 945)/%5-:)(
1..)'5-10 1* 1.7)34 0 5)2.)/%0 )5 %. )(4 135,1..%0(
-0(/%34, %0( !%9.13
%83)0') -7 )3/13) %5-10%. %&13%5139 3)2135 "
)')/&)3
トで,
"#.+(1#
と同様の微分方程式パッケージがある.これは,解を微分方程式を多項式近似した関数の形で 返す.これはこれで便利な面があることは事実だが,
単に微分方程式の数値解だけが欲しいならば,無駄に メモリと
を食う仕様である.私は不案内なので確定的なことはいえないが,金融 工学分野の研究なら,次節でふれる確率に関連した豊 富なライブラリを生かすこともできると思う.
グラフのプロットはもともと統計ソフトウェアなの で,数値計算ソフトウェアの多くが簡単にできる関数 をかさねあわせたプロットなどは,ちょっと手間がかか る.この点が唯一,私が
をつかっていて不便に感じ る点だ.だけども,プロットの関数は/%#)/&!
にくらべれば,ずっと簡素なので,その分,簡単なプ ロットならば手間がかからない.
出力を062.15などの他のソフトウェアに渡す方法はある.
富山大学総合情報基盤センター広報 vol.6 (2009) 13-16頁.
"# ! $ %
リスト
統計処理ソフトウェアである利点
は統計処理ソフトウェアとしての利点もある.第一に,統計が専門でなくても,ときには統計デー タを扱う必要が生じる.そのとき,使いなれていない 統計ソフトウェアのつかい方をおぼえるのは手間がか かる.
を常用していれば,基本的な統計関数さえ憶 えれば,普段の環境でそのまま統計データがあつかえ る.!/1#
や/(
でも,同様のことは可能だ.し かし,の方が統計関係の書籍やネット上の情報は圧 倒的に多い. 年度のマクロ経済学では,統計データの分析 をデモンストレーションをすることができた.これは,シミュレーションのための環境のなかで,そのまま統 計データがあつかえたことが大きい.
第二に,統計処理環境であるから,確率分布にした がった乱数の生成など,確率と関連したシミュレーショ ンの手段も充実している.
最後に,シミュレーションの計算結果はなんらかの 形で整理する必要がある.その点,
は統計処理環境 として,データフレームという,複数のデータをまと めて扱う仕組をもっている.おわりに
経済学分野では,
/%#)/&!
がもてはやされて いる.もちろん,/%#)/&!
は優れた数式処理ソ フトウェアである.しかし,数値計算のためだけに/%#)/&!
をつかっている人は多い.数値計算に のみ,/%#)/&!
をつかうのは,経済的にも,コン ピュータの資源の点からも,学習時間・作業時間の面からも無駄が多い.
もし,このことに同意するのなら,試しに,ちいさ な数式処理がいらない問題に
や!/1#
をつかって みることを勧める.も/%#)/&!
も,すべての機 能に習熟するのはとても時間がかかるが,得意な問題 をさっと解くのに必要な知識の習熟には,いずれもそ れほど時間がかからない.一つの道具ですべての問題 をとこうとするより,入門レベルの知識で複数の道具 をつかうほうがてっとり早いと思う.そして,これは オープンソースの良質なソフトウェアのおかげで経済 的な負担なしに可能である.品質も商用に引けをとらない科学分野のフリーソフ トウェアが充実してきている.その一方で,
/%#
)/&!
や高額の統計処理ソフトが買えずに,シミュ レーションや計量経済学をあつかう授業に制約がでて いる場面もあるのではと想像する.たとえば,/%#
)/&!
のコードを実例としてのせている本は多いが,/%#)/&!
を買えなければ,それらのコードを手元 でためすことができない.そういう種類のものは安価 でできれば無料で手に入る環境で実行できるのがの ぞましいだろう.授業での教材も同様である.今回は
/%#)/&!
を主要な標的にしたが,「計算 はなんでもエクセル」という風潮もある.「エクセル で計量経済学」とか,「エクセルでミクロ経済学」と いった本をよく見かける.これらがプログラミングよ りコピペ大会になってしまう危険はすでに指摘した./%#)/&!
同様,エクセルも適所適材であろう.富山大学総合情報基盤センター広報 vol.6 (2009) 13-16頁.