Excel と R と GAMS で産業連関分析


普段はCGE分析などのシミューレションをするのに基本的に GAMS というソフトウェアを利用しています。最近、簡単な産業連関分析を試しにしてみようとしたのですが、GAMS よりも他のソフトの方がやりやすいかもと思い、

  • Excel
  • 統計ソフトのR
  • GAMS

の3つを用いて、同じような産業連関分析をしてみました。3つのソフトを使って、同じような分析を

  • 4部門の仮想的な連関表
  • 日本の2011年の13部門表
  • 日本の2015年の185部門表

の3つの産業連関表を用いておこないました。

分析といっても、試しにやってみた程度のもので、

  • 1) 全ての財の最終需要が10%増加するシナリオ
  • 2) 建設という財への最終需要が500億円増加するシナリオ

というだけの本当に簡単な分析しかしていません。

Releases · ShiroTakeda/IO-analysis

プログラム、データは上の場所にある Source code (zip) というファイルにプログラムが入っています。

ファイルの解説

  • IO_analysis.xlsx
    • これが Excel を用いて分析しているファイルです。
  • IO_analysis_1.r、IO_analysis_2.r、IO_analysis_3.r
    • この3つが R を使ったプログラムです。
    • それぞれ、sample_IO_data_1.txt、sample_IO_data_2.txt、sample_IO_data_3.txt をデータに用いています。
  • IO_analysis_1.gms、IO_analysis_2.gms、IO_analysis_3.gms
    • この3つが GAMS を使ったプログラムです。
    • GAMS のプログラムは sample_IO_data.xlsx のデータを用いています。

どれも同じデータを使って、同じシミュレーションをしているので、当然ですが同じ結果が出てきます。

Excel

ここでの Excel はVBAは用いずに、関数だけを使っています。関数を使っているだけなので単純で、わかりやすいのですが、大規模なデータを用いる、あるいは複雑なシミュレーションをするのはやはり難しいと思います。Excel で複雑なシミュレーションをするのなら VBA が必要になると思います。日本で産業連関分析をおこなっている人の多くは以下の藤川先生の本を参考にしていると思いますが、この本は Excel + VBA で産業連関分析をする方法を解説していますので、産業連関分析をしている人の多くは Excel + VBA を用いているのかもしれません。


統計ソフトR

R は普段使うことがなく使い方をほとんど知らないので、(当たり前ですが)プログラムを書くのに手間がかかりました。特に行列のデータを外部のファイルから読み込む方法がなかなかわからず困りました。

Google で検索すると、データフレームの形式のデータを読み込む方法はたくさん見つかるのですが、行列のデータを読み込む方法はなかなか見つからなかったです。R は統計分析をすることが主な用途のソフトですから、行列の演算をする人はあまりいないのかもしれません(?)

R は無料ということもあってか、非常にユーザー数も多いようで、使い方を解説したウェブページが山ほどあります。ただ、同じような初歩的なことを解説したページが多いので、逆に検索しにくかったです。上で書いたように、外部のファイルにある行列データを読みこむ方法を探したのですが、なかなか見つからず、結局、英語のページを検索してやっと見つけました。

産業連関分析というと、モデルを行列で表現し、行列の演算を用いることが多いと思いますが、R で行列表現のデータが利用できるので、一度、データを行列に入れてしまえばあとは簡単です。例えば、A と B という行列があった場合、

A %*% B

で行列の積が計算できますし、

solve(A) 

でAの逆行列が計算できます。産業連関分析では行列の四則演算と逆行列の導出さえわかればだいたい済むと思います。

GAMS

GAMS におけるデータの型は基本的に「配列(もしくは、スカラー)」であって、直接行列を表現することはできないです。R では A や B という変数で行列を表し、A %*% B で行列の積を表すことができましたが、GAMS ではそういうことはできないです。

しかし、二次元の配列を使えば実質的に行列、及び行列の演算を表現できます。

例えば、a(i,j) と b(j,k) という二つの二次元の配列を定義し、a(i,j) は行列の (i,j) 要素、b(j,k) は行列の (j,k) 要素を保持するという形にすれば、a と b は実質的に行列です。

R のように「a x b」のような形で二つの行列の積を表現することはできないのですが、

c(i,k) = sum(j, a(i,j) * b(j,k)) 

