データ処理入門
によるシミュレーション
河野 光雄
中央大学総合政策学部
目次
第
章
第章
の用語
データの入力
データの移動、コピー、削除
セルの拡大・縮小・非表示
データの検索
リスト形式
データの検索
データの並べ替え
条件にあわせてレコードを並び替える
特定のデータを抽出する
データの計算処理
自動集計
度数分布
データの統計処理
平均、分散、標準偏差
相関係数
回帰分析
偏差値
データの選別:合格者の確定
ピボットテーブル(クロス表)の作成
アンケートの集計
データのグラフ化
シートの保存、プレビュー、印刷
ワープロ文書への表・グラフの張り付け
の統計分析
限界消費性向
最小自乗法
回帰残差
決定係数
重回帰分析
の回帰分析
第 章 乱数
計算機による乱数発生
一様乱数
乱数の検定
相関
乱数の相対度数の安定性
第 章 ランダムウォーク
第章
の用語
プロシージャ
プログラムの構成
データ型
変数の宣言
型宣言文字
バリアント型
オブジェクト:セルの取得
グラフをマクロで作成する
プログラミングの基礎
の起動
プログラムの基本構造
コメント文
セルの参照
出力文
入力文
繰り返し処理 文
条件分岐
計算機に特有の演算法
演算子比較演算子
配列
繰り返し処理 第!章
第
章 モンテカルロシミュレーション
乱数と円周率
の計算
乱数と面積
第"章
によるモンテカルロシミュレーション
円周率の計算 円周率の計算 円周率の計算
円周率の計算 第
章
プログラム例
足し算
階乗
生物個体数の増加
生物個体数の増加と飽和
乱数
酔っ払い運動
並べ替え
5者択一マーク式試験の正答率
プログラム実行ボタンの作成
対話型プログラム実行ボタン
対話型マクロによるカレンダーの作成
任意の年のカレンダーの作成
ユーザーフォームの作成
ユーザーフォームの作成
通貨交換:小数点以下の桁数の制御
摂氏華氏の温度変換
環境家計簿の作成
排出係数
ユーザーフォームの作成
窓口問題:窓口の数2の場合
窓口問題:窓口の数 の場合
第
# 章 「格差社会」
度数分布、ヒストグラム、平均値、中央値、最頻値
統計学の用語・概念
平均値
中央値
最頻値
平均値,中央値,最頻値の関係
はずれ値(異常値)の処置
データのばらつき
分散
標準偏差
変動係数
ローレンツ曲線
ジニ係数
所得分布とローレンツ曲線
所得分布
ローレンツ曲線
所得等分位分布とローレンツ曲線
ローレンツ曲線の意味
プログラム
プロジェクト
第
章 少子高齢化社会の課題
人口ピラミッドの作成
人口指数
出生数の経年変化
合計特殊出生率 !
人口ピラミッド・アニメーションの作成
パワーポイントによる人口ピラミッドアニメーションの作成
人口動態学
モデル
フローチャート
プログラム単位
プログラムの開始と終了
配列の指定
パラメータの設定
生存率分布の設定
出生率分布の設定
初期人口分布の設定
"#$% &%' %( )$#$
日本の人口動態( * !:政府統計・将来予測
人口予測シミュレーション
少子高齢化社会の課題
少子高齢化がもたらすもの
世界人口の爆発
基礎年金財政
保険料
給付金
国庫負担率
プロジェクト
少子化への転換
少子化の背景
人口動態将来予測:日本
人口動態将来予測:世界
年金制度の現状と将来
第
章 為替相場の変動
為替価格発展方程式
第
章 生存競争
+,* モデル
二種生態系の競争的生存競争
第
"
#
#
章 合意形成過程
選挙制度
選挙のモデル
"-'
拘束名簿ドント方式
第
章 母集団比率とサンプルサイズ
第 章 .#( ./、いわゆる表計算ソフトウェアには をはじめ +$、0%-1 など沢山あるが、ワー
ドプロセッサーと同じで、どれか一つをきちんと理解しておけば、その知識はほとんど他のソフトウェ
アにも利用できるので、ここでは の $ 2 ##%! を利用する上で必要な
.#( ./ の操作法、利用法を学ぶ。
の用語
セル:ワークシートを構成する要素でデータを格納する場所。行番号(アラビア数字)と列番号
(アルファベット)でその場所が指定される。
ワークシート:ブックの1ページ。セルから構成される。
ブック: のファイルで、1枚ないし複数のシートからなる。新しいブックは3枚のシートか
らなるが、追加することが出来る。
「ツール」メニューの「オプション」をクリックして、
「全般」
タブの「新しいブックのシート数」ボックスに *
の範囲内で設定する。
データの入力
データの入力、コピー、削除、書式設定などの作業には、作業領域を選択する。単一のセルを選
択することも、セル領域を選択することも出来る。
同じデータや規則的に増加する連続データを自動的に入力するには、データの入っているセルを
選択してフィルハンドルをドラッグする。
データをセル内で回転させるには、「書式」メニューの「セル」をクリックし、「配置」タブで回
転角度を入力する。
ある範囲でセルを結合して、見出しを中央に配置するには、セル範囲を選択して、
「書式設定」ツー
ルバーから「セルを結合して中央揃え」をクリックする。
セルだけを結合するには「書式」メニューの「セル」をクリックし、
「配置」タブの「セルを結合す
る」チェックボックスをオンする。結合したセルを元に戻すには「セルを結合する」チェックボッ
クスをオフする。
罫線や色を設定にするにはツールバーを使うか、
「書式」メニューの「セル」をクリックして「罫
線」タブまたは「パターン」タブをクリックする。
枠線を非表示にするには「ツール」メニューの「オプション」をクリックし、
「表示」タブの「枠
線」チェックボックスをオフする。
第章
.#( ./
枠線を印刷するには「ファイル」メニューの「ページ設定」をクリックし、
「シート」タブの
「枠線」チェックボックスをオンにする。
斜め罫線を使うには、「書式」メニューの「セル」をクリックし、「罫線」タブで選択する。
データの移動、コピー、削除
セルを選択しマウスの右ボタンをクリックして切り取りを選択し、移動先のセルをクリックして
右ボタンをクリックして張り付けを選択する。
セルを選択しマウスの右ボタンをクリックしてコピーを選択し、移動先のセルをクリックして右
ボタンをクリックして張り付けを選択する。
セルを選択しマウスの右ボタンをクリックして削除を選択する。
セルの拡大・縮小・非表示
「表示」メニューからズームを選び、倍率を選択する。
カーソルを「行番号」
「列番号」の境界にもっていくと、矢印が出るのでマウスの左ボタンをクリッ
クしたままドラッグする。
データの検索
リスト形式
第1行目に見出しが、第2行目以降にデータが入力されているようなものを「リスト」形式という。
この「リスト」の1行分のデータを「レコード」と呼ぶ。
データの検索
単純項目での検索
「データ &!」メニューから「フォーム )!」をクリックする。
「検索(3)」をクリックする。
検索したい名前を入力し、「次を検索 4!」をクリックする。
読みが一致するデータの検索
以前に入力した検索条件をクリアする。
「検索(3)」をクリックする。
「読み !」に検索したい名前の読みを半角カタカナで入力し、「次を検索 4!」をクリックする。
データの並べ替え
データの並べ替え
条件にあわせてレコードを並び替える
データのレコードに半角カタカナの読みがついているときは、50音順に並べ替えることが出来る。
住所録などは手当たり次第入力すればよい。
「データ」メニューから「並べ替え」をクリックする。
「最優先させるキー」の「」をクリックして、この中に「読み」を選択する。
「昇降」をクリックして、チェックマークをつけ「)5」をクリックする。
特定のデータを抽出する
「データ」メニューから「フィルタ」を選択し、「オートフィルター」をクリックする。
1行目の見出しの各項目に「」の記号が表示されるので、必要な項目の「」をクリックする。
選択肢がない場合は、
「オプション」をクリックして、「」をクリックして「等しくない」を表す
「<>」をクリックする。
「データ」メニューから「フィルタ」を選択し、「オートフィルター」をクリックして機能を解除
する。
データの計算処理
自動集計
1行目の見出しのセルを選択し、「データ」メニューから「集計」をクリックする。
「集計の設定」で、「グループの基準」の「」をクリック、必要な項目を選択する。
「集計の方法」の「」をクリックし、必要な項目を選択する。
「集計するフィールド」で計算の対象とする列をクリックしてチェックマークをつけ、「)5」をク
リックする。
集計結果を元に戻すには
「データ」メニューから「集計」をクリックする。
「リセット」をクリックする。
第章
.#( ./
度数分布
データを階級に分け、各階級でのデータの個数分布を度数分布と呼ぶ。
6 !
乱数を 個発生させ、その度数分布を求める。
列に乱数を発生させる。
セル
1に
と記入してリターン。
セル をコピーして を反転させてペースト。
列に区間を作成する。
セル 1に、セル に をいれて、フィルハンドルを までドラッグする。
列に累積度数分布を作る。
セル に
と記入してリターン
セル をコピーして を反転させてペースト。
列に度数分布をつくる
セル に と記入してリターン
セル に と記入してリターン
セル をコピーして を反転させてペースト。
度数分布は次のようにしても求められる。
7 6 28$%データ 7!9 度数 :7:!!
7 までドラッグ
数式ボックスをクリックして、 キーと /2 キーを押しながら % キーをおす
データの統計処理
乱数を発生させ、データをつくり、それらを使って統計処理を行う。
平均、分散、標準偏差
6;-!
6;!
6(;!
相関係数
6!
回帰分析
6%!
6%#!
データの統計処理
偏差値
データ 6 の平均値を 、標準偏差を とすると、得点 の偏差値 は
6 < と表される。
課題
与えられたデータについて次のことに答えよ。
各問題の偏差値を求め、その合計から順位を決める。
もとのデータの合計で順位をきめる。
両者を比較する。
データの選別:合格者の確定
データの条件による選別には 2 文を使う。
6 条件 !
条件を満たすときに を与え、条件を満たさないときには を与える。
課題
与えられたデータに対して、以下の問いに答えよ。
各問題は半分以上の得点で合格
合計は半分以上で合格
各問題、合計ともそれぞれ半分以上で合格
次のようにしてデータを処理することが出来る。
7 6 == = =!
をコピーして までドラッグ・コピー
7 6 == = =!
= =! = =! = =!
をコピーして までドラッグ・コピー
課題
合計点だけで決めた合格者(合計点 )と各問題のミニマム( 点)をクリアーして合格し
たものとを比較する。
第章
.#( ./
ピボットテーブル(クロス表)の作成
メニューの「データ」から「ピボットテーブル」を選択 「次へ」を選択
データ範囲を指定(7 のように参照する)
「列」「行」「データ」に右のメニューからドラッグして「次へ」を選択
「ピボットテーブルの先頭セル」にテーブルを作りたいセル位置を指定
アンケートの集計
総合政策学部10の約束についてアンケートをとった結果が次のようになった。10の約束が履行さ
れているかどうかを問うもので、各「約束」に対する満足度を
満足している
不満である
約束 約束 約束 約束 約束 約束 約束 3
3
.
3
.
.
3
のように尋ねた。
回答者
約束1
約束 3
3
約束
.
課題
満足度を5段階表示させたアンケートに対して、クロス表を作成する。
データのグラフ化
セルを選択し、ツールバーからグラフを選択し、指示に従って選択していく。
シートの保存、プレビュー、印刷
ツールバーの「上書き保存」を選択する。
印刷イメージを確認するには「印刷プレビュー」をクリックする。
「プレビューモード」でページレイアウトを変更をするには「設定」をクリックする。
印刷する範囲を指定して印刷するには、セル範囲を選択して、
「ファイル」メニューの「印刷範囲」
から「印刷範囲の設定」をクリックする。次に、ツールバーの「印刷」をクリックする。ワーク
シート全体を印刷するには「ファイル」メニューの「印刷範囲」から「印刷範囲のクリア」を選択
する。
ワープロ文書への表・グラフの張り付け
第 章 の統計分析
ウェブからとってきたデータを で展開する。
限界消費性向を の関数を使って求める。
限界消費性向をマクロを使って求める。
限界消費性向
社会全体で、平均すると所得の大きさによって消費の大きさが決まるとして良い。このとき、所得が
増加するほどには消費は増加しない傾向を「限界消費性向」といい、
6<
<
で消費と所得の関係を表す(
はランダム誤差)ときの係数 で与えられる。
単純な回帰分析(最小二乗法)によって の推定値 > は
>6
? ! ? !
?!
で与えられる。ただし
? 6 である。
ある年の消費と所得が
6<
<
で関係づけられているとしたが、社会全体を考えているから、一方の消費は他方の所得になっている。
すなわち
6 <!
が成り立っているので、 を消去すると
となっている。したがって、 は、
6
<
! <
に対する回帰分析によっても求められる。
レポートの課題
データ から求めた の値とデータ !
から求めた の値の違いの意味を考察せよ。
第
章
@3+ の統計分析
最小自乗法
様々な現象の背後にある法則を数式に表現することによって正確な予測が可能になる.この法則を見
い出すために,調査をしたり,実験をしたりしてデータを集め,その分析に心を砕く.与えられたデー
タセットから,変化の傾向を表す関数を求めたり,あるいはデータにベストフィットする関数を求める
方法について述べる.
データは観測した時刻や場所で与えられる互いに関連しあった一連の数値の組である.年次毎の商品の普
及率のデータは 次元のデータセットをあたえる.いま 次元のデータセットを !A 6 で表そう.このデータセットを近似する関数 6 A ! を求めるという問題を考える. は関数
! を特徴づけるパラメーターでここで決めなければならない量である.ある実測値 る近似値は A !! である.したがって誤差は
! にたいす
A !
である.各点でこの誤差を最小にすれば目的は達せられるのだが,このままでは正・負をとるので扱い
にくい.そこで正定値である
A !!
を考えて,各点からの寄与を加えたものが最小になるようにする.即ち
6
"
A !!
とすると " は ! の関数であるから " ! の極値問題を解くことになる.これを最小自乗法とい
う.簡単のため 6 ! として直線を選ぶことにしよう.商品の普及の初期の段階のように指数関数
で表されるものは,対数をとれば直線になっているので,例のためのつまらない問題というわけではな
い.このとき
" !6
!
である." なのでどこかで最小値となる極小値がある.そこでは
#"
#
となっているから,
#"
#
6 6 #"
#
6
! 6 #"
#
6 ! 6 である.ここで平均値を
の平均値 6 ? 6
の平均値 6 ? 6
最小自乗法
で定義し,平均値からの差の自乗の和を
6
?! 6
6
?! 6
?
?
で, と のそれぞれの平均値からの差の積の和を
6
?! ?! 6
??
で表すと,次の連立1次方程式が得られる.
? < 6 ?
< ? ! < ? 6 < ??
6 のもとでこれを解いて
6
6
? ?
を得る.
上で述べた方法を一般化して 点
! ! !
が与えられた時,それらに最も良く適合する $ 次多項式
6 ! 6
を求めることを考えよう.前と同様にして,これは
"
6
A !! 6 " !
の極値問題となる.
#"
#
6 ! 6 これは に関する連立 次方程式であるから,行列を使えば簡単に書ける.今
6
6
!
6
第
章
@3+ の統計分析
とすると, ! は
%
と書ける.ここで
%
% ! 6 は行列 % の転置行列である.これから は
6 % % !
%
と求められる.ただし,% % は可逆であるとする.
回帰残差
実測値 の回帰値 < からのずれ
6 < !
を回帰残差という。回帰残差の平均値は
6
< ! 6 ?
? < ! 6 と計算されてゼロである。また
6
6
< !
6 < ??! < ?! ?
6
< ??
? ! 6 が成立しているので、 と は直交している。
誤差の分散は回帰式がどれほど良く当てはまるかの指標を与える。 については
6 6
の2つの条件が成立しているので、 個のデータのうち独立なのは である。従って分散は
6
で与えられる。分散が小さいほど回帰式が適合している。
決定係数
決定係数
ところで回帰残差の分散は、変数 のばらつきの度合いについては何も情報を与えない。なぜなら
の ? からのずれは
?!
6
< ! < < ! ?
6
< ! <
6
と、そうでない部分
<
< ! ? < ?
< !
< ! ?
の和であることを示している。したがって、
<!?
のばらつきの総和のうち、
となるからである。この式は のばらつきの総和は、 の回帰方程式で説明できる部分
の回帰式で説明できる部分の割合を決定係数 & として
6
&
< ! ?
?!
と定義する。あきらかに
& であり、& は相関係数の自乗になっている。
重回帰分析
多くの現象は一つの変数で決まっていることはあまりなく、いくつかの変数からの寄与からなってい
ることが多い。例えば、個人の消費は、所得、ストック、性別、年齢(あるいは家族のなかでの立場)
などで左右されることが考えられる。2つ以上の変数を含む回帰分析を重回帰分析という。今データ
' 6 $ 6 に対して、回帰式を
6
とすると、単回帰の時と同様に
! 6
"
'
!
を最小にするような を求めればよい。それらは連立方程式
#"
#
6
の解として求まる。この連立方程式は先に示した、データ点の多項式近似の際の行列方程式と同じ構造
をしているので直ちに求められる。
説明変数が2個の場合の例を示しておく。回帰式を
6 < < 第
章
とすると、 を決める連立方程式は
!
!
?
?
?
?
と表される。これを解くと
6
½ ¾
6
¾ ½
6
?
@3+ の統計分析
½ ¾ ¾ ½ ¾
½ ¾
½ ¾ ½ ½ ¾ ½ ¾
と求まる。 も同様に求められる。
単回帰と同様に重回帰に対する推定値の誤差の分散 と決定係数 & はそれぞれ
&
6
6
$
'
?
?
!
で与えられる。
の回帰分析
メニューバー「ツール」から「分析ツール」を選択
「回帰分析」を選択。
「入力 B 範囲」に目的変数のデータ範囲を指定。データラベルを含む行を含む場合は「ラベル」
を選択。
「入力 @ 範囲」に説明変数のデータ範囲を指定。
結果を表示させる範囲の先頭のセルを指定。
「有意 の数値 ( 有意水準6」
帰無仮説:回帰式に意味なし
対立仮説:回帰式に意味あり。
「重相関
」 6&
「重決定
」=決定係数(& )
「補正
」=自由度調整済み決定係数(無意味な説明変数を除く)
「 値と # 値」=回帰係数の有意性を表し、 値が大きいほど目的変数を予測するうえ大きな寄与
をもち、# 値の小さい変数ほど重要である。有意でない変数は不要な変数である。有意な変数だけ
で回帰式を作ることが求められる。
有意な変数と不要な変数の選別
の回帰分析
総当たり法
変数増減法(はじめに目的変数と関係のもっとも強い説明変数を選択し、つぎにその変数と
組み合わせたときに決定係数がもっとも大きくなる変数を選択する。これを順次繰り返し、
有意な変数の組を選択する。
変数減増法(はじめにすべての説明変数をもちいた回帰式から、もっとも目的変数と関係の
弱い説明変数を除去。これを繰り返して有意な変数の組を選択する。
第 章 乱数
繰り返しサイコロを振ったときに出る目の数を記録してつくった数列は、その並び方がでたらめで、
互いに何の関係もない。例えば、4番目の数の出方はそれ以前の数には全く依存していない。サイコロ
の目のように、互いに関係のない事象を独立事象であるという。また、サイコロに細工がされていない
限り、それぞれの目は等しい確率ででる。でたらめさと等確率性で特徴づけられる数列を乱数という。
計算機による乱数発生
乱数を発生させるには完全なサイコロを振ればよいのだが、完全なサイコロの作成は不可能である。
ルーレットを回す方法や、国勢調査から得られる数列を利用する方法、放射線の崩壊過程を利用する方
法(物理乱数)など、数多くの乱数発生法が考案されたが、ここでは計算機によって生成される算術乱
数を考えよう。計算機でつくられる乱数はあらかじめ決められた手続き(アルゴリズム)によっている
ので、初期値が同じなら、厳密に同じ数列となる。従って、再現可能な数列で定義通りの乱数ではない
が、実用上乱数とみなしうる数列で、疑似乱数と呼ばれる。
最も簡単な乱数発生は次のような線形の方程式の逐次代入によってなされる。
6 < $)
!
$
ここで '( ' は を ' で割り算したときの整数剰余をとることを意味している。、、' を適当
に選ばないと、発生する整数列は短い周期で繰り返すことになるので注意しよう。
一様乱数
では乱数発生器が組み込まれているので
6 !
とすればよい。ただし、乱数を引くたびに初期値が変わっていることを確かめておく必要がある。
乱数の検定
算術乱数の発生には偏りがあり得るので、検定は必ず行うようにしなければならない。発生させた乱
数のランダム度を調べる方法を考えよう。いま、 から までの数をランダムに発生させる乱数発生器
から 個の数を発生させたとき、良い乱数発生器であれば、それぞれの数はほぼ 回出現するこ
とになる。即ち、数の度数分布はほぼ一様になる。もちろん一回ではばらつきがあるが、多数回繰り返
せば度数分布は一様となる。そこで、次のようなテストが考えられるであろう。
第
章
乱数
相関
一様乱数を発生させてつくった数列 6 から点 ! を順次2次元平面上に
プロットし、点の散らばり具合を調べる。
乱数の相関
列 と に乱数を発生
:
→ コピー・ペースト
列 と のグラフ(散布図)を作図
乱数の相対度数の安定性
サイコロをふって の目の出る相対度数が、試行回数とともにどのように変化するかを調べる。
乱数の相対度数の安定性
× の行列に
:
→ コピー・ペースト
各行の和から相対度数を計算
!:"# $ → コピー・ペースト
相対度数の累積平均を計算
%:"# ! ! → コピー・ペースト
& 列 % のグラフを作図
計算機の内部の時計を読んで初期値を設定するようになっている乱数発生器もあるが、それでも多数
回乱数を引くときには乱数として適当であるかどうかを調べるようにしたい。
第 章 ランダムウォーク
酔っ払いの足跡をたどるシミュレーションは、原点からスタートし、歩行の各ステップで乱数を振っ
て、次のステップで移動する位置を定める、という手順で行える。
、 列に乱数を ずつ発生させる。
6%( !*
3、& 列にステップ数に対応する位置を格納する。
3:6 <
3# C "
&:6 <
3# C "
3、& 列のデータをグラフに表示する。
列に酔っ払いの位置の原点からの距離を格納する。
第 章 0(、、、"D "% のようなアプリケーションでユーザー定義のマクロが利用出来
るように開発されたプログラム言語で、$ の簡易版である。アプリケーションを意識したも
のなので、 に比べてややこしい面もあるが、 などではシミュレーションを含め多くのことが
出来るので便利である。 に親しんでいれば $ への移行は簡単である。
の用語
マクロ アプリケーション上で行う処理を実行するプログラム
プロシージャ あるまとまった処理をするプログラム単位
モジュール プロシージャを管理するフォルダー
オブジェクト
操作の対象になるもの
(ブック、ワークシート、セルなど)
プロシージャ
$: プロシージャ
単独で完結する処理を行うプログラム単位
2$%% プロシージャ
セルや他のプロシージャから呼び出されて
実行結果をわたすユーザー定義関数
プログラムの構成
宣言部分
変数・定数の宣言
配列の宣言
実行部分 定義
演算
処理の制御
他のプロシージャの呼び出し
第章
データ型
種類 サイズ 範囲
バイト型 1バイト * ブール型 2バイト $ または 整数型 2バイト
* 9 * 9
長整数型
4バイト *
99 9 * 99 9
単精度 バイト
バイト * 浮動小数点型
倍精度 浮動小数点型
$ 2 ##%!
通貨型 8バイト
日付型 バイト 文字列型
文字列の長さ
バリアント型
16バイト 変数の宣言
(' 変数 を定義
(' %-
を整数で定義
(' %-
長整数型
(' %-
単精度浮動小数点型
(' ($:
倍精度浮動小数点型
(' $%
通貨型
(' (
(' !
日付型
配列 を定義
変数は宣言しなくても使用できるが、異なる変数の区別、変数と配列の区別など、間違いをなくすため
に宣言をするようにしておきたい。
型宣言文字
変数の型を明示して宣言しないで型宣言文字を使うこともできる。
整数型
長整数型
単精度浮動小数点型
倍精度浮動小数点型
通貨型
文字列型
E
C
F
G
H
I
バリアント型
バリアント型
代入された値によってデータ型を変化するもので、宣言には3つの方法がある。
明示的な宣言 (' ;%
データ型の省略 (' 暗黙的な宣言 6
オブジェクト:セルの取得
%-==!;$6
セル に数値4を代入
%-=7&=!
セル から & までの矩形を選択
%-==9=&=!
同上
%-=9 939&=!
セルを非連続に選択
9
!;$6
セル に数値4を代入
全セルを選択
%-9
!99!!
セル範囲の選択
%-=7
=!
セル 9
99
を選択
%-=7: =!
セル 9
9 99
9 を選択
%-=
=!;
セル をアクティブにする
%-==!;$ 6 セル に1を代入
%-==!2'$ 6 セル の1の裏にある数式を代入
%-==!2'$ 3 6 セル の1の裏にある数式を代入
グラフをマクロで作成する
シートに出力したデータを読み取ってグラフを描くプログラム。
第章
$ 2 ##%!
# '
()* " '
()*
‘ 計算結果を読み取って図形の出力
+,
-"'"./ 0
‘ 図形出力ページをアクティブにする
1 '
()* 01''
()*" & ‘ 図の位置・サイズ
+' '
()*'
'
2. 34561
1#,,'7,8
-
"
‘ グラフのタイプ
11,
+,
-"'"./9/: : ;4,34,4#"
‘ データの読み込み方の指定(列を指定している)
<"242
,
%4"
<"=/%4",
2
! +'
+,
-"'"./ 0
1 '
()* 01''
()*" & +' '
()*'
'
2. 34=
11,
+,
-"'"./9/: : ;4,34,4#"
! +'
3/# プロパティ
34= 折れ線
34=8
-
"1- データ マーカー付き積み上げ折れ線
34=1- 積み上げ折れ線
34; 円
34;(; 補助円グラフ付き円
34;
#
1- 積み上げピラミッド横棒
34;
#,4 ピラミッド縦棒
34;
#,44"
集合ピラミッド縦棒
34;
#,41- 積み上げピラミッド縦棒
34;
#,41- > 積み上げピラミッド縦棒
349
レーダー
349
%44 塗りつぶしレーダー
349
8
-
" データ マーカー付きレーダー
341,-<= 高値 安値 終値
341,-(<= 始値 高値 安値 終値
341,-?<= 出来高 高値 安値 終値
341,-?(<= 出来高 始値 高値 安値 終値
341
等高線
341
2,.?@ 等高線 トップ ビュー
341
2,.?@+
# 等高線 トップ ビュー ワイヤフレーム
341
+
# 等高線 ワイヤフレーム
グラフをマクロで作成する
34561
散布図
34561
=" 折れ線付き散布図
34561
="7,8
-
" 折れ付き散布図 データ マーカーなし
34561
1#,,' 平滑線付き散布図
34561
1#,,'7,8
-
" 平滑線付き散布図 データ マーカーなし
34 面
34 1- 積み上げ面
34 1- > 積み上げ面
34
4"
集合横棒
34
1- 積み上げ横棒
34
1- > 積み上げ横棒
34,4# 縦棒
34,4#4"
集合縦棒
34,4#1- 積み上げ縦棒
34,4#1- > 積み上げ縦棒
34= 折れ線
34; 円
34;!3.4, 分割 円
34 面
34 1- 積み上げ面
34 1- > 積み上げ面
34
4"
集合横棒
34
(; 補助縦棒グラフ付き円
34
1- 積み上げ横棒
34
1- > 積み上げ横棒
34))4 バブル
34))4! 効果付きバブル
34,4#4"
集合縦棒
34,4#1- 積み上げ縦棒
34,4#1- > 積み上げ縦棒
34,
4"
集合円錐横棒
34,
1- 積み上げ円錐横棒
34,
1- > 積み上げ円錐横棒
34,,4 円錐縦棒
34,,44"
集合円錐縦棒
34,,41- 積み上げ円錐縦棒
34,,41- > 積み上げ円錐縦棒
344
4"
集合円柱横棒
344
1- 積み上げ円柱横棒
344
1- > 積み上げ円柱横棒
344
,4 円柱縦棒
344
,44"
集合円錐縦棒
344
,41- 積み上げ円錐縦棒
344
,41- > 積み上げ円柱縦棒
第章
$ 2 ##%!
34,/' ドーナツ
34,/'!3.4, 分割ドーナツ
34=8
-
" データ マーカー付き折れ線
34=8
-
"1- データ マーカー付き > 積み上げ折れ線
34=1- > 積み上げ折れ線
34;!3.4, 分割円
34;
#
4"
集合ピラミッド横棒
34;
#
1- > 積み上げピラミッド横棒
第 章 プログラミングの基礎
の起動
を立ち上げ、「ツール」から「マクロ」を選択し、「$ (」をクリック。
左欄「"J」で「././!」をダブルクリック。プログラムシートが開く。ここで
データを出力する ./ とプログラムシートを対応させておく方が混乱が無くて良い。
プログラムを入力。
「デバッグ」から「"J のコンパイル」をクリック。文法エラーメッセージがあればプロ
グラムの修正へ、無ければ次のステップへ。
「実行」から「.$:ユーザーフォームの実行」をクリック。
データが出力される ./ を開いて、データを確認。
プログラムの基本構造
名前を #-' とするプログラムの基本構造
1) ./#
! 1)
.$: #-'! と %( .$: の間に宣言文や実行文を書く。
コメント文
実行されることのない注釈文は
K コメント文
の様に先頭にK をつける。改行するときは改行文の先頭にK をつける。
第章
プログラミングの基礎
セルの参照
セルの参照の仕方が と .#( ./ では異なるので注意。 では(行9 列)の順でセルを指
定。.#( ./ では 列行)で指定。
.#( ./
3行目4列
3 9!
&
4行目3列
39 !
3
出力文
例 $
.#( ./ への出力。
1) ./#
44":今日の日付:
44":4月26日:
! 1)
.#( ./ を指定する方法
./ のページ数 #
0,./#!39J!
./ の名前「人口」 0,./=人口=!39J!
ページは並んでいる順。
例 $ 指定シートへの出力
1) ./#
+,
-1'":"':44":今日の日付:
+,
-1'":"':44":4月26日:
+,
-1'":"':44":明日の日付:
+,
-1'":"':44":4月27日:
! 1)
例 $ 指定シートへの出力
1) ./#
. :"':
. :"':
+,
-1'".44":今日の日付:
+,
-1'".44":4月26日:
+,
-1'".44":明日の日付:
+,
-1'".44":4月27日:
! 1)
入力文
ページが左から=/=、=/
=と並んでいるときは=/=が #6、=/
=が #6
。
例 $ 指定ページへの出力
1) ./#
+,
-1'"44":今日の日付:
+,
-1'"44":4月26日:
+,
-1'"44":明日の日付:
+,
-1'"44":4月27日:
! 1)
例 $ 指定ページへの出力
1) ./#
.
.
+,
-1'".44":今日の日付:
+,
-1'".44":4月26日:
+,
-1'".44":明日の日付:
+,
-1'".44":4月27日:
! 1)
入力文
例 !$
.#( ./ からの入力
1) ./#
+,
-1'":"':44"
)+,
-1'":"':44"
! 1)
例
繰り返し処理 $
繰り返し処理の基本構造
1) ./#
%,
, 73 ! 1)
例
第章
$ 乱数を発生させて結果を .#( ./ に出力
1) ./#
44":試行回数:
44":一様乱数:
44":一様乱数:
%,
, 44" 44" 9
44" 9
73 ! 1)
.#( ./ 上の結果から相関図(散布図)を作成する。
例
$ 九九表の作成
1) ./#
A
%,
, 44" 44" 73 %,
, %,
* , 44" * *
73 *
73 ! 1)
文
/::04
"4 " " " B 条件1
実行文
" " B 条件 実行文
" 4"
実行文
"4
条件分岐
条件分岐の基本構造
プログラミングの基礎
条件分岐
1) ./#
C 条件文 '
条件文が真の時の実行文1
!4"
条件文が偽の時の実行文2
! C
! 1)
条件文が複数ある場合
1) ./#
C 条件文1 '
条件文1が真の時の実行文1
!4" C 条件文2 '
条件文2が真の時の実行文2
!4" C 条件文3 '
条件文3が真の時の実行文3
!4"
すべての条件文が偽の時の実行文
! C
! 1)
例 "$
半径 の円内に入る乱数の数
1) ./#
44":試行回数:
44":円内1,円外0:
%,
, 44" C 9D 9D E '
44" !4"
44" ! C
73 ! 1)
第章
例 "$ 乱数の大きさに応じた数値の配分
1) ./#
44":試行回数:
%,
, 44" 9
C E $ '
44" !4" C E $ '
44" !4"
44" ! C
73 ! 1)
計算機に特有の演算法
例 $ (代入足し算)
6 < < < < 6 < < < < 1) ./#
%,
, 44" 44" 73 ! 1)
例 $(代入足し算)
1) ./#
%,
, 44" 44" 73 ! 1)
プログラミングの基礎
演算子比較演算子
例 $(代入掛け算)
階乗
6 F 6 ! ! 1) ./#
%,
, 44" 44" 73 ! 1)
例 $(条件による選択的足し算)
1) ./#
%,
, 9
44" C E 2'
44" !4"
44" ! C
73 44" ! 1)
演算子比較演算子
'(
べき乗
掛け算
割り算 余り
6
(
(
6
等しい
小さい
小さいか等しい
大きい
6
%(
大きいか等しい
両方とも
どちらか
第章
プログラミングの基礎
配列
データを格納し必要に応じて取り出す事が出来ると処理を効率よく進めることができる。このために
はデータを格納しておく場所をあらかじめ宣言しておかなければならない。データを配列する場所を「配
列」とよぶ。例
$
サイズが の1次元配列 とサイズが の2次元配列を宣言。
1) ./#
# )
! 1)
このサイズを超えて演算は出来ないので、大きめに取っておくと良い。また配列として宣言された変数は
プラグラム範囲で常に維持されて、途中で次元の異なる配列やスカラーには転用できない。例
数を 個発生させ、配列に格納し、 ./ に出力。
1) ./#
# )
%,
, 9
)9
44" 44" 44" )
73 ! 1)
例
$ 囚人のジレンマの利得行列
3
&
3
9
*9 &
9 *
9 を組み込んだプログラム
1) ./#
# )
)
)
)
)
%,
, %,
* , 44" * *
$ 乱
繰り返し処理 44" * &)*
73 *
73 ! 1)
繰り返し処理 繰り返し処理の方法には先に見た以外にもいくつもある。それぞれ用途に応じて使い分けると便利で
ある。
条件文を満たしている間処理を繰り返す。
1) ./#
, +'4 条件文
実行文
=,,.
! 1)
次の表現でもよい。
1) ./#
,
実行文
=,,. +'4 条件文
! 1)
条件文を満たすまで繰り返し処理を行う。
1) ./#
, F4 条件文
実行文
=,,.
! 1)
例
$
乱数を順次発生させ、 より小さいものの数が になるまで続ける。
1) ./#
# 第章
プログラミングの基礎
, +'4 E
)9
C ) E 2'
)
44" 44" ! C
=,,.
! 1)
例
$ 乱数を順次発生させ、 より小さいものの数が になるまで続ける。
1) ./#
# , F4 B
)9
C ) E 2'
)
44" 44" ! C
=,,.
! 1)
第 章 モンテカルロシミュレーション
乱数と円周率
一辺の長さ の正方形とそれに内接する半径 の円を考える。正方形と円の面積をそれぞれ と とすれば
6 6 *
である。いま乱数を引いて正方形の内部にでたらめに点を 個打ったとき、内接円の中に入る点の数を
%
とする。このとき、 が十分大きければ、一様分布していると考えてよいから、点の数の比 7
%
は正方形の面積と円の面積の比にほぼ等しいと考えることができる。すなわち、
%
円の面積
6
正方形の面積
が成り立っているとしてよい。これから円周率は
%
と求められる。
の計算
点を 個とって計算する手順を以下に述べる。
セル に試行番号を格納: に 、
に 、 に を格納
セル に 座標、セル 3 に 座標を格納
セル に乱数を格納:6 ! セル をコピーし *9 3*3 にペースト
セル & に円内にあれば1、そうでなければ を格納: 68 < ! (69 9!
セル & をコピーして、&
*& にペースト
セル に円周率を格納:6 $II 7 !*
セル をコピーして、
* にペースト
試行回数
円周率
試行回数が少ないので円周率への収束が十分よく見られないが、簡単な計算でそこそこの結果が出せ
るのは驚きである。
第章
モンテカルロシミュレーション
乱数と面積
上の結果から、乱数を発生させてある図形の面積を計算できることがわかる。面積を求めたい図形を、
面積のわかっている図形で囲み、乱数を引いてでたらめに点を打ち、それぞれの図形の中にある点の数
の比を求めればよい。
問題: 6 の曲線と 軸、 6 で囲まれる面積をモンテカルロシミュレーションで求めよ。
第 ! 章 によるモンテカルロシミュレー
ション
円周率の計算
に「モンテカルロシミュレーション:円周率の計算 」と記入
に「試行回数」、:
に「円周率」と記入
に 、 に を記入し、
までペースとして までを記入。
「ツール」
「マクロ」
「;$ : (」を選択
プログラムの作成
%, 8.
# 3 %,
2, 3 9 9 C 1
3 3
!4"
! C
73
E 2'
8. & $ ! %,
/ に戻って、: 7 6 L# ! と記入し「エンター」
セル : をコピーし、:
までペースト
グラフの作成
第章
によるモンテカルロシミュレーション
円周率の計算 に「モンテカルロシミュレーション:円周率の計算 」と記入
に「試行回数」、:
に「円周率」と記入
「ツール」
「マクロ」
「;$ : (」を選択
プログラムの作成
1) ;
# 3 .
%,
2, 3 9 9 C 1
3 D D E 2'
!4"
! C
C C $ 2'
.C $ & $ ! C
73 %,
2, 44" 44" .
73 ! 1)
「マクロ」を実行
グラフの作成
円周率の計算
円周率の計算 に「モンテカルロシミュレーション:円周率の計算 」と記入
に「試行回数」、:
に「円周率」と記入
「ツール」
「マクロ」
「;$ : (」を選択
プログラムの作成
1) ;
%,
2, 44" 44" 8. 73 ! 1)
%, 8.
# 3 %,
2, 3 9 9 C 1
3 D D E 2'
!4"
! C
73 8. & $ ! %,
「マクロ」を実行
グラフの作成
第章
によるモンテカルロシミュレーション
円周率の計算 7 に「モンテカルロシミュレーション:円周率の計算 」と記入(セルを結合)
に「 座標」、:
に「 座標」と記入
76%(!* を代入し、 7:
までコピー
(
に「試行回数」、
に「円周率」と記入
「ツール」
「マクロ」
「;$ : (」を選択
プログラムの作成
1) ;
%,
2, 44" & 44" 8. 73 ! 1)
%, 8.
# 3 %,
2, 3 44" 44" C 1
3 D D E 2'
!4"
! C
73 8. & $ ! %,
「マクロ」を実行
グラフの作成
第 " 章 プログラム例
足し算
から までの和 は
6 < < < 6
< ! < < であるから、この2つの和をとると
6 < ! < < ! < < < !
6
< !
となるから、
< !
で与えられるが、計算機では次のように計算する。
6
から までの足し算のプログラム 1) 1#
./
+,
-"'"./44"::
+,
-"'"./44":計算機による和:
+,
-"'"./44":和の公式:
%,
, %,
* 2, *
73 *
+,
-"'"./44" +,
-"'"./44" +,
-"'"./44" $
73 ! 1)
から までの足し算のプログラム 第章
1) 1#
# .
./
.
+,
-"'"./44"::
+,
-"'"./44":計算機による和:
+,
-"'"./44":和の公式:
%,
, .. +,
-"'"./44" +,
-"'"./44" .
+,
-"'"./44" $
73 ! 1)
階乗
階乗は
F 6 で定義される。これは次のように求められる。
階乗 1) %,
./
+,
-"'"./44"::
+,
-"'"./44":Gの値:
%,
, %,
* 2, *
73 *
+,
-"'"./44" +,
-"'"./44" 73 ! ")
階乗 プログラム例
生物個体数の増加
1) %,
# .
./
.
+,
-"'"./44"::
+,
-"'"./44":Gの値:
%,
, . . +,
-"'"./44" +,
-"'"./44" .
73 ! ")
大きな数の階乗は次で近似される。
F
生物個体数の増加
生物個体数は現在の個体数に比例して増加するので、 年の個体数を ! と表すと、次の年の個体
数は、増加率を として
< ! ! 6 !
で与えられるから
< ! 6 < ! !
とななり、これを解くと
! 6 ! < ! となるから、初年度の個体数 ! が与えられれば任意の年の個体数が求められることになる。
個体数の増加
1) ;,.4,
# .
.
+,
-"'"./44":年:
+,
-"'"./44":個体数:
+,
-"'"./44"
+,
-"'"./44".
%,
, . .
+,
-"'"./44" 第章
プログラム例
+,
-"'"./44" . 73 ! ")
生物個体数の増加と飽和
生物個体数はある程度増加すると、環境の有限性(住む場所や食料がなくなる等)のために、どこま
でも増加しつづけることはできなくて、飽和することになる。この様子は 年の個体数を !、増加
率を として
< ! ! 6 ! !
で与えられる。書き換えると
< ! 6 < ! ! <
!
となる。
個体数の増加
1) ;,.4,
# .
.
+,
-"'"./44":年:
+,
-"'"./44":個体数:
+,
-"'"./44"
+,
-"'"./44".
%,
, . .
.$ +,
-"'"./44" +,
-"'"./44" . 73 ! 1)
は1より小さい数でなければならないが、これを無視して大きくする 6 ! とどうなるか
調べよ。
乱数
意思決定はいつも合理的に行われるわけではなく、最後はさいころを振るように決められることが多
い。したがって乱数はきわめて重要な役割を果たす。 から までの一様乱数の発生器は組み込まれて
いて + で与えられるから、 から までの乱数は
< +!
! ,
酔っ払い運動
で求められる。ここで ! , は整数部分を求める記号で、これも組み込まれている。ここでは から までの乱数を振って2次元の座標を作り、散布図をえがく。点が満遍なく散らばっていれば、乱数発生
器として信頼できる。+)$ は乱数発生器の初期値をランダムに選ぶためである。
乱数による散布図
1) ,#
./
9,#H
+,
-"'"./44":3 座標:
+,
*"'"./44": 座標:
%,
, +,
-"'"./44" C 9
+,
-"'"./44" C 9
73 ! 1)
酔っ払い運動
酔っ払いの千鳥足はブラウン運動として定式化されている。9! の乱数をつないでいけば、酔っ払い
運動を再現できる。以下では酔っ払いのステップサイズを としてある。
D% L%
1) ,@8,,
./
9,#H
+,
-"'"./44":3 座標:
+,
*"'"./44": 座標:
3
%,
, 33 9
9
+,
-"'"./44" 3
+,
-"'"./44" 73 ! 1)
第章
プログラム例
並べ替え
でたらめに並んでいる から までの数を降順に並べ替える。ここでは、最初に1から までの
乱数をふって、1から までの配列に重複のないように配置して、そのあとで、大きい順(降順)な
並べ替える。
並べ替えのプログラム
1) 9
/#
# ./
+,
-"'"./44":順番:
+,
-"'"./44":値:
C 9
, F4 B
)C 9
%,
2, )
73 C 2'
!4"
)
!C
=,,.
%,
2, +,
-"'"./44" +,
-"'"./44" 73 %,
, %,
* , C E* 2'
***
**
!C
73 *
**
5者択一マーク式試験の正答率
73 %,
2, +,
-"'"./44" 73 ! 1)
5者択一マーク式試験の正答率
マーク式試験で、回答をでたらめに行ったときの正答率を求める。正解はでたらめに 者に振り分け
られているとし、回答もでたらめに選ぶことにする。したがって正解の番号は1から5までの乱数を振っ
て与えられるとし、回答も1から5までの乱数を振って一つを選び、この つが一致したときを正解と
する。 問に対する回答の正答率を求める。
マーク式試験の正答率
1) 8
-
./
+,
-"'"./44":問題番号:
+,
-"'"./44":正解:
%,
2, C 9
) C 9
+,
-"'"./44" +,
-"'"./44" )
C ) 2'
+,
-"'"./44" & :正:
!4"
+,
-"'"./44" & :誤:
! C
+,
-"'"./44" 73 +,
-"'"./44" & $ ! 1)
プログラム実行ボタンの作成
プログラムをエクセルのシート上で実行するためには「コマンドボタン」をシート上に作成する必要
がある。「コマンドボタン」は次の手順で作成できる。
「開発」ボタンから「挿入」をクリック。
第章
プログラム例
「;@ コントロール」から「コマンドボタン」を選択
作成されたコマンドボタンを右クリックして「コマンドボタンオブジェクト」−>「編集」をク
リックして、表示を適切なものに変更。
コマンドボタンを右クリックして「コードの表示」をクリックすると、VBAが立ち上がり
;
0 1) ,##,I4-
! 1)
という表示が現れるので、上のスペースに完成済みのプログラム(本体のみ)をコピーする。こ
れでボタンにプログラムが割り付けられることになる。
エクセルにもどり、「デザインモード」(三角定規で表示されているコマンドツールボックスのボ
タン)をクリックすると、実行モードとなる。
実行モードとなったボタンをクリックすると結果がプログラムで指定されたページに出力される。
対話型プログラム実行ボタン
パラメータを入力してプログラムをエクセルのシート上で実行するプログラム例を下のあげる。これ
は自然数 % を入力すると
<
<
< <
を計算するプログラムである。コマンドは
パラメータ= C.,3:パラメータ?:
をプログラムに組み込めばよい。
1) "
J メッセージボックスで自然数 を自由に決められるプログラム
44"4
./ :"':
+,
-"'"./44" :自然数 :
+,
-"'"./44" :2乗の和:
+,
-"'"./44" :理論値: J 一応確認のため、公式による和を隣に書いて
おきます。
C.,3: から までの自然数の平方和を計算します。 は?:
%,
2, D +,
-"'"./44"
+,
-"'"./44"
対話型マクロによるカレンダーの作成
+,
-"'"./44"
$ 73 ! 1)
対話型マクロによるカレンダーの作成
月数を 1セル入力してその月のカレンダーを表示させるプログラムを作る。月の初めの日が何曜日
かはプログラムに与えてある。
まず、@3+ シートで「開発」をクリックして「挿入」を選択。次に「フォームコントロール」から
「ボタン」を選択して、シート上に「ボタン」を作成する。
「ボタン」は10行目以下に作っておくと良
い。このとき「マクロの登録」ウインドウが開くので、
「編集」を選択して、以下のプログラムを書き込
む。プログラム名はデフォルトのままでよい。プログラムを保存してシートに戻り、A1セルに任意の
月数を入力して決定した後、ボタンをクリックするとカレンダーが表示される。
「ボタン」を右クリック
して「テキストの編集」で名前を変えることが出来る。正、マクロのプログラム名は「ボタン1 3,」
で変わらないことに注意。
月の初めが何曜日から始まるかがわかればよい。週は日曜日から始まるとして、日曜日を1として、
順に月曜日=2、 土曜日=7としてやれば、前月の積み残し日が分かれば次のように計算できる。
年の1月1日は木曜日であった。
月
日数
実効的日数
週とあまり日
繰越日数
次の月の初日
<
<
<
<
<
<
<
<
<
<
<
<
6
6
6
6
6
6
6
6
6
6
6
6
<6木
<6日
<6日
<6水
<6金
<6月
<6水
<6土
<6火
<6木
<6日
<6火
以下で 月の積み残し日を ! で表している。
1) ボタン I4-
# )
. ) &
) ) )& 第章
プログラム例
) ) )K )L )A ) &
) ) +,
-"'".44" +,
-"'".44" :月:
C EL '
C C $ 2'
!4"
! C
!4"
C C $ 2'
!4"
! C
!
C 2' L
# )
%,
2, &
* C $ K
K C $ K
+,
-"'".44"* 73 ::
+,
-"'".44" :1:
+,
-"'".9/44" 44" %,,4,
9M +,
-"'".44" :8,:
+,
-"'".44" & :2:
+,
-"'".44" :+:
+,
-"'".44" :2':
+,
-"'".44" K :%
:
+,
-"'".44" L :1:
+,
-"'".9/44" L 44" L%,,4,
9M 任意の年のカレンダーの作成
%,
2, * C # $ K
# K C # $ K
+,
-"'".44"* C 2' +,
-"'".9/44"* 44"* I
%,,4,
9M C L 2' +,
-"'".9/44"* 44"* I
%,,4,
9M 73 ! 1)
上でアンダーバーはプログラム文が継続していることを示している。
次に、シート上にもう一つ「ボタン」を同様の要領で作成し、次のプログラムをかく。
1) ボタン I4-
8"/,3 :表示したい月をセル NA1O に半角数字で入力して N!
O キーをたたいてください :
! 1)
ここでは用紙の都合から L-= =! が2行にわたって表示されているが、プログラムでは1行で表
現しなければならない。また「ボタン 3,!」はプログラムの名前であるが、シート上の名前は付け
替えることが出来る。
任意の年のカレンダーの作成
年のカレンダーを作る際に使用した 年における各月の積み残し日数 ! 6 を基礎に、
年以降の任意の年のカレンダー(
ヶ月分)を表示するプログラムを作成せよ。任意の
年の入力はセル - とする。
年間の積み残し日数は、閏年でなければ1日、閏年であれば2日である。従って 年における 月の積み残し日数は
! < ! < ! , !*!
となる。ところで、! < ! < ! , !*! が を超えるときは で割った余りを
取らなければならないから
! 6 ! < ! < ! , !*!!% )
とすればよい。
カレンダーの出力は、横に1,2,3月、ついで各月の下に空行を入れて4月、5月、6月とす
るために、月数を とすると、行番号に
6 ! , !* !
第章
プログラム例
列番号に
6 ! ! , !* !!
を加えて、 について から まで計算すればよい。
年数、月数の表示を含めて、出力先を調整する。
プログラムが完成したら、シートに戻り、ボタンを作成する。
「表示」から「ツールバー」を選択
して、
「ボタン」をクリックし、シート上にボタンを作成するとマクロウインドウが開くので、そ
こからカレンダーのプログラムを選択して、ウインドウを閉じる。
ユーザーフォームの作成
ユーザーフォームはユーザーが で作成する独自のダイアログボックスである。フォーム上に必要
なコントロールを配置して、それに プログラムを付与して、対話型作業を行うためのものである。
例題 ホテルの支払金額の計算
東京では、ホテルの部屋代が1万円を超えると、消費税 %のほかにホテル税(地方税)が E 加算
される。泊り客の人数と、ホテルの部屋代を入力して、税込みの総額を出力する。部屋代を 3、宿泊人
数を 4 とし、消費税、ホテル税をそれぞれ
,
6 2
2
6
6 ( とすると、税込み総額は
< , < ! 図 7 ユーザーフォームの例
ユーザーフォームの作成
を立ち上げて、 ( を起動して、
「挿入」メニューから、
「ユーザーフォーム」を選
択する。新しいユーザーフォーム「M'」と「ツールボックス」が表示される。
ユーザーフォームの作成
ユーザーフォームに「」、「3''%($%」などのコントロールを配置する。まず、
「ツールボックス」の「」をクリック。
マウスポインターをフォーム上に移動して、コントロールを配置する場所の始点でクリックして、
「ツールボックス」から「ラベル」を選択し、
終点までドラッグする。
「」が配置される。
「」の横に配置して、説明文をかく。
同様に「
」、「 」を作成し、それぞれに表題をつける。
「ツールボックス」から「コマンドボタン」を選択し、フォーム上に作成する。
「3''%($%」
が出来るので、ボタンをクリックして表示を「.」と書き直し、さらに右クリックで「コード
の表示」を選択して以下のプログラムを書く。ここで上で作った「」の番号とプログラム
の値を格納する「」の番号が一致していることに注意。
;
0 1) ,##,I4-
# %
" C/
‘ 省略可
# 7 " C/
‘ 省略可
# 3 " 1/4 ‘ 省略可
# " 1/4 ‘ 省略可
# 2 " C/
‘ 省略可
+' F"
%,
#
23,3?4
7 23,3?4
23
2 C%
3 7
23,3?4 2
! +'
. +,
-"'".14
44" :C#":
44" :9,,# %
:
44" :7, , M"":
44"& :2,4 '
/:
44" : #,:
44" %
44" 7
44"& 2
! 1)
もう一つコマンドボタンを作り「%(」と名前を変えて、「コードの表示」でモジュールを開いて、
次のプログラムを作成する。
;
0 1) ,##,I4-
!
! 1)
第章
プログラム例
エクセルシートに戻り、
「開発」、
「挿入」をクリックして「;@ コントロール」から「コマン
ドボタン」を選択してシート上にコマンドボタンを作成して、
「フォームの呼び出し」と名前を変
えて、ボタンを選択して右クリックで「コードの表示」を選択して、次のプログラムを作成する。
;
0 1) ,##,I4-
+' F"
%,
#
23,3?4 4
23,3?4 4
23,3?4 4
! +'
F"
%,
#1',@
! 1)
ここで、プログラム名は先のモジュールにおけるコマンドボタンに対するものと同じになるが、こ
ちらはシートに付随した ):J であることから、きちんと区別されている。ただし、ユーザーが
混同しないように注意すること。
図 7 ユーザーフォームの例 ( の「デバッグ」から「コンパイル」を、次に「実行」メニューから「.$:ユーザー
フォームの実行」をクリックすると、シートのフォームが開くので、「.」を押して、結果を確
かめる。以後は、シートの「ファームの呼び出し」をクリックすることから始められる。
問題 .商品の定価、購入数、割引率を入力して、割引価格、消費税 E!、合計金額を表示するユーザー
フォームを作成せよ。
問題 .為替レートを調べて、円を入力してそれに相当する米ドル、ユーロによる額を表示するユーザー
フォームを作成せよ。
問題 .温度と単位(摂氏Cあるいは華氏F)を入力し、他方に変換した結果を表示するユーザーフォー
ムを作成せよ。ただし変換は
6 *! . !
.
6 *! < である。
問題 .元金 を年利率 で借りて、毎期末に ずつ 回で返済するとすれば、毎期末の返済額 は
6 < ! * < ! !
環境家計簿の作成
で与えられる。元金、返済期間、年利率を入力して、元利均等で返済するローンの毎期末の返済額を表
示するユーザーフォームを作成せよ。
通貨交換:小数点以下の桁数の制御
通貨を交換する場合、小数点以下2桁までは考慮する必要がある。 で少数点以下の桁数を制御
する最も簡単な方法は以下の通り。今、B4 を M.& に交換する場合
/ 0
6
1 *
であるが、このままだと小数点以下 桁まで書いてしまう。したがって小数点以下2桁でとどめるため
には
/ 0
6 ! , !*
1 *
とすればよい。切り捨てでなく四捨五入の場合は % のかわりに
$%( を使う。
摂氏華氏の温度変換
: に入力するデータは温度を表す数値と、摂氏華氏を表す 3 になる。このため入力する温
度(数値)を '#、摂氏華氏の温度単位を $% とすれば
+' F"
%,
#
#. 23,3?4
23,323
C ::
#.I,0 I,0 !4"
#.I,0 I,0 ! C
2'
A $ #.
:%:
$ A #. ::
23,3?4 #.I,0
23,3&23 I,0
! +'
として、数値データと文字データを区別しなければならない。
環境家計簿の作成
¾ 排出係数
は、商品の生産、輸送、消費における加工(料理)
・焼却などの全過程で排出されるので、それ
らをすべて計算しなければならないから、複雑な計算をしなければならない。ここでは環境省が算定し
第章
プログラム例
た 排出係数を使って、日常生活でどのくらいの が排出されているかを示す環境家計簿を作成
する。
排出係数は次の表で与えられている。 排出量は排出係数 消費量であらわされる表わさ
れる。
項目 単位
電気
50/
都市ガス +" ガス
灯油
水道
ガソリン
軽油
ゴミ
$
$
4
$
4
4
23
排出係数
消費量
排出量 2 3 !
(東京)
(沖縄)
電気の排出係数が沖縄県で突出しているのは、電気をすべて火力発電でまかなっている事情による。
このほかに、商品の 円当たりの排出係数を提供しているものもあるが、その精度については検討
の余地があろう。目安といったところである。
項目 単位
菓子
円
円
円
円
円
円
円
円
円
清涼飲料水 酒類
たばこ
本・雑誌
化粧品
衣類
家具
家電製品
排出係数
消費量
排出量 2 3 !
ユーザーフォームの作成
の ( を起動して、「挿入」メニューから「ユーザーフォーム」を選択する。新し
いユーザーフォーム「M'」と「ツールボックス」が表示される。
ユーザーフォームに「ツールボックス」から「」と「3''%($%」を選んで、必要
な数だけ配置し、ボックスにラベルを付ける
「ツールボックス」から「コマンドボタン」を選択し、フォーム上に「3''%($%」を作成
して、表書きを「. 」として、右クリックで「コードの表示」を選択してプログラムを書く。
「」の番号によってプログラムと値を受け渡しするので、対応関係を確かめること。
;
0 1) ,##,I4-
+' F"
%,
#
環境家計簿の作成
図 7 環境家計簿のユーザーフォーム
#I4 23,3?4
#I/" 23,3?4
#I4./" 23,3?4
#I,4 23,3&?4
#I@
23,3?4
#I/",4 23,3?4
#I4/',4 23,3K?4
#I/))/ 23,3L?4
C 23,3A?4 2'
I,4 !4"
I,4 44" ! C
I4 A
I/" I4./" I,4 I@
I/",4 I4/',4 I/))/ &
4 #I4 I4
)/" #I/" I/"
第章
プログラム例
4./" #I4./" I4./"
,4 #I,4 I,4
@
#I@
I@
/",4 #I/",4 I/",4
4/',4 #I4/',4 I4/',4
/))/ #I/))/ I/))/
23,3A?4 4
23,3?4 )/"
23,3?4 4./"
23,3?4 ,4
23,3?4 @
23,3&?4 /",4
23,3?4 4/',4
23,3?4 /))/
2,4 4
)/"
4./"
,4
23,3L?4 2,4
I,4 2,4
I,4
23,3K?4 I,4
23,3A?4 I,4
! +'
44" :項目:
44" :累積排出量:
44" :前回までの累積排出量:
44"& :電気:
44" :都市ガス:
44" :=; ガス:
44"K :灯油:
44"L :水道:
44"A :ガソリン:
44" :軽油:
44" :ゴミ:
44"
44"
44"
44"&
44"
:排出 (:
I,4
I,4
4
)/"
@
/",4
4/',4
/))/
窓口問題:窓口の数2の場合
44" 4./"
44"K ,4
44"L @
44"A /",4
44" 4/',4
44" /))/
! 1)
もうひとつコマンドボタンを作成しそのボタンに次のプログラムを割り振る。
;
0 1) ,##,I4-
!
! 1)
シートに戻り、「開発」から「挿入」をクリック「;@ コントロール」から「コマンド
ボタン」を選択して、シート上に作成、
「フォームの呼び出し」と名前を書き、
「コードの表示」を
選択してプログラムを割り付ける。
;
0 1) ,##,I4-
+' F"
%,
#
23,3?4 4
23,3?4 4
23,3?4 4
23,3&?4 4
23,3?4 4
23,3?4 4
23,3K?4 4
23,3L?4 4
! +'
F"
%,
#1',@
! 1)
( の「デバッグ」から「コンパイル」を、次に「実行」メニューから「.$:ユーザー
フォームの実行」をクリックすると、シートが開くので、「.」をクリックして、結果を確かめ
る。以後は、シートの「フォームの呼び出し」をクリックすることから始められる。
窓口問題:窓口の数2の場合
客が2分間に平均5人の割合で到着し、窓口で客の受けるサービス時間が1人平均3分であるとしよ
う。今、窓口が2つとして、客の平均の待ち時間を計算する。また、窓口の数と平均の待ち時間の関係
を調べよう。
はじめに客の到着時間を求めて、1次元配列に並べる。客は2分間に平均5人くるから、2分間に1
0回の割合で乱数を引き、到着時間を求める。客の受けるサービス時間も乱数を引いて求める。客は1
列に並んで待つことにし、窓口毎に並ぶ事はしないとする。
第章
1)
#
#
#
#
#
プログラム例
44
J 客の到着時刻
J 客の受けるサービス時間
" J 客のサービス開始時刻
@ J 客の待ち時間
J 窓口のサービス終了時刻
. / - # %,
J シートのページ数
J 乱数を振る間隔 分に1回の割合
J 客の受ける平均サービス時間
J 窓口の数
J サイコロを振る回数
J 客の到着順番号
2, C 9 E 2'
# #
# J# 番目の客の到着時刻
# /
9 9 J# 番目の客の受けるサービス時間
! C
73 来た順に窓口で待たずにサービスを受けられるのは、最初に来た窓口の数に等しい人数である。今窓
口は2つだから、最初の人を窓口1に、2番目の人を窓口2に入れる。この人達の待ち時間はゼロ、サー
ビス開始時刻は到着時刻に等しく、サービス終了時刻は到着時刻+サービスを受ける時間である。
%,
2, " @ "
+,
-"'".44"
+,
-"'".44"
+,
-"'".44"
+,
-"'".44"
+,
-"'".44"
73 &
"
"
@
3番目以降の客は、1列に並び、早く空いた窓口でサービスを受ける。今、客は同時に到着すること
がないように設定されているので、同時に窓口が空くことはないとしている。まず、窓口1のサービス
終了時刻 ! と窓口2のサービス ! を比較し、短い方を
番目の客のサービス開始時刻とする。こ
のとき、新しい客は常に窓口1に入れるようにすると、続く計算が簡単となる。このため、サービス終
了時刻が遅い方を窓口2に移す。これは計算上の便宜であり、実際に行われるものではない。 番目の
客のサービス開始時刻 ! とこの客の到着時刻 , ! を比べて、サービス開始時刻 ! の方が早ければ
待ち時間 5 ! 6 、そうでなければ待ち時間 5 ! 6 ! , ! である。また、この客のサービス終了
時刻は ! 6 ! < ! である。これは新しい客は常に窓口1に入るからである。このとき、まだ窓
窓口問題:窓口の数 の場合
口2は客がいるので、どちらの窓口が先に空くかを調べて、以下同じ事を繰り返す。 番目の客の待ち
時間は 5! である。また、すべての客の待ち時間を足して平均を取る。
%,
- 2, # C E 2'
" !4"
" ! C
J 待ち時間の合計を計算するダミー変数
J どちらの窓口が早く空くかの計算
J 窓口2が先に空いた場合は窓口1の客を窓口2に移し
J 新しい客を窓口1に入れる
C B " 2' J 新しく窓口でサービスを受ける客の待ち時間の計算
@ " !4"
@ " ! C
" J 新しくサービスを受ける客の窓口占有時間
+,
-"'".44" +,
-"'".44" +,
-"'".44" "
+,
-"'".44" & " +,
-"'".44" @
@
73 +,
-"'".44" :客番号:
+,
-"'".44" :到着時刻:
+,
-"'".44" :サービス開始時刻:
+,
-"'".44" & :サービス終了時刻:
+,
-"'".44" :待ち時間:
+,
-"'".44" :平均待ち時間:
+,
-"'".44" $ #
! 1)
窓口問題:窓口の数 の場合
一人一人の待ち時間と平均とが大きく異なる場合、窓口が少なすぎることがわかる。窓口の数が 個
の場合、窓口にいる客のサービス終了時刻の最小のもの(その窓口を とする)を選んで、その時刻に
次の客を窓口1にいれ、窓口1にかかっていた客を窓口 に入れればよいので、拡張は容易である。先
の問題のような客の到着頻度、平均サービス時間に対する、最適な窓口数を調べよ。
第 # 章 「格差社会」
最近、社会の「格差」について、国会や論壇は「見かけ上の問題である」という見解と「格差は拡大
している」という見解に二分され、ホットな議論が闘わされている。ここではこうした議論をデータに
よって検証し、現実の姿を描き出すことを試みる。
以下に政府統計から取った2つの表がある。これらのデータから課題を によって解くことを考
えよう。
度数分布、ヒストグラム、平均値、中央値、最頻値
次の表は「厚生労働省平成16年生活基礎調査の概況」から引用した平成15年の所得階級別に見た
世帯相対度数分布表である。
所得階級(5 円!
世帯相対度数 E!
∼
* * * * * * * * * * * * * * * * * * * ∼
データをシートに書き移し、データを読み込んで以下の課題を解く プログラムを作成する。
平均所得を求める。
第 章
「格差社会」
平均所得以下の世帯数の割合を求める。
所得階級別の世帯相対度数のヒストグラムを作る。
所得階級別の累積世帯相対度数を求め、それを図示する。
所得の中央値を求める。
所得の最頻値を求める。
平均値、中央値、最頻値の大小関係と、所得階級別世帯相対度数分布のプロファイルの関係につ
いて考察する。
統計学の用語・概念
以上の課題を実行するために必要な用語、概念をまとめておく。
平均値
個のデータ , , , に対して,平均値は
6
< < < ! 6
!
で与えられる.
また,表1のように、 個の階級からなる度数分布表が与えられているとき平均値は
6
,
6
,
6
!
で与えられる.同一のデータに対して定義 ! と ! は同じ結果を与えるものではない.度数分布は,実
データを階級に分け,階級に含まれるデータを階級値で代表させているから,そこに誤差が生じる.そ
のために度数分布をつくる際には階級の分け方には注意を要する.
表 7 度数分布表
階級値
½
¾
計
度数
相対度数
½
¾
½
¾
½ ¾ 相対階級値
½ ½
¾ ¾
統計学の用語・概念
また,連続的に変化するような変数 ,たとえば体重や身長などに対しては,度数分布も連続関数 確
率密度関数) ! となり,和を積分で表すことになって
$
6
!
,
!
6
!
で与えられる.これは式 ! の自然な拡張である.
平均値がデータの特徴をよく表現するためには,分布が単峰で,データの大半の値が平均値から大き
く外れていないことが必要である.例えば所得分布では,飛びぬけた富豪がいると,それだけで平均値
を引き上げてしまうが,そのときの平均値は実態とはかけ離れたものとなってしまう.平均値はデータ
のばらつきの程度とあわせて意味を吟味して使うようにしなければならない.
中央値
データの中のいくつかが飛び抜けて大きかったりすると,平均値がよい代表値にならいことがある.
例えば,データ
, , , , に対して,平均値は だが,これはデータの特徴を表しているとはいいがたい.このような時にはデー
タを大きさの順に並べて,その中央にくる値を代表値として使う方がよい.これを中央値という.デー
タの数が偶数の時は,中央に並ぶ つの相加平均を中央値とする.
最頻値
分布の峰に対応する値を最頻値という.度数分布表では,その度数が最大である階級の階級値がそれ
になる.分布に峰が つ以上ある場合には最頻値は有効な代表値とはならない.
平均値,中央値,最頻値の関係
峰が つしかなく,左右対称である分布に対しては,平均値,中央値,最頻値は一致している.分布
が左右対称でない場合,峰が分布の左側によっていれば(右側の裾が長くのびた分布)
最頻値 ( 中央値 ( 平均値
の順になるが,逆に左に長く伸びた分布では
平均値 ( 中央値 ( 最頻値
となる.この関係は定性的には次のようにして理解できる.分布の中心が中央値であるから,分布が右
に裾を引けば峰は左側にずれるので最頻値<中央値となるし,反対に左に裾を引けば峰は右にずれるの
で中央値<最頻値となる.また,分布によって囲まれる面積を半分にするのが中央値であり,分布に変
数をかけて加えたものが平均値であるから,分布が右に裾を引くときは大きな値からの寄与が大きく,
中央値<平均値であり,左に裾を引く場合は小さな値からの寄与が大きく平均値<中央値となる.図 は連続変数に対する確率密度関数
!6
,
!
6
第 章
0.25
0.2
0.15
0.1
0.05
「格差社会」
Mo Me
2
Mdn
-0.05
4
6
8
図 7 非対称分布の平均値 L!,中央値 L(%! と最頻値 L!
を画いたものである.最頻値は微分して直ちに求まり,
!
6
から,最頻値 6 である.中央値は
!
6
6
で決まり,
< < 6 を数値的に解いて,中央値6
となる.平均値は
!
6
である.こうして
最頻値 6 ( 中央値 6 ( 平均値 6
が確かめられる.
はずれ値(異常値)の処置
はずれ値(異常値)$! の属する階級のデータ数が全体に比べて十分小さいときは,はずれ値を
除いたデータの平均値を代表値とする.しかし,はずれ値を取り除く根拠は一般にそれほど自明ではな
い.誤りなのか,理由があることなのか慎重に吟味する必要がある.いきなりはずれ値を除外するので
はなく,はずれ値も含めてデータの評価を行い,はずれ値が出てきた理由を分析するべきである.
データのばらつき
分散
代表値がデータの特徴を良くとらえているためには,データが代表値からどれだけずれているかを示
す指標が必要である.分散 ;%! はその指標を与えるが,その計算に使われる代表値として平均値
をとる. 個のデータ , , , の平均値を $ とすると,データの各要素と平均値との差の 乗
! , ! , , !
データのばらつき
の平均値を分散といい で表す.
6
!
!
データの各要素と平均値との差が誤差を表すが,それらの和をとればゼロとなってしまう.平均値から
のズレが全体としてどのくらいあるかを見たいのであるから,データの各要素と平均値との差の 乗の
平均値をとることでその目的が達せられる.
データが階級に分けられているとき,すなわちデータが表 のような度数分布に与えられているとき,
分散は
表 7 度数分布表
階級値
度数
½
¾
相対度数
½
¾
½
¾
計
6
階級偏差平方 ½ ¾ n
!
½
¾ ½
¾ ¾
¾
¾ ¾
!
で与えられる.
同様に,分散は連続変数 に対しても定義され,確率密度関数を ! とすれば,
6
!
!
,
!
6
!
である.
標準偏差
分散の平方根を標準偏差 %(( (;%! といい,
6
!
!
と表わされる. が小さいほど,データは平均値の近くに分布し,ばらつきが小さい.大きな標準偏差
を持つデータは平均値からのばらつきが大きい.
データが階級に分けられているとき,すなわちデータが表 のような度数分布として与えられている
n
6 とき標準偏差は
!
!
!
!
で与えられる.連続変数に対しても同様に
と与えられる.
6
!
第 章
「格差社会」
標準偏差 は分布の広がりの目安を与えるが,統計学でもっとも重要な正規分布では,平均値からの
ずれが の範囲にあるようなデータは全体の E,
の範囲にあるようなデータは全体の E9
の範囲は全体の Eである.すなわち正規分布では,ほとんどのデータが平均値からのずれが の範囲にあると考えてよい.
Μ3Σ Μ2Σ ΜΣ
Μ
ΜΣ Μ2Σ Μ3Σ
図 7 分布の広がりと標準偏差
変動係数
標準偏差 と平均値 の比
!
を変動係数 Æ% 2 ;%! という.これは平均値に対してデータのばらつきの程度がどのぐら
いであるかを示す指標であり,データの特性値の一つである.一般にある系がいくつかのパラメータで
指定されるとき,それらのパラメータを組み合わせて作られる無次元量はこの系の特性値となっている.
変動係数が小さければデータは平均値の周りに集中している.変動係数は異なるデータセットの間でそ
れぞれのばらつきの程度を比較するときに有効である.例えば象の体重分布とねずみの体重分布が与え
られているとき,それぞれの変動係数を比較することでどちらに固体差のばらつきが大きいかを議論で
きる.
ローレンツ曲線
個のデータを小さい順に並べて
!
とし,第 階級までの累積相対度数を
6 < < < !*6 6
とおく.
6
,
6 ,
6
6
!
平面上の < 個の点
,!, , !, , !, ,
,
を結んだ折れ線をローレンツ曲線と定義する.
所得分布からローレンツ曲線を求める方法には2通りある。
!,,!
!
データのばらつき
所得分布において9 所得を等間隔 $ で の階級に分け、 番目の階級に入る世帯数を とすると
(図3)、累積相対世帯数分布は次のようになる。
p_1
p_2
m
p_3
2m
p_4
3m
p_5
4m
5m
図 7 世帯数分布の等分割
世帯数 累積相対度数 *7
*7
*
*
*
ただし 6 7
6
< !*7
< < < !*7
である。
所得分布で、全世帯を 等分して各階級の世帯数を 、 番目の所得階級の境界値を $ (図4)、
> とすると、次の累積相対階級平均値分布を得る。このような方法で得
階級 での階級平均値を $
られる分布を 分位階級別累積相対度数分布という。
p
p
p
m_1 m_2 m_3
p
p
m_4
m_5
図 7 世帯数分布の 分位階級別分割
第 章
階級平均値 累積相対階級平均値
>
$
>
$
>
$
>
$
>
>
$
> *%
$
> <$
> !*%
$
> <$
> <<$
> !*%
$
*
*
*
ただし $
> 6 %
6
>
$
「格差社会」
$ *%
である。
この2つの分割方法による累積相対度数分布から得られるローレンツ曲線は、階級の取り方によって等
価になる。所得最大値、総世帯数はどちらも同じであるから、それぞれ
6 $
%
6 7
が成立している。ここで階級を、階級 までの累積所得が等しい様に選ぶことにすれば
$
6
が成立している。これは
>
$ >
$
6
$
と等価であるが、上の式を満たすように階級を選ぶことができるためには、所得分布が与えられている
必要がある。このとき
%
> 6
$
$
> 6
$
$7
> 6
$
7
となって、2つの階級分割法によって作られる累積相対度数分布は等しくなることがわかる。
ジニ係数
不平等度の指標を与えるものにジニ係数 N% Æ%! がある. 個のデータ , , , の散
らばりの尺度に,データの対ごとの隔たり の平均
をとる場合があり,これを平均差 '% (O%! という.この平均差と平均値
?6
の2倍の比
8
6
?
!
所得分布とローレンツ曲線
をジニ係数という.ジニ係数
8
は,ローレンツ曲線と対角線とで囲まれる面積
の2倍に等しい事が
証明されているので、ジニ係数はローレンツ曲線の台形近似によって次のようにもとめられる。いま、
階級 の累積相対度数を
*7
とすれば、階級 と階級 を結ぶローレンツ曲線と横軸の間に
出来る三角形( 6 )と台形( )の面積は
6
7
7
<
!
2
6 2
であるから、これをすべて加えあわせると
6
<
7
6
! となる。 ! と ! を結ぶ直線と横軸で作られる3角形の面積は であるから、この対角線とロー
レンツ曲線で囲まれる面積は
6
6 ! 7
! 6 ! %
!$
>
で与えられる。ここでは、ローレンツ曲線を階級区間毎の直線で近似して、面積を求めたが、この場合
のように、等間隔のきざみごとで値がわかっている関数の積分(面積)に関しては様々な等間隔分点の
補間公式が知られていて、官公庁の統計調査報告書ではそれらの一つが使われている。
ジニ係数はローレンツ曲線と対角線の囲む面積の2倍であるから、分点の補間補正を考慮しなければ
8
6 6 7
! 6 %
!$
>
で近似されることになる。
所得分布とローレンツ曲線
ある世帯集団の所得データが与えられているとき、それから所得分布を計算し、その集団での所得格
差について考える。
所得分布
所得の最大値、最小値を求め、その差を $ 個の階級に分割し、階級に属する世帯数(度数)を計算す
る。いま所得の最大値と最小値をそれぞれ $、$ とすると、階級幅は
で与えられ、階級は
6
$
$
$
第 章
'
階級 階級値 '% ∼ '%<
'%< ∼ '% < '%<*! ∼ '% < ' * ∼ '
'% < '% < '%<*
!
' * 「格差社会」
度数
ここで所得階級値を横軸に、世帯度数を縦軸にとって描いたものが所得分布である。
ローレンツ曲線
所得の少ない順に世帯を並べ直し、世帯の相対順位をきめる。いっぽう、少ない順に並べた所得の累
積分布、相対累積分布を求め、世帯の相対順位を横軸に、所得の相対累積分布を縦軸にとって描いたも
のがローレンツ曲線である。
所得データが次のように与えられている場合を考えよう。
&
所得 相対 &
相対累積所得
上の表で、左側の2つが与えられた所得データ、右側が所得の少ない順に並べて世帯順位と所得額の相
対累積分布表である。この右側の2つのデータを図示したものがローレンツ曲線である。
所得分布とローレンツ曲線
1
0.8
0.6
0.4
0.2
0
0
0.2
0.4
0.6
0.8
1
図 7 ローレンツ曲線
所得等分位分布とローレンツ曲線
通常所得データは膨大であるので、等分位分布で表現することが多い。所得の少ない順に世帯を並べ
直し、データ数が同じになるように 個の等分位に総世帯を分け、それそれの分位平均所得と相対累積
分位平均所得分布を求める。
世帯 % 等分位 分位平均所得 相対累積分位平均所得
%
%
%
$ *% 6 % *%
$ < $ !*% 6 % *%
$ < $ < < $ !*% 6 % *%
%
$
$
$
$
ただし
%
6 $ < $ < < $ %
6 $ < $ < < $
ここで所得 ' 等分位を横軸に、相対累積分位平均所得分布を縦軸に描いたものがローレンツ曲線である。
ローレンツ曲線の意味
ローレンツ曲線の意味を考えよう。すべての世帯が同一所得であるとき、所得差がないので、世帯を
個の等分位へ分けても、分位平均所得は同一である。従って相対累積分位平均所得分布は
%
世帯 % 等分位 分位平均所得 相対累積分位平均所得
%
%
%
$*% 6 *
$*% 6 *
$*% 6 *
$
$
$
$
第 章
「格差社会」
となって、ローレンツ曲線は対角線と一致する。一方 個の等分位のうち、 個の分位の世帯は同一
所得 を、残りの つの分位に属する世帯は同一所得 を得ているとする。このとき % 6 ! < となるが、 (( とすれば % として良いから、相対累積分位平均所得分布は
%
世帯 % 等分位 分位平均所得 相対累積分位平均所得
%
%
%
*% 6 * ! < ! * (( *
*% 6 * ! < ! * (( *
*% 6 * ! < ! * (( *
と近似される。このローレンツ曲線は図の様に表される。
1
0.8
0.6
0.4
0.2
0
0
0.2
0.4
0.6
0.8
1
図 7 ローレンツ曲線7 :6
1
0.8
0.6
0.4
0.2
0
0
0.2
0.4
0.6
0.8
1
図 7 ローレンツ曲線::6
上の2つの例から完全同一所得であればローレンツ曲線は対角線に一致し、一部の世帯が巨大な所得
を得ている集団にあっては、ローレンツ曲線は対角線から大きくはずれる。このことから、ローレンツ
曲線は所得の世帯間格差を表す指標として使われている。ローレンツ曲線はしばしば不平等指標と言わ
れるが、所得差と不平等は必ずしも同一視できない事に注意。ローレンツ曲線と対角線で囲まれる面積
の2倍がジニ係数である。
ジニ係数の求め方は次の通りである。ローレンツ曲線は実際は離散的な点を結んだ直線からなるので、
対角線とローレンツ曲線で囲まれる部分の面積は、対角線と横軸で来ます面積(6
! からローレンツ
所得分布とローレンツ曲線
曲線と横軸で囲まれた部分の面積を引いたものに等しい。ローレンツ曲線と横軸で囲まれた部分の面積
は、ローレンツ曲線の2つの隣り合う分位に挟まれた台形の面積の和であるから、
6
6
% % < %
<
<<
%
%
% % % %
< %
%
< ), <
%
< %
%
で与えられる。従ってジニ係数は
%
6 ! 6 < %
8
で与えられる。
プログラム
% 個のデータが #6 の 列に与えられているとき、これを読み取って統計量を計算し、分布を求め
るプログラムは以下の通りである。
1) ,#
# ) / '
# ## $ #
. J データの取得
%,
2, +,
-"'".44"
73 J 平均値
0 %,
2, 0 0 $ 73 J 分散
0 %,
2, 0 0 0 D $ 73 J 標準偏差
" 1
0
第 章
J 最大値(切り上げ)
#3 %,
2, C #3 E 2' #3 73 #3 C#3 J 最小値(切り捨て)
# %,
2, C # B 2' # 73 # C#
+,
-"'".44"
+,
-"'".44"
+,
-"'".44"&
+,
-"'".44"
+,
-"'".44"
&
&
&
&
&
0
0
"
#3
#
J 度数分布の計算
%,
2, #
73 " #3 # $ #
%,
2, 3 C # $ "
3 3 73 +,
-"'".44"A
+,
-"'".44"A
%,
2, #
+,
-"'".44"A
+,
-"'".44"A
73 A :階級値:
:度数:
A # " $ . J 小さい順に並べ替え
+,
-"'".44" A :昇順所得:
%,
2, 「格差社会」
所得分布とローレンツ曲線
)# #3
%,
* 2, C * E )# 2'
)# *
*# *
! C
73 *
) )#
*# #3
+,
-"'".44" L )
73 J 分位分布の計算
+,
-"'".44" A :所得分位:
+,
-"'".44" :相対累積分位所得:
+,
-"'".44" A +,
-"'".44" +,
-"'".44" A +,
-"'".44" %,
2, #
) ## %,
* 2, ##
)* ## 73 *
/ $ ##
+,
-"'".44" A $ #
/
' 73 %,
2, #
+,
-"'".44" ' $ '#
73 J ジニ係数の計算
%,
2, #
' $ '#
73 +,
-"'".44"A :ジニ係数:
+,
-"'".44"A $ # $ #
J ローレンツ曲線の作図
第 章
「格差社会」
# '
,)* " '
()*
1 '
,)* +,
-"'".'
()*" +' '
,)*'
'
2. 34561
="7,8
-
"
<"=/ %4"
11,
+,
-"'".9/:*: ;4,34,4#"
! +'
! 1)
プロジェクト
プロジェクト 次の表は厚生労働省「平成16年国民生活基礎調査: 分位階級別の所得の状況」である。
所得5分位階級
P 年
/#7DDD'/D-J#$,,%/D,*,*
*
/'!
データをダウンロードし、読み込んで以下の課題を解く プログラムを作成する。
平成 年から平成 年の各年の所得 分位階級ごとの一世帯当たり平均所得を表すグラフを作り、
一枚の図に表す。
平成 年から平成 年のおける所得 分位階級別に見た一世帯当たり平均所得の経年変化を表す
グラフを作り、一枚の図に表す。
平成 年から平成 年の年毎の所得 分位階級別に見た一世帯当たり平均所得の相対度数分布表
を作成し、それをもとに累積所得額の表を作る。
で作成した累積所得額の表を各年の最大累積所得額で割ることにより規格化せよ。それをもと
に平成 年から平成 年の各年のロ−レンツ曲線を作成し、一枚の図に表す。
で作成したロ−レンツ曲線をもとに平成 年から平成 年の各年のジニ係数を求め、ジニ係数
の経年変化を表すグラフを作る。
プロジェクト 格差に関する以下の文献を参考に、自身の仮説を立て、その仮説を新たなデータによって検証せよ。レ
ポートの構成は、例えば
はじめに:格差を巡る議論
仮説の設定
プロジェクト
仮説を検証するデータが満たすべき基準
データの加工方針
結果
まとめ
のようにせよ。
格差に関する文献
白波瀬 佐和子 編集!. 変化する社会の不平等―少子高齢化にひそむ格差. 東京大学出版会 .
大竹 文雄 著!. 日本の不平等. 日本経済新聞社 .
三浦 展 著!. 下流社会 新たな階層集団の出現. 光文社 .
白波瀬 佐和子 著!. 少子高齢社会のみえない格差―ジェンダー・世代・階層のゆくえ. 東京大
学出版会 .
暉峻 淑子 著!. 格差社会をこえて. 岩波書店 .
朝日新聞経済部 著!. 不安大国ニッポン 格差社会の現場から. 朝日新聞社 .
山田 昌弘 著!. 希望格差社会―「負け組」の絶望感が日本を引き裂く. 筑摩書房 .
樋口 美雄 著!,財務省財務総合政策研究所 著!. 日本の所得格差と社会階層. 日本評論社 .
第1章 所得格差の拡大はあったのか(大竹文雄)は以下の M + より入手可能
/#7DDD
$*,J# ($#$P,/, #(2
佐藤 俊樹 著!. 年代の格差ゲーム. 中央公論新社 .
鹿又 伸夫 著!. 機会と結果の不平等―世代間移動と所得・資産格差. ミネルヴァ書房 .
中央公論編集部 編集!.
「 論争・中流崩壊」 中央公論新社 .
佐藤 俊樹 著!. 不平等社会日本―さよなら総中流. 中央公論新社 .
全国消費実態調査トピックス −日本の所得格差について− (平成 年 月 日) 総務省・統
計局 /#7DDD-J#(1%/#*/'
第
章 少子高齢化社会の課題
少子高齢化社会の急速な展開は社会に多くの課題を与えている。はじめに人口動態学を学び、これを
基礎に労働力、年金、外国人労働力などを組み入れた未来予測を行うこととする。
人口ピラミッドの作成
人口問題研究所のホームページから(/#7DDD#-J#)男女別人口推移データをダウンロー
ドして人口ピラミッドを作る。人口ピラミッドは縦軸に年齢、横軸の負に男子、正に女子を取っている
ので、これを で作図するには、人数と年齢を並べた2列からなるデータセットを作り、散布図で
作図すればよい。以下のプログラムは 年の人口ピラミッドである。
1) .
#
# # +,
-"'":ピラミッド:44" A
%,
2, +,
-"'":データ:44"
# +,
-"'":データ:44"
+,
-"'":データ:44"
73 &
K
%,
2, +,
-"'":ピラミッド:44"
+,
-"'":ピラミッド:44"
+,
-"'":ピラミッド:44"
+,
-"'":ピラミッド:44"
73 #
! 1)
第 章
少子高齢化社会の課題
人口指数
人口構造の特徴を示すものに人口指数がある。これは、年少人口(0歳ー15歳)、生産年齢人口 1
5歳ー64歳)、老齢人口(65歳ー)の全人口の比である。また年少人口と老齢人口を足したものを
従属人口という。年少人口、生産年齢人口、老年人口、従属人口指数(=従属人口生産年齢人口)、総
人口の推移を一つのグラフに表す複合グラフを作れ。
1) .,.I3
# # %,
* 2, +,
-"'":人口指数:44"*
A * A
%,
2, +,
-"'":データ:44"
# +,
-"'":データ:44"
+,
-"'":データ:44"
73 . . . %,
2, C E & 2'
. . # !4"C E & 2'
. . # !4"
. . # ! C
73 +,
-"'":人口指数:44"*
+,
-"'":人口指数:44"*
+,
-"'":人口指数:44"*
+,
-"'":人口指数:44"*
+,
-"'":人口指数:44"*
73 *
+,
-"'":人口指数:44"
+,
-"'":人口指数:44"
+,
-"'":人口指数:44"
+,
-"'":人口指数:44"
& A $ A $ &
&
* &
.
.
.
. . $ .&
. . .
:年少人口:
:生産年齢人口:
:老年人口:
:従属人口指数:
人口ピラミッド・アニメーションの作成
+,
-"'":人口指数:44" & :総人口:
! 1)
出生数の経年変化
出生数が年とともにどう変化しているかをグラフで表す。
合計特殊出生率 合計特殊出生率 !, は、 歳から 歳の女子を出産年齢期と規定して、年齢 の女子数を $!、
年齢 の女子が生んだ新生児の数を ! として
6.+
6
!
6
$!
!
<
$!
!
!
< <
$!
$
で定義している。これは一人の女性が一生の間に産む子供の数の平均と解釈される。
社会保障・人口問題研究所の人口データは 年おきに与えられて理ばかりでなく、新生児の総数だけ
の情報で、新生児を生んだ女性の年齢分布は与えられていない。そこで次のように推定しよう。
ある年 の新生児の総数 2 ! は、その年の年齢 の女性が出産した子供の数 ! の和で表されて
!6
2 ! 6 ! < ! < < !
となる。そこで総数 2 ! を 歳から 歳までの女性が生んだ子供の数に振り分けることで ! を推
定することにする。出産年齢分布は正規分布をしていると仮定して
! 6 2 !
とする。ここで 6 6 6
¾
を使う。(分散の逆数)と (平均値)は *
年
の実データから計算された合計特殊出生率を比較的よく再現するものとして選んである。
人口問題研究所のデータから $!9
! をよみとり、式 ! を使って ! を求めて式 ! に代入すれ
ば、合計特殊出生率を推定できることになる。
2 人口ピラミッド・アニメーションの作成
国立社会保障・人口問題研究所のデータから1950年から2050年までの11枚の人口ピラミッ
ドを作成する。プログラムは以下の通り。グラフの作成もプログラムされている。
1) .
#
# # %,
* 2, A * +,
-"'":ピラミッド:44" %,
2, * 第 章
+,
-"'":データ:44"
# +,
-"'":データ:44"
+,
-"'":データ:44"
73 %,
2, +,
-"'":ピラミッド:44" 73 %,
2, +,
-"'":ピラミッド:44" +,
-"'":ピラミッド:44" 73 +,
-"'":ピラミッド:44" +,
-"'":ピラミッド:44" 少子高齢化社会の課題
& * * * #
* * :男:
* :女:
# '
()* " '
()*
+,
-"'":ピラミッド: 0
1 '
()* 01''
()*" +' '
()*'
'
2. 34
1-
<"=/ %4"
11,
+,
-"'":ピラミッド:9/44" * 44" * ;4,34,4#"
! +'
73 *
! 1)
注意:上のプログラムで最後から4行目・5行目の..$& 0,/=ピラミッド=! %-!
の行は シートに収めるため2行に分けて書いてあるが、 では 行で書くこと。
パワーポイントによる人口ピラミッドアニメーションの作成
上で作成した人口ピラミッドの11枚のグラフの軸のスケールがそろっていることを確かめる。こ
れがそろっていないとアニメーション実行中に図が飛んだりゆがんだりするので、はじめに確か
めておく。軸のスケールを設定するには軸をダブルクリックし、軸の最大値、最小値を11枚で
同じ値にしておけばよい。
新しいスライド(白紙)の1枚に、上で作成した人口ピラミッドの図の 舞を対応させ、すべて
を1枚ずつコピーする。このとき年代順にコピーしておくとあとで便利である。
11枚の人口ピラミッドをすべてコピーしたスライドで、
「スライド一覧表示」にして、
「編集」−
>「すべて選択」のあと、「アニメーション」から「画面の切り替え」を選択。
「画面の切り替えのタイミング」から「自動的に切り替え」を選択し、時間を「1秒」に設定
する。
人口動態学
「すべてのスライドに適用」を選択。
「スライドショー」を選択。
人口動態学
生まれてから死ぬまで人の一生は、個人レベルで見ればドラマにあふれているが、人口というマクロ
なレベルでみれば年齢間の移動という単純な問題となる。男女の区別など、現実的な対応は順次考える
ことにし、簡単なモデルから始めることにする。
ある年 , における年齢 の人口密度を 7 ,! とすると、次の年 , < における年齢 の人口密度は、
その年における年齢 の人口のうち生き延びたもので決まるから、生存率を ! とすれば
< , < ! 6 !7 ,!
!
7 で与えられる。ここで生存率を年齢に依存するとしたのは、乳幼児や高齢者の死亡率が高いことを考慮
したものであり、死亡率を 0 ! とすると
! 6 0 !
!
である。
ゼロ歳人口は生まれてくるだけであるが、出産年齢に幅があることを考慮し、出産率を年齢によると
して 9 ,! とすれば
7
, < ! 6
! !
!
9 , 7 , と表される。ここで和は出産年齢にあたる人口についてとるものとする。また、出産率は年々変化する
ことを想定して時間の関数とした。
つぎに平均寿命を とすると、個人差を無視して、
7 < , < ! 6 7 ,! 6 !
としてよい。
まとめると
7
, < ! 6
! !
!
9 , 7 , < , < ! 6
7 7 ! !
!
7 , < ,! 6 !
となる。
,
年における全人口 7 ,! は
!6
7 ,
!
!
7 , で与えられるから、式 !*! から
< ! 6
7 ,
! 9 , 7 ,
6
! < 9 0
7 ,
!<
! !
7 ,
!
第 章
ここで、
6
9
! !
9 , 7 , ! 6 0 !
0
6
少子高齢化社会の課題
! !
0 7 , をつかった。これは1年間の人口変化が、新たに生まれた人の数と死亡した人の数の差であることを示
している。
年齢分布を求めるためには式(!*)を解く必要があるが、これを解くためには、出産率、生存率と
初期人口分布を与える必要がある。
モデル
出産年齢を
9 ,
と
!6
の間として、出産率を
! ! ,*6 !
)
),:5
!
とする。ここで 6 は出産率の時間的な減少を特徴づける定数とする。 は出生率の大きさを制御するパ
ラメータである。
生存率は
! 6 ! !
6
!
とする。
次に初期人口分布を
! 6 7 !
7 !
と与える。
フローチャート
プログラムは、ひとまとまりの仕事をする単位の集まりから構成される。人口動態を調べるプログラ
ムは以下の構造を持つ。
配列の宣言
パラメータの設定
! 計算期間の指定
:! 生存率分布の設定
平均寿命
生存率パラメータの設定
生存率分布の計算
! 出生率の設定
出産年齢の設定
出産率パラメータの設定
出産率分布の計算
(! 初期人口分布の設定
プログラム単位
人口変化の計算
! 歳児の計算
:! 各年齢での人口変化の計算
結果の出力
プログラム単位
プログラムの開始と終了
.$: ##!
%( .$:
配列の指定
# . . " )
パラメータの設定
出力先のスプレッドシートのページ数 #-
計算期間 生存率分布の設定
L
$ " " %,
2, " " !3." D +,
-"'"./44" "
73 第 章
少子高齢化社会の課題
出生率分布の設定
) ) &
) &
%,
) 2, )
) ) ) ) +,
-"'"./44" )
73 初期人口分布の設定
. . %,
2, . . !3.. D +,
-"'"./44" .
73 ! " #
’出力制御パラメータ
’出力コラムを指定するパラメータ
’10年ごとに出力
2 J 出生率を調整するパラメータ
%,
2, 2 J 期間 2 にわたって繰り返し計算
J 出力を制御するパラメータ
. ’0歳児の計算
%,
* ) 2, )
. . )* $ 2 .*
73 *
%,
* 2, ’各年齢における次年度への生存数の計算
.* "* .*
73 *
%,
* 2, ’年齢ごとの人口を格納(p2(j)は計算都合上のダミー)
.* .*
73 *
C C $ 2' ’出力条件の計算(10年ごとに出力)
%,
* 2, +,
-"'"./44"* .* ’結果の出力
日本の人口動態( * !:政府統計・将来予測
73 *
! C
73 日本の人口動態( :政府統計・将来予測
人口問題研究所のホームページから(/#7DDD#-J#)男女別人口推移データをダウンロード
してシート2にコピーし、男女加えた人口推移データをシート1に作成して、人口推移のグラフを作る。
以下のプログラムは、人口問題研究所のデータ(シート2)を読み込み、男女加えて、結果をシート
1に出力するものである。ページに名前をつける場合は
./=名前=!
とかく。
1) ,4I.,.
# # 1'" 0
%,
* 2, %,
2, #
* +,
-"'"44"
73 73 *
*
1'" 0
44" :年齢:
44" A
%,
2, 44" A 73 %,
2, #
44" 73 %,
* 2, %,
2, #
44" *
73 73 *
*
+,
-"'"44"
*
第 章
少子高齢化社会の課題
! 1)
図 7 人口問題研究所「日本の将来推計人口」のデータをグラフ化したもの
人口予測シミュレーション
人口問題研究所のデータから 年の人口を初期値として、
年までの人口を計算し、 年間隔
で出力して、人口問題研究所の予測と比較する。生存率、出産率はともに時間的に変化するはずである
が、ここでは簡単のため時間的な変化を無いものとして、年齢依存性を以下の図のようにとった。変化
を考慮するには以下のプログラムで と を有限に選べばよい。
図 7 人口動態予測:シミュレーションに使った生存率と出生率
政府統計・将来予測のデータから 年の人口を初期値に選び、
年までの人口予測を、人口動
態学に基づいて行うシミュレーションのプログラムは以下の通りである。ここで男女合計の年齢別人口
データ(シート1)から 年度のデータをシート3の4列目にコピーしておくこと。シミュレーショ
ンでは毎年の年齢別人口が計算されるが、シート3には 年おきのデータを出力している。これは政府
データが 年おきなので、それと比較するために必要なデータに限ったからである。計算結果はシート
3の5列目に 年度の人口データ、6列目に 年度の人口データと順次 年まで出力される。
1) .,.
# . . " )
./ 人口予測シミュレーション
AK
$ " " " %,
2, "" !3." D $ !3." D " " !3." D ""
+,
-"'"./44" "
73 ) ) &
) %,
) 2, )
) ) ) ) +,
-"'"./44" )
73 +,
-"'"./44" & %,
2, . +,
-"'"./44" &
+,
-"'"./44" 73 %,
2, . %,
* ) 2, )
. . )* .*
73 *
%,
* 2, .* "* .*
73 *
%,
* 2, .* .*
第 章
少子高齢化社会の課題
73 *
C C $ 2'
+,
-"'"./44" & %,
* 2, +,
-"'"./44"* & .*
73 *
! C
73 ! 1)
シミュレーションの結果は以下の通りで、人口問題研究所のデータを再現していることがわかる。
図 7 人口動態予測:シミュレーション
少子高齢化社会の課題
少子高齢化がもたらすもの
生徒・学生数の減少による教育制度の見直し
生産年齢人口の減少による労働力不足
高齢化による労働生産性の低下
高齢化による介護の人的・経済的負担の増大
社会保障制度の見直し
人口の減少による国内市場の縮小・経済成長の阻害要因
人的・財政的基盤の脆弱化
基礎年金財政
世界人口の爆発
億( 年)
億 年! 億 年!
資源・エネルギー・環境への負荷の増大
食糧危機、飲料水危機
基礎年金財政
日本の国民基礎年金保険制度は、徴収した保険料を年金受給者に支払う賦課方式をとっている。しか
し保険料では給付を賄えないので、不足分は国庫で負担している。現在は 年度の年金法改正によっ
て国庫支出額を給付総額の から へ変更している途上(
年から完全実施)。
20歳から60歳まで年金保険料を払うと年金を満額受給できる。25年以上払うと年金受給の権利
を得て、保険料の支払期間に応じた年金を受給することになる。
年金は死亡によって権利が消滅するので、支払保険料総額と受給年金総額は人によって異なる。平均
寿命が延びてきたことにより、支払保険金総額と受給年金総額の比率は表1のように年々小さくなって
きた。
表 7 一人あたりの保険料支払い総額と給付総額・倍率
生まれ年
保険料総額(万円) 給付総額(万円) 倍率
.!
.
!
. !
.!
.!
.!
P!
P!
表1の給付総額は平均寿命から計算したものであり、誰もがもらえる数字ではないことに注意。
年に年金法を改正し、少子高齢化のもとで進行する赤字構造をなくし、 年もつ制度として、
次のように保険料、給付額、国庫負担率を変更した。
保険料
保険料は1998年度に月額13300円に引き上げられてからしばらく据え置かれてきたが、20
05年度に280円引き上げられて13580円となり、その後毎年280円引き上げられることになっ
ており、上限を16900円としたので2017年に16900円となって、それ以後は据え置かれる
ことになっている。すなわち 年の月額保険料 は
6
<
!
)
)
)
6 (6 ( 6 (
第 章
少子高齢化社会の課題
実際には前年の物価変動を考慮した改定率をかけるので厳密には異なるが、改定率はほぼ1なので、大
きな変化はないとしてよい。
給付金
給付年金も年々変化しており、表2のようになっている。
表 7 給付年金満額の変化
年
満額年金額
国庫負担率
年金給付総額に対して保険料総額が少ないので、不足分は国庫から補てんしている。この国庫補てん
は税金によるもので、所得再配分の考えによっている。現在は国庫負担率を給付総額の から に
引き上げ途上で、
年から完全に とする。
課題1
年金制度に不安を感じて保険料を払わない人々が増えているが、その実態がすべて明らかになってい
るわけではないので、ここでは、20歳ー60歳の人はすべて年金保険料を支払っているとしよう。ま
た、年金受給者も40年間払っていなかった人もいるし、61歳になった段階で65歳を待たずして減
額を覚悟で支給を受ける人もいて、それらの情報も明らかでないので、ここでは61歳から64歳の人
は年金を請求せず、65歳を超えて年金請求を保留している人も考慮せず、65歳以上の人がすべて満
額の年金を支給するとしよう。
人口問題研究所の人口データを使って2000年から2050年まで、10年ごとの年金収支を計算し、
その結果を折れ線グラフで表示せよ。
年金収支は
収入=一人当たり保険料月額Q12Q20−60歳人口!
支出=一人当たり年金満額給付額Q65歳以上人口!Q*国庫負担率)
で決まるとせよ(Qは掛け算)。
課題2
上の試算では、年金不払い者も考慮されていなければ、受給者がすべて満額受け取ることになってい
る。P 年の実績で第 号被保険者 万人、第 号被保険者 万人、第 号被保険者 万人、
計 万人の被保険者がいる。第 号・第
号被保険者は保険料が天引きされているので未加入や不
プロジェクト
払いはないが、第 号被保険者には不払いや未加入が存在する。第 号被保険者の E が未加入・不払
いとすると、それは全体の E である。また受給者のすべてが満額とは考えられないので、給付総額も
割り引かねばならない。
不払いを現役総人口の E として、年度ごとで収支がバランスする平均給付額の満額給付額に対する割
合を求めよ。
年金収支は
収入=一人当たり保険料月額Q12Q20−60歳人口!Q*不払い率!
支出=平均給付額Q65歳以上人口!Q*国庫負担率)
として9 収支バランス ; が R6収入−支出>0になるように
平均給付額= *Qh!Q満額給付額
を決めればよい。このためには
' ,
' ' P 収入 支出
C P B 2' !3 ,
=,,.
をつかって : を決める。
プロジェクト
少子化への転換
出生力転換 「多産多死」から「少産少死」
出生率の低下(合計特殊出生率 !
中高年の死亡率の低下
扶養指数(一人の高齢者を支える若年者の数)の低下 !
少子化の背景
晩婚・未婚の増加
女性の高学歴化・労働力化
子育ての機会費用(子育てをせずに働いた場合に得られたはずのお金)の増大
子育て支援の不十分
第 章
少子高齢化社会の課題
人口動態将来予測:日本
人口動態を記述するプログラムの完成させる。
厚生労働省や国立人口問題研究所などの人口動態データをウェブサイトから入手してグラフを作
成する。
厚生労働省や人口問題研究所などが発表している将来予測のデータにあうような人口動態モデル
を作る。人口動態モデルは年齢別死亡率 生存率)、出産年齢別出生率で一義的に決まってしまう
ので、データにあうような生存率、出産年齢別出生率を探す。将来予測は上位モデル、中位モデ
ル、下位モデルの3つからなっている。それぞれに対する生存率と出産年齢別出生率を求める。
予測データに合うように決まる生存率、出生率は、社会の現実を反映したものになっているのか
を吟味する。すなわち生存率、出生率からみえてくる現実、国民のライフスタイル、意識を分析
する。
少子高齢化がもたらす課題のひとつである年金問題について、年金の仕組みを調べ、人口動態のシ
ミュレーションを年金問題へ適用し、少子高齢化がどのようにして年金破綻へと導くのかを示せ。
人口動態将来予測:世界
人口爆発とはどういうことか?世界の人口データから分析せよ。
世界の人口動態予測をシミュレーションせよ。
年金制度の現状と将来
はじめに:年金制度の考え方と仕組み
国民基礎年金の財政構造
人口の将来予測
少子化と年金財政の破綻
終わりに:公的年金か私的年金か
「年金制度の現状と将来」について上の構成例を参考にしてわかりやすいプレゼンテーション原稿をパ
ワーポイントで作成すること。構成例にとらわれることなく、各自で内容を組み立てて良いが、以下の
項目は必ず入れること。
人口予測グラフ
人口ピラミッド(アニメーション)
従属人口指数の推移のグラフ
年金財政の推移のグラフ
なお、グラフを作成したプログラムも添付すること。
第 章 為替相場の変動
経済活動には種々の変動現象があるが、そのなかでも把握困難な現象が株価の変動や為替の変動であ
る。これはマネーゲームといわれる投機的な行動が主要な側面となってきたことによっている。大量の
売り買いをするのでわずかな価格変化でも利益を生むからである。ここでは価格変化の動向だけが売買
の指針となっている。
株は個人では直接売買できず、株式市場で取引する権利を持つ証券会社を通して行うことになる。証
券取引所では、銘柄ごとに売買注文を整理し、売りと買いの価格が一致する場合や、現在価格による取
引を成立させる。 年の , L%( の大暴落以来、一定限度以上の価格変動を抑えるために、ス
トップ高、ストップ安と呼ばれる価格の範囲外の価格をつけることが出来ないようになっている。東京
証券取引所の一日の取引高は1兆円ほどで、扱う株の時価での総額は 兆円程度で一年間の N&" に
匹敵する。
為替は、取引の場所や時間が決まっておらず、銀行のディーラー同士が電話やコンピュータで、昼夜
の区別なく直接行っている。取引の単位は円・ドル交換の場合は :6I99 で、通貨の組み合わ
せごとに : の単位が決められている。世界での一日あたりの取引高は 兆円といわれていて、世
界の N&" が 兆円(一日あたり 兆円、一年の実労働日を 日とする)、一年間の貿易総量 兆円(一日あたり 兆円)とくらべてもはるかに大きい。したがって中央銀行がどんなに介入しても、
市場を完全に制御することは出来ないとされている。
為替価格発展方程式
投機的な売買が主流である場合は、ディーラーは価格変化のトレンドに敏感に反応すると考えてよい
であろう。ディーラーは価格変動のトレンドから、最近値上がりしていれば売り、値下がりしていれば
買うことになる。しかしトレンドをどう評価するかはディーラーによって違うことであり、直前の価格
変動のこだわる人もいれば、一定期間のトレンドを参考にする人もいる。市場の反応は個人のそれを反
映しつつも別に決まるマクロな変数であるが、ここでは簡単のためその係数を乱数で与えておく。時刻
,
における価格を ,! とすると、その一期前の価格 , ! より高ければ売りに動くので、, < では価
格が下がり、逆に ,! が一期前の価格より低ければ買いに動くので、その反応係数を ,! として、, < における価格は
< ! 6 ,! ,!,! , !! < ,!
,
とかけるとしてよいであろう。ここで ,! は様々な戦略を持つディーラーが参加することによって生ま
れる制御不能なランダム過程を記述する乱数である。,!
は市場価格を元に戻そうとする力であり、
乱数で決めることは、その力の大きさがその時々で異なり予測不能であることを含意している。,! が
負の値をとることを許す場合は、価格変化を拡大するように働くので、変化のトレンドが継続するよう
になる。これは価格を高値に誘導したり安値に誘導して、ころあいを計って取引に出る極めつけの投機
行動を反映したものといえる。もちろん個々にはそうした人々が存在するが、マーケットとしては健全
であるという場合には負になることはないとしてよいかもしれない。しかし幾分でもそうした傾向を取
第 章
為替相場の変動
り入れたい場合は
! 6 + !
,
として を小さな正の値にとってやれば、時々投機的な動きが表面に出ることがあるという事情を記述
できると考えてよいであろう。
! が正負のいずれをとる場合でも、もうひとつの乱数 ,! の存在のために価格変動を見定めること
は難しい。2つの乱数 ,! と ,! の絶対値の相対的な関係が結果にどのような影響を与えるかを見て
おく必要がある。
,
"-'
1) #,
# 9,#H
./ ) ) 9 %,
2, 9 73 %,
2, +,
-"'"./44" +,
-"'"./44" C 2'
+,
-"'"./44" !4"
+,
-"'"./44" !
73 ! 1)
) 9 "J
パラメータ と を変化させて、結果がどう変わるか観察せよ。
シミュレーションの結果を為替相場の実際の変動データと比べてみよ。
! 円ドル相場
:! 円ーユーロ相場
! 円ー元相場
(! その他
第 章 生存競争
モデル
海洋生物の個体数変化を研究していた +, と は、食連鎖をモデル化することによって、現
実世界をよく記述することを明らかにした。大きい魚が小さい魚を食べ、小さい魚はプランクトンを食
べるという食連鎖である。プランクトンは無尽蔵にあるけれども、大きい魚が小さい魚を食べ過ぎてし
まうと、食料不足で大きい魚は餓死し、大きい魚の数が減ってくると小さい魚の数が増加してくるとい
うぐあいに、個体数は食連鎖のもとで時間的に変動していることを示した。ここでは、プランクトンが
無尽蔵であると仮定しているので、環境が閉じているとはいえないが、自然の循環が成立している。
大きな魚の個体数を ,!、小さい魚の個体数を 3 ,! とすると、その変化を記述する方程式は
!
,
,
!
3 ,
,
6 ,! < 3 ,! ,! 6 : < 3 ,! ,!
6
3 ,! ! ! 6 :
, 3 ,
!3 ,!
,
で与えられる。
微分は
!
,
,
< :! ,!
,
6 '
:
であるが、計算機には無限小という概念がないから、: を小さい数として、微分を
!
,
,
< :! ,!
,
:
で近似することにする。ここで時間 , を : を単位として測ることにして
,
:
6 とすれば , < : 6 : < ! なので、上の方程式は
< ! ! 6
:
< ! 3 ! 6
: 3 ! < 3 ! !
3 ! ! ! 3 と書き換えられて、計算機で計算できるようになる。
生存競争
+,* モデル "-'
グラフをマクロで作成する
1) 4,-
# /
‘ 配列の定義 f:大きい魚、g:小さい魚
第 章
生存競争
./ ‘ 出力ページの指定
' ‘ 時間刻み幅
‘ 計算回数
# $ ‘ 出力回数を指定するパラメータ
‘ 係数
) ‘ 大きい魚の初期値
/ ‘ 小さい魚の初期値
+,
-"'"./44" ‘ 初期値の出力
+,
-"'"./44" / ‘ 初期値の出力
‘ 出力回数をカウントする変数
%,
2, ‘ 個体数変化を計算するループ
' / / / ' ) /
C # C $ # 2' ‘ 出力の指定
+,
-"'"./44" ‘ 結果の出力
+,
-"'"./44" / ! C
73 ‘ ループの終わり
# '
()* " '
()* ‘ 計算結果を読み取って図形の出力
+,
-"'"./ 0 ‘ 図形出力ページをアクティブにする
1 '
()* 01''
()*" & ‘ 図の位置・サイズ
+' '
()*'
'
2. 34561
1#,,'7,8
-
" ‘ グラフのタイプ
11,
+,
-"'"./9/: : ;4,34,4#"
‘ データの読み込み方の指定(列を指定している)
! +'
+,
-"'"./ 0
1 '
()* 01''
()*" +' '
()*'
'
2. 34=
11,
+,
-"'"./9/: : ;4,34,4#"
! +'
! 1)
"J
二種生態系の競争的生存競争
+,* 方程式を多種間の食連鎖に拡張することで種の多様性を記述できる。三種生態系へ拡張
して、解の振る舞いを調べよ。
二種生態系の競争的生存競争
生存競争はいつも弱肉強食とは限らない。有限の資源をめぐっておこる争いは、それぞれの環境収容
力を弱めるように働くので
< ! ! 6
: < ! 3 ! 6
: 3 ! 3 ! !
3 !
!3 !
としてよい。これは2者が共存するばあいと、一方が死滅する選択的競争の場合(競争排除の原理)を
記述する。
"J
二種生態系の解を求めよ。
をこのモデルを一般化することによって、多企業間の競争から寡占化を経て独占へのプロセスを
記述することができる。3企業システムでこの過程を示せ。
二種生態系の競争的生存競争 +,* モデルの一般化
生物個体数の変化を決定づけているものとして環境収容力を考えると、+,* モデルでは、
被食者が捕食者の環境収容力を大きくし、逆に捕食者が被食者の環境収容力を小さくしている。しかし、
現実には被食者も捕食者も個体数を増やすことによってそれ自身の環境収容力を小さくする。これは一
種生態系を考えるとはっきりする。一つの個体も増えすぎると環境収容力が小さくなり飽和してしまう。
イナゴの異常発生がイナゴ自身の生きる環境を狭めてしまうため世界を制覇することにはならない。こ
の考え方は /$ によるもので、+- 写像として知られていて、情報の伝播、消費財の普及過程、
などをよく記述できる。ここでは捕食・被食の関係に無くても互いに環境の奪い合いによって生死を決
めるモデルを考える。マーケットにおける同種商品の競争などがこの類である。共存的競争と排他的競
争を記述するパラメータ 9
9 9
9
9
の組を求めよ。捕食・被食の関係にある場合に、以下
のプログラムのどこが変わるか考察せよ。
1) ‘ プログラム名の宣言
# 3 ‘ 配列の宣言、
./ ‘ 出力ページの指定
‘ 係数の設定
K
+,
-"'"./44" ‘ 係数の出力
+,
-"'"./44" & +,
-"'"./44" 第 章
生存競争
+,
-"'"./44" +,
-"'"./44" & +,
-"'"./44" ‘ 計算回数の指定
# ‘ 出力回数の指定
3 ‘ 初期値
‘ 初期値
+,
-"'"./44" 3 ‘ 初期値の出力
+,
-"'"./44" ‘ 初期値の出力
‘ 出力行を計算するダミー変数
%,
2, ‘ 繰り返し計算 %,
文
3 3 3 3 ‘ xの計算
3 ‘ yの計算
C # C $ # 2' ‘ 出力の制御 文
‘ 出力行の計算
+,
-"'"./44" 3 ‘ 結果の出力x
+,
-"'"./44" ‘ 結果の出力y
! C ‘ 出力制御 文の終わり
73 ‘ 繰り返し計算の終わり
# '
()* " '
()* ‘ グラフの作成
+,
-"'"./ 0 ‘ 位相図
1 '
()* 01''
()*" & +' '
()*'
'
2. 34561
1#,,'7,8
-
"
11,
+,
-"'"./9/: : ;4,34,4#"
! +'
+,
-"'"./ 0 ‘ 時系列グラフ
1 '
()* 01''
()*" +' '
()*'
'
2. 34=
11,
+,
-"'"./9/: : ;4,34,4#"
! +'
! 1)
第 章 合意形成過程
選挙制度
人々の価値観は多様であり、多くの人々で構成される社会で合意を得ることは簡単ではない。合意を
得ることは社会のあるところ必ず生ずるものであり、その解決法は様々であった。占いやシャーマンな
どによって神意を得る方法、長老や王に決断を一任する方法、全員が納得いくまで話し合う方法、選ば
れた代表者による合議による方法等、時代と地域によって様々な形態がとられてきた。
現代では、社会を構成するすべての人々が満足できる合意が得られることは無いとの立場から多数決
原理が持ち込まれている。選挙制度はその典型といえよう。ここでは、選挙制度がどれだけ正確に社会
の構成員の意思を反映するものかを調べることにする。
選挙のモデル
選挙は候補者の属する政党、候補者の掲げる政策、人柄、有権者との個人的関係など様々なことが関
係している。どの項目を重視するかは有権者によって異なるし、また候補者によっても異なる。したがっ
て異なる項目ごとに比較するよりは、それぞれの候補者について、有権者が順位をつけて、その順位に
対して、いくつかの選挙方式で結果が変化するかどうかを調べることにする。
議員定数 人、有権者 人に対して、候補者が 人の選挙区で、以下の選挙方式を考える。ただ
し、棄権や白票は無いものとする。
大選挙区単記式投票方式
各有権者が一人の候補者に投票し、得票数上位3人を当選とする。
大選挙区連記式投票方式
各有権者が三人の候補者に投票し、得票数上位3人を当選とする。
小選挙区(単記式)投票方式
3つの選挙区に分け、それぞれの選挙区で有権者は1人の候補者に投票し、それぞれの選挙区で
の得票数一位を当選とする。有権者に番号をつけ、はじめの 人が小選挙区1、次の 人が小選挙区2、残りの 人が小選挙区3で投票するとし、候補者はそれぞれ二人である。
!
1) 4, ‘ プログラムの宣言
# ‘ 配列宣言 は6人の候補者の上位3人の得票数
第 章
‘ は有権者にとっての上位3人の候補者
9,#H
‘ 乱数の初期化
./ ‘ 出力ページの指定
‘ 大選挙区での有権者の数
‘ 小選挙区での有権者の数
+,
-"'"./44" :候補者: %,
2, +,
-"'"./44" ‘ 候補者番号(得票を出力するため)
73 J 大選挙区制
%,
2, %,
* 2, * ‘ 候補者の得票数の初期化
73 * 73 %,
2, * * C 9 ‘ 有権者の第1順位の候補者番号
*
, F4 * B ‘ 第3順位まで計算することを指定
C 9 ‘ 第2順位以下の候補者の選定
C EB 2' ‘ すでに選ばれていないことをチェック
C EB 2'
* * * *
! C
! C
=,,.
%,
* 2, * * * *
73 *
73 ‘ 得票数の計算
J 単記式
+,
-"'"./44" :単記式:
%,
2, 合意形成過程
"-'
+,
-"'"./44"
73 ‘ 得票数そのまま
J 連記式
+,
-"'"./44" :連記式:
%,
2, %,
* 2, * ‘ 3位までの得票をすべて加算
73 *
+,
-"'"./44" 73 J 小選挙区制
%,
2, %,
2, %,
* 2, * 73 *
73 %,
* 2, C 9 ‘ 有権者が選んだ候補者
‘ 第1位のみの計算
73 *
+,
-"'"./44" :小選挙区:
+,
-"'"./44" +,
-"'"./44" 73 ! 1)
中選挙区制単記式・連記式、小選挙区制のシミュレーションを m 回繰り返してその平均の得票数を計
算する。
1) 4,
# # 9,#H
./ 第 章
# ‘ m:シミュレーションを繰り返す回数
+,
-"'"./44" :候補者:
%,
2, +,
-"'"./44"
73 %,
2, ‘ # 回繰り返すときに得票を加えていくダミー変数の初期化
%,
* 2, * * 73 *
73 %,
- 2, # ‘ m回繰り返すループ
J 大選挙区制
%,
2, %,
* 2, * 73 *
73 %,
2, * * C 9
*
, F4 * B C
9
C EB 2'
C EB 2'
* *
* *
! C
! C
=,,.
%,
* 2, * * * *
73 *
73 %,
2, 合意形成過程
"-'
%,
* 2, * *
* ‘ 繰り返し計算での得票数の加算
73 *
73 J 小選挙区制
%,
2, %,
2, %,
* 2, * 73 *
73 %,
* 2, C
9
73 *
73 %,
2, ‘ 繰り返し計算での得票数の加算
73 73 - ‘ m回繰り返し計算のループ
J 単記式
+,
-"'"./44" :単記式:
%,
2, +,
-"'"./44" C $ #
‘ # 回の平均値の整数近似
73 J 連記式
+,
-"'"./44" :連記式:
%,
2, %,
* 2, *
73 *
+,
-"'"./44" C $ # ‘ # 回の平均値の整数近似
73 %,
2, 第 章
合意形成過程
+,
-"'"./44" :小選挙区:
+,
-"'"./44" C $ # ‘ # 回の平均値の整数近似
+,
-"'"./44" C $ # ‘ # 回の平均値の整数近似
73 ! 1)
拘束名簿ドント方式
日本の比例代表制は拘束名簿ドント方式と呼ばれるもので、各政党の得票数を1から順に整数で割り、
商の大きい順に議席を割り当てる。例えば、、、3 三つの政党が定数5の選挙区で争う場合、 党
が 票、 党が 票、3 党が 票得たとすると
党 !
!
党
!
!
3党
!
!
!
となり、 党が2議席、 党が2議席、3 党が1議席を得る。
"J
棄権や白票を考慮せよ。
上では候補者が有権者を乱数を振って選択したが、現実にみあう方法を考えよ。
第 章 母集団比率とサンプルサイズ
社会調査においては標本の調査から母集団の意見分布などを推定することになるが、その際に重要な
のが標本の取り方、その大きさである。ここでは母集団の意見分布をあらかじめ決めておいて、標本の
意見分布が母集団のそれと同じになるのに必要な標本の大きさを調べることにする。
局は互いに番組の視聴率をめぐって熾烈な戦いをしている。ここでは、夜8時―9時のゴールデ
ンタイムでの番組について、次のことを調べよう。人口5万人の都市で、テレビ番組 、 に対する全
数調査で視聴率がそれぞれ 6、6 で、残りの はまったくテレビを視聴していなかった。こ
のとき、サンプル調査によって全数調査と同様な視聴率を与えるような最小のサンプル数をシミュレー
ションで求めよう。
(1) 万人を全数調査で与えられた割合にしたがってグループ 6!、6
!、36 !(テレビを
視聴しない)に分割する。一次元配列に E、 E、 Eで順にわりふり、その後、乱数を引いてシャッ
フルし、配列の中で番組支持者がでたらめに並ぶようにする。
(2) 大きさmのサンプルを選び、サン
プルの視聴比率をもとめ、全数調査のそれと近い値を与えるmを求める。
(3) 同じことを50回繰り
返し、mの平均値を求める。
注 母集団を支持率にしたがって順番に規則正しく並べて、ランダムに選び出すのであれば、上の手
続きのようなシャッフルをすることなく、同様のmが求まるこことを示せる。
1) "#.4/
. &
. J 母集団サイズ
J 支持率
J 支持率
%,
-- 2, 44 /-- . . 73 -! 1)
J 異なる母集団
J 支持率計算サブルーティン
1) /-- . . J サブルーティン
# 3 J 母集団用配列・サンプル用配列
9,#H
J 乱数発生器の初期化
./ J 出力ページ
+,
-"'"./44"
+,
-"'"./44"
J 母集団サイズの出力
C -- 2'
A -- :母集団サイズ:
A -- 第 章
母集団比率とサンプルサイズ
%,
2, J 母集団分布の計算
9
C E . 2'
3 !4"C E . . 2'
3 !4"
3 ! C
73 !4"
%,
2, C E C . 2'
3 !4"C E C . . 2'
3 !4"
3 ! C
73 ! C
%,
2, 73 %,
2, 3 3
73 J ヒストグラム計算配列の初期化
J 母集団ヒストグラムの計算
%,
2, J 母集団ヒストグラムの出力
+,
-"'"./44" A -- +,
-"'"./44" A -- +,
-"'"./44" A -- $ J 母集団比率
73 %,
- 2, L
%,
2, 73 # - J サンプリング
J ヒストグラム計算配列の初期化
J サンプルサイズ
%,
2, #
J サンプル抽出・ヒストグラム計算
* C 9 3* 3* 73 C - 2'
+,
-"'"./44" A -- - :サンプルサイズ:
! C
+,
-"'"./44" A -- - #
%,
2, J サンプルヒストグラム出力
C - 2' +,
-"'"./44" A -- C - 2' +,
-"'"./44" A -- +,
-"'"./44" A -- - +,
-"'"./44" A -- - $ #
J サンプル比率
73 73 ! 1)
シミュレーション結果
母集団比率とサンプリング比率
母集団
標本サイズ
© Copyright 2026 Paperzz