Erlang ディレクトリのlib 下の、各ライブラリのディレクトリ配下に、いろんなライブラリのドキュメントがあるのに今さっき気付いた。lists モジュールで見つけた zipwith と sum を使って消費者物価指数を求めてみる。
| 1993年 | 1994年 |
---|
| 価格(円) | 数量(ml) | 価格(円) | 数量(ml) |
---|
清酒 | 89.21 | 13713 | 89.88 | 12986 |
焼酎 | 65.95 | 5030 | 63.87 | 5799 |
ビール | 541 | 54990 | 534.79 | 61770 |
輸入ウィスキー | 414.26 | 185 | 374.04 | 166 |
国産ウィスキー | 248.19 | 1476 | 238.75 | 1651 |
ぶどう酒 | 145.21 | 773 | 127.4 | 1024 |
上表のデータは『
データ分析 はじめの一歩』に載っていた古い総務庁の家計調査のデータを拝借したもの。ここで 1993 年のデータを基準とし94年の消費者物価指数(CPI)を求めてみる。
-module(t2).
-compile(export_all).
%% cpi(Base, Target, Weight)->CPI
%% 消費者物価指数を求める
%%
%% Base = 基準期間の物価のリスト
%% Target = 算出対象期間の物価のリスト
%% Weight = 数量。ラスパイレスなら基準期間、パーシェなら対象期間
%% CPI 計算結果
cpi(Base, Target, Weight)->
mul_each_and_sum(Target, Weight)/mul_each_and_sum(Base, Weight) * 100.
%% 二つの同要素数リストの各要素を掛け合わせ、合計を返す
mul_each_and_sum(List1, List2)->
lists:sum(lists:zipwith(fun(X,Y)->X*Y end, List1, List2)).
上のようなコードを書いて以下のように実行した。5>に続く出力がラスパイレス型、6>に続く出力がパーシェ型のCPI。教科書どおりの値が得られた。
1> Pk0=[89.21, 65.95, 541, 414.26, 248.19, 145.21].
[89.21,65.95,541,414.26,248.19,145.21]
2> Qk0=[13713, 5030, 54990, 185, 1476, 773].
[13713,5030,54990,185,1476,773]
3> Pkt=[89.88, 63.87, 534.79, 374.04, 238.75, 127.4].
[89.88,63.87,534.79,374.04,238.75,127.4]
4> Qkt=[12986, 5799, 61770, 166, 1651, 1024].
[12986,5799,61770,166,1651,1024]
5> t2:cpi(Pk0, Pkt, Qk0).
98.81385620633323
6> t2:cpi(Pk0, Pkt, Qkt).
98.79880915150264
0 件のコメント:
コメントを投稿