という式によって、a と b の積である c という行列(の i-k 要素)を表すことができます。つまり、行列の積という演算もおこなえます。

三つの行列の積(a * b * c)となると

d(i,l) = sum(k, sum(j, a(i,j) * b(j,k)) * c(k,l))

のような式で計算できます。掛け合せる行列の数が増えるとちょっと式が長くなり大変ですが、二つ、三つくらいの行列の式でしたらそれほど複雑にはなりません。

また、産業連関分析では逆行列を計算する演算が必要になります。GAMS では直接逆行列の計算はできないのですが、付属の外部プログラムである invert.exe というプログラムを利用すれば計算ができます。

ですので、

  • GAMS のプログラムで行列を作成
  • その行列を GDX ファイルに出力
  • invert.exe を呼出して GDX ファイルの行列の逆行列を計算し、別の GDX ファイルに出力
  • GAMS のプログラムで GDX ファイルから逆行列を読み込む

というような手順を踏むことで、逆行列の計算という演算もおこなえます。ちょっと面倒に見えるかもしれませんが、実際のプログラムではたいしたことはないです(IO_analysis_1.gms などを見ればわかると思います)。

どれが使いやすいか?

産業連関分析というと

  • Excel + VBA(これが一番多い?)
  • R
  • Matlab

など、様々なソフトウェアが使われていると思います。上で書いたように「Excel + VBA」はよく使われていると思いますし、行列表現ができるので統計ソフトのRも使われているのではないかと思います(フリーソフトウェアですし)。GAMS は産業連関分析にはあまり向いていないかなと思っていたのですが、今回、プログラムを書いてみて、GAMS も案外連関分析には向いているのではなかと思いました。私は元々GAMSを使い慣れていることもあるのですが、それを差し引いても、言語の特徴などからしてGAMSで産業連関分析はかなりやりやすいように思いました。

CGE 分析をするために GAMS を持っている人は、連関分析をする場合にも GAMS を使うといいかもしれません。


[注]上においてあるサンプルのプログラムは無料のデモバージョンのGAMSでも実行できます。GAMS は大きいモデルを扱う場合はデモバージョンでは解けないのですが、このプログラムではそもそもモデルを解いたりする作業(例えば、最適化問題を解くだとか、連立方程式を解くだとか)がないので、デモバージョンでも計算できてしまいます。

MendeleyからZoteroへの移行


数年間、文献の情報、文献のファイルの管理に Mendeley を利用してきましたが、昨年から Zotero に乗り換えました。

Mendeley で扱っていた文献データを Zotero へ移行することも可能ですが、以下のページで説明されているように、それには一度古いバージョンの Mendeley にダウングレードしなければいけないです。

[メモ] Mendeley: Exodus ~Mendeley から Zotero への移行の手引き~ – ill-identified diary

なぜこんな面倒なことをする必要があるかというと、(version 1.18 より)新しい Mendeley ではデータベースが暗号化されてしまい、外部のソフトが読み込めないためだそうです。

データベースを暗号化した形で保持するようになったのは、EUの「General Data Protection Regulation(GDPR)」のためだと Mendeley(Elsevier社) は説明しているようです。しかし、これについて、Zotero のアドオンの一つである Better BibTeX for Zotero(BBT) の作者は、実際は他のソフトへの移行を妨げることを意図としているのではないかと以下のツイートで言っています。

私は詳しいことはわからないですが、確かに文献のデータを暗号化する意味ってなんなんだろうと不思議に思います。文献って、基本的に公刊された文献ですから、その情報が漏れたらまずいことなんて普通はないのではないかと思います。

また、BBT の作者は以下のようにも書いています。

BibTeX と連携させるという点では、Zotero + BBT は Mendely よりもはるかに便利だと言っています。これは確かにそうだと思います。Zotero + BBT は BibTeX データを出力する際に、形式や内容をかなり細かく調整できて、自由度が非常に高いです。一方、Mendely も BibTeX 用データを出力できますが、形式の調整はほとんどできないです。

Zotero では文献に一緒に PDF ファイルを登録できる機能がありますが、そのPDFファイルを見るのには外部の PDF ビューワーを用いるようになっています。しかし、開発版では Zotero 内に PDF ビューワーを備え、PDF ファイルへの書き込み(メモ)などをできるようになっています。ただ、似た機能は Mendeley では既に実装されていますが。

京都産業大学の鹿とその他


京都産業大学の鹿。



アナグマ(?)

GAMS における文字コード


[注]以下の話は MS Windows で GAMS を利用する際の話です。

昔の Windows 上の GAMS は日本語を含むプログラムのファイルの文字コードとして Shift JIS しか扱えませんでしたが、現在の GAMS は UTF-8 も扱えます。GAMS Studio を使っているのでしたら、メニューの「Edit」→「Encodings」のところから利用する文字コードを選択できます(UTF-8 か Shift JISなど)。

私自身は Shift JIS では困るという場合はほとんどありませんが、やはり Shift JIS ですと表現できる文字の種類にかなり制限が加わりますので、UTF-8 を使うようになりました。

ただし、UTF-8 にすると一つ困ることがあります。GAMS自体は UTF-8 でも Shift JIS でもどちらでも扱えるのですが、GAMS でデータを扱う際によく利用する GDXXRW(gdxxrw.exe)というプログラムでは文字コードの制限があるようです。

GAMS で作業をする際に、Excelのデータを読み込んだり、計算結果を Excel に出力したりすることがよくあります。ただ、GAMS は直接 Excel ファイルを読み書きできません。そこで、以下のように、GAMS が直接読み書きできる GDX ファイルという形式のファイルを間にはさんで Excel とやりとりします。

  • Excelファイル → GDX ファイル → GDX ファイルを GAMS で読み込み
  • GAMS から GDX ファイルにデータを出力 → GDX ファイル → Excelファイル

このときの「Excelファイル → GDXファイル」という変換、「GDXファイル → Excelファイル」という変換をおこなうのが GDXXRW というプログラムです。

上で書いたように GAMS 自体は文字コードを選べますが、この GDXXRW というプログラムは Windows のシステムの既定の文字コードしか扱えないようです。Windows においてシステムロケールで日本語を選ぶと文字コードの既定値は Shift JIS になるようです。このため、Windows 上の GDXXRW は Shift JIS の文字コードしか扱えないようです。

ですので、UTF-8 を使ったプログラムファイルを GAMS で実行し、その結果を GDXXRW を用いて Excel に出力すると日本語部分が文字化けするということが起ります。

文字化けするのは set、parameter などの説明文などに日本語を使っている部分です。説明文などに普通のアルファベットしか使わないのなら、文字コードがなんだろうと文字化けしないです。ですので、そもそも説明文に日本語を使わないという対処方法もあります。ただ、説明文に日本語を使えればやはり便利なので、日本語を使うという前提でこの問題への対処する方法には、次の二つがあるようです。

  • 1) 昔からのように GAMS では Shift JIS しか使わないようにする。
  • 2) GAMS で UTF-8 を使うようにし、同時にシステム自体を UTF-8 を使うように変更。

まあ、どうしても GAMS で UTF-8 を使わないといけないという人は少ないと思いますので、普通の人は 1 にすればよいと思います。

2 のシステムの文字コードを UTF-8 に変更する方法は、例えば以下のページに書いてあります。

システムロケールをUnicode UTF-8に変更する方法・言語設定 | Howpon[ハウポン] https://howpon.com/247

ただし、このようにWindowsのシステムの文字コードをUTF-8にするのはベータ版の機能で、こう変更することによりいろいろ問題が生じる可能性もあるようなので注意してください。例えば、メニューが文字化けしたり、上手く動かなくなるソフトがあります(要するにUTF-8に対応していないソフトがまだ残っているということだと思いますが)。私のPCではATOK 2017のメニューが文字化けするだけではなく、ATOK 2017で文字を入力しているときに頻繁にソフトが落ちるようになりました。

一番いいのは、GDXXRW が複数の文字コードを使いわけできるようになってくれることですが、すぐには対応できないようです(いずれ対応してくれると思いますが)。

日本の環境税制改革(二重の配当仮説)についての研究


早稲田大学の有村俊秀先生との共同研究である以下の論文が公刊されました。

Takeda, S., Arimura, T.H. (2021) "A computable general equilibrium analysis of environmental tax reform in Japan with a forward-looking dynamic model." Sustainability Science, 16(2), 503-521, https://doi.org/10.1007/s11625-021-00903-4

オープンアクセスにしていますので誰でも読むことができます。以下、簡単に論文の内容を紹介したいと思います。

分析の内容

この論文は、日本において2050年までにCO2排出量を80%削減するという目標を炭素税によって実現しようとした場合の経済的な影響を応用一般均衡モデル(CGEモデル)を用いて分析した研究です(研究をしていた時点では、まだ「2050年までに80%の削減」が長期目標だったのですが、既にご存知の通り、カーボンニュートラルに変わりました)。

炭素税という政策は政府に税収をもたらします。経済学で炭素税という政策を分析する際にはその税収をどう使うかが一つのポイントになります。よくあるシナリオは「炭素税収は家計に一括(lump-sum)で還元する」というものですが、そうではなく、既存の税(例えば、所得税、法人税、消費税など)を減税することに使うというシナリオもあります。後者のように、炭素税の導入に伴ない既存の税を改革(減税)するという政策を「環境税制改革」と言います。

この論文では

  • 純粋な炭素税(税収を家計に一括で還元するシナリオ)
  • 環境税制改革

の効果を比較しています。環境税制改革としては、炭素税の導入とともに、1) 所得税の減税、2) 法人税の減税、3) 消費税の減税という3つのシナリオを考えています。

分析の結果

CGEモデルを使ったシミュレーションをしていますが、

  • 純粋な炭素税よりも環境税制改革の方がよいケースが多い
  • 特に、GDPや所得という基準からは法人税減税という環境税制改革が望ましい

という結果が得られました。

ただし、どの政策が望ましいかは、どの経済変数(GDP、所得、効用)を重視するかにもよりますし、どの時点(近い将来か、遠い将来か、期間全体か)での影響を重視するかにもよるので、単純に環境税制改革の方がよいというわけではないです。

上で書いたように、オープンアクセスですので、論文も読めますし、以下のページにシミュレーションのプログラムを置いてありますので、興味がある方は見てください。

The double dividend analysis for Japan

応用一般均衡分析の解説書のアップデート


以下のページに置いてある応用一般均衡分析の解説書をアップデートしました。

https://shirotakeda.org/ja/research-ja/cge-howto.html

といっても、ほとんど内容は変更していないです。LaTeX を使って作成している文書ですので、クラスファイルを変更するなどして、見た目を変更したのが主な変更点です。

また、第3章については内容も変更しました。第3章では GAMS の使い方を説明しているのですが、これまで GAMS IDE を使うという前提で説明していました。しかし、現在では新しい GAMS Studio という IDE が提供されるようになったので、GAMS Studio を使うという前提での説明に変更しています。

GAMS Studio もまだ開発途中と言えるようなもので、それほど機能が豊富というわけではありませんが、それでも GAMS IDE と比較すればずっと高機能だと思います。これからGAMS を利用する人は GAMS Studio を使うのがよいと思います。

私自身は Emacs 上で GAMS を使っていますが。

LaTeX の日本語での組版について


https://github.com/texjporg/babel-japanese

上のページに「japanese.pdf」という文書があります。これは外国人向けに、LaTeX での日本語の組版について説明した文書です。具体的には、

  • 改行のルール
  • 文字間のスペースの取り方
  • 文字(フォント)の種類の扱い

などでの、英語(西欧の言語)と日本語での組版の違いが解説されています。元々は外国人向けですが、日本語の組版のことをよく知らない日本人にも参考になります。

まあ、日本語に対応したクラスファイルを使えば、細かい部分は意識しなくても済んでしまうのですが、LaTeX をもう20年以上利用しているのに日本語向けのクラスファイルがどのような処理をしてくれているのか全然知りませんでした。

また、最近は LaTeX で日本語を扱う場合、昔ながらの pLaTeX に加えて、

  • upLaTeX
  • LuaLaTeX
  • XeLaTeX

の3つの選択肢がありますが、どの TeX エンジンをどんな設定で使えばよいのかということも説明されているので、それも参考になります。

私にも参考になりました。私はこれからは基本的には「LuaLaTeX + jlreq クラス」を使おうかなと思います。

Qiita に記事を投稿


自分のホームページ内に、BibTeX の使い方を説明するページ(「経済学におけるBibTeXの利用」)があったのですが、最初に書いてから15年(?)くらい経過してることもあり、内容がかなり古くなっていました。例えば、

  • BibTeX のデータベース(bib ファイル)を作成するには Emacs を使うといいというようなことを書いていましたが、今どき bib ファイルを自分で書く人は少ないと思います。
  • natbib.sty を自分でインストールする場合のことも書いていましたが、現在では natbib.sty は標準のパッケージになっていて、自分でインストール必要はないです。

とうように、今となっては不必要な情報がかなり含まれていました。

そこで大幅に内容を書き換えて、さらに自分のホームページではなく、Qiita にアップロードしました。

Qiita は主にプログラミングに関する様々な情報、ノウハウなどを投稿するサイトです。

Qiita は markdown によって記事を書けます。今回、markdown で書いたのですがすごく楽でした。markdown で書けるのは便利ですね。

区別しにくい文字


環境経済学の授業での小テストに「プルトニウム」を正解とする問題を出しました。

すると、ある学生が「プルトニウム」と解答したのに、不正解に採点されていると言って きました。

小テストはMoodleで受けさせていて、解答はMoodle上で記入します(あらかじめ正解を登録しておき、採点は自動でおこなわれます)。記入された解答を見ると確かに「プルト二ウム」と記入されています。以下の画像のようにです。

「あれ、なぜ不正解になるのだろう?」と自分でも不思議に思ったのですが、よくわかりません。それで正解になっている解答と不正解になっている解答を比較してみました。

上が正解と判定されている解答、下が不正解になった解答です。比べてもやはり同じに見えます...




変だなあといろいろ考えてやっと違いがわかりました。上の画像はMSゴシックフォントですが、これを游明朝に変えたのが下の画像です。

これなら違いがはっきりわかります。下の方ではカタカナの「ニ」ではなく、漢数字の「二」が使われています。 ゴシックフォントの場合、二つを区別することは非常に難しいです。Moodleで記入するときにはおそらくゴシックフォントで書くので、それで間違えて漢数字を書いたのだと思います。

日本人でも区別が難しいですが、質問してきた学生は中国人であるので、余計に区別することが難しかったのかもしれません。そもそも普通に「ぷるとにうむ」と打って変換すれば、漢数字の二が使われるわけないと思うのですが、中国人なので普通の日本語のIMEとは違うものを使っているのかもしれません。

経済学部の大学院進学率


朝日新聞出版社が毎年出している「大学ランキング」という本があります。

様々な観点での日本の大学の順位を掲載した本です。例えば、

  • 就職率
  • 公務員就職者数
  • 入試志願者数
  • 科研費の配分金額
  • 出身者の国会議員数

など多様な観点からのランキングがのっています。

そのランキングの一つに「大学院進学率」という数字があります。これは卒業者の中で大学院に進学した割合を示す数値です。

大学院への進学は理系では多く、文系では少ないという傾向があります。これは理系ですと大学院の学位(修士号)が就職にプラスになることが多いのに対し、文系ではプラスにならないことが多いためだと思います(もちろん、分野や個人によって差はありますが)。

それもあり、この数値については学部別にランキングが分けられています。例えば、2019年版では「工学部」での大学院進学率ランキングは以下のような値になっています。

工学部のランキング

順位 大学名 進学率(%)
1 京都大学(工) 87.5
2 東北大学(工) 87.1
3 長岡技術科学大学(工) 86.3
4 名古屋大学(工) 85.8
5 大阪大学(工) 84.5


基本的には偏差値の高い国立大学が大学院進学率が高くなるという結果になっています。これは偏差値の高い大学ほど、より高度な内容の勉強をしたい(そして、場合によっては研究者になりたい)学生が多いということを反映しているのだと思います。

以上の傾向は、「理学部」や「農、生物系学部」でも変わりません。

理学部のランキング

順位 大学名 進学率(%)
1 東京大学(理) 85.7
2 東北大学(理) 82.6
2 北海道大学(理) 82.6
4 京都大学(理) 80.3
5 大阪大学(理) 77.7


農、生物系学部のランキング

順位 大学名 進学率(%)
1 京都大学(農) 76.8
1 東北大学(農) 76.8
3 神戸大学(農) 76.2
4 名古屋大学(農) 75.8
5 北海道大学(農) 74.3


一方、上で書いたように、文系になると進学率は大幅に下がります。例えば、法学部のランキングは以下のようになります。ただ、進学率は低くなりますが、進学率が高いのは偏差値が高い大学という点は理系と同じです。

法学部のランキング

順位 大学名 進学率(%)
1 京都大学(法) 24.3
1 一橋大学(法) 22.7
3 東京大学(法) 20.3
4 大阪大学(法) 18.3
5 北海道大学(法) 17.4


文学部・外国語学部も同様の傾向にあります。

文、外国語学部のランキング

順位 大学名 進学率(%)
1 東京大学(文) 23.3
2 京都大学(文) 22.4
3 お茶の水女子大学(文教育) 21.7
4 広島大学(文) 17.8
5 相愛大学(人文) 16.7


なぜこんな話をしているかというと、経済学部(経済系学部)の進学率だけ他とかなり違うからです。以下が「経済、経営、商学部」などの経済系学部でのランキングです。

経済、経営、商学部のランキング

順位 大学名 進学率(%)
1 岡山商科大学(経済) 35.5
2 城西国際大学(経営情報) 8.4
2 福山大学(経済) 8.4
4 大阪大学(経済) 8.0
5 一橋大学(商) 7.4


他の学部では、進学率トップなのは東大、京大のような偏差値もトップの大学です。しかし、経済学部については、トップなのは岡山商科大学という大学で、しかも、ここだけ35.5%という飛び抜けて高い数値で1位になっています。

(岡山県人を除いて)多くの人は岡山商科大学という大学を知らないと思います。案外偏差値が高い大学なのかと思われるかもしれませんが、そんなことはないです。今、ネットで調べたら37.5でしたので、偏差値という基準ではかなり下の方の大学ということになります。

また大学院へ進学していると言っても、レベルの低い大学院に進学しているのではないかと疑う人がいるかもしれませんが、進学先の大学院は経済系では評価が高い大阪大学、神戸大学、京都大学などの有名な大学の大学院だそうです(ホームページを見れば具体的な進学先の大学が掲載されています)。

しかも、これは2019年度1年だけの話ではなく、ここ数年ずっと経済学系では日本で一番進学率が高い状態が続いているようです。

東大、阪大、一橋など、経済系ではトップクラスの大学でさえ、せいぜい7、8%しか大学院進学率がいかないのに、なぜそんな偏差値の低い岡山商科大学の経済学部がこれほど高い進学率になっているのでしょうか?(2位、3位の城西国際大学、福山大学も偏差値が低いのですが、ここではそれはちょっと置いておきます)

私もはっきりとはわかりませんが、岡山商科大学の経済学部には留学生(特に中国人)が編入学で入学し、その留学生達が有名大学の大学院に進学しているようです。

大学院に行きたいのなら最初から有名な、レベルの高い大学に入るのが普通のように思えますが、有名大学に直接入るのは難しいのだと思います。それで、岡山商科大学に入って大学院を目指すという少し変則的なルートが人気があるようです。

実際、岡山商科大学は大学院進学(大学院入試)のためのサポートが充実しているらしく、上述のように、多くの学生が有名大学の大学院に入学しています。そのような実績があるので、(有名大学には直接は入れないが)大学院に行きたい留学生に人気があるのだと思います。

岡山商科大学の経済学部の進学率が高いと何か問題があるというわけではないのですし、むしろ大学院進学率が高いのはそのためのちゃんとした教育を提供しているという意味でいいことだと思います。ただ、日本人にはあまり人気がない(その結果、偏差値は非常に低い)一方で、留学生(特に中国人)には人気があり、大学院進学率だけ飛びぬけて高くなるというのは、ちょっとアンバランスというか、おかしいような気がします。実際、他の学部では見られないちょっと珍しい傾向ですよね。

前に「ERE(経済学検定試験)」という記事で、日本の経済学検定で上位の成績をとっているのが中国人だらけという話をしたのですが、今回も中国人が関係しています。中国人の留学生は日本人と比べて、大学院に入るということに貪欲のようです。

ちなみに私がいる京都産業大学の経済学部ですが、「公表されている情報」によると、2019年度の卒業者は542人で、そのうち大学院進学者は7人だそうです。ですので、2019年度の大学院進学率は約1.3%です。ほとんどの学生は就職しますからこんなものだと思います。