1

基礎ゼミ6
PythonBiogemeによるNL，MXLのパラメータ推定
2018/5/18

福田研究室
M1 河井智弘2

本日の内容●Nested Logitモデルの概要●Pythonbiogemeを用いてNested Logitモデルの演習～NL_feedback.py，YokohamaPT_Simplified.dat～●Mixed Logitモデルの概要●Pythonbiogemeを用いたMixed Logitモデルの演習～MXL_feedback.py，YokohamaPT_Simplified.dat～

3

IIA特性の問題点を緩和したい☆選択肢のうち一部に生じた相関を何とか表現したい⇒Nested logit (NL) Model，Mixed Logit Model (MXL)を使う※選択肢間の誤差項に相関が生じやすい例
 交通手段選択(赤バス，青バス)
 経路選択(一部のリンクを共有している経路間には相関が生じやすい) 目的地選択（近い目的地どうしには相関が生じやすい）4

NL(ツリー構造の説明)ツリー構造；最初に属性ごとに分ける⇒条件付確率の考え方
効用の分散
大自動車

バス

交通機関(a)→小1ln(exp(μ𝑚 𝑉𝑚 ))μ𝑚𝑚∈𝑀
ログサム変数ネスト構造(この式では上位ネスト)から得られる効用の最大値の期待値
𝑉𝑎 =

赤バス

青バス

バスの種類(k)𝑃 𝑎, 𝑘 = 𝑃 𝑘 𝑎 𝑃 𝑎exp(μ𝑘 𝑉𝑘 )exp{μ𝑎 (𝑉𝑎 +𝑉𝑎 )}=×𝑖 exp(μ𝑘 𝑉𝑖 )𝑗 exp{μ𝑎 (𝑉𝑗 +𝑉𝑗 )}5NL(ツリー構造と効用式)
𝑈𝑅𝑒𝑑𝑏𝑢𝑠 = β𝑋𝑅𝑒𝑑𝑏𝑢𝑠 + 𝜀𝑏𝑢𝑠 +𝜀′𝑅𝑒𝑑𝑏𝑢𝑠
𝑈𝐵𝑙𝑢𝑒𝑏𝑢𝑠 = 𝛽𝑋𝐵𝑙𝑢𝑒𝑏𝑢𝑠 + 𝜀𝑏𝑢𝑠 +ε′𝐵𝑙𝑢𝑒𝑏𝑢𝑠
𝑈𝐶𝑎𝑟= β𝑋𝐶𝑎𝑟+ ε𝐶𝑎𝑟

交通機関(a)誤差項ε(IIDガンベル分布に従う)

赤バス

Σ = 𝑐𝑜𝑣 𝑈 =𝜀2𝜎𝑏𝑢𝑠
0=2𝜎𝑏𝑢𝑠00ε𝑏𝑢𝑠000++𝜎2000𝜎20ε′

青バス

バスの種類(k)

分散共分散行列Σは、
0自動車

バス

00𝜎2

6

Pythonbiogemeについて
BisonBiogeme
・標準的な離散選択モデル
・かんたん

Biogeme
PythonBiogeme
・多目的パラメータモデル
・パッケージ(モデルと尤度関数の使用など) はPythonに基づく●Pythonとの類似点♯の後はコメント文として認識され，コードには影響を及ぼさない●Biogemeとの類似点
データは.datファイル
コードは.pyファイル に変換して解析にかける7

今回使用するデータ●前回と同じく横浜市内の交通移動データ；YokohamaPT_Full_Simplified.dat<今回のネスト構造>
人力
manpower乗り物
vehicle

電車TRAIN

バス
BUS

自動車
CAR

自転車
BIKE

徒歩
WALK

8

NL(コード導入で実践)●NL_feedback.py ～ライブラリの読み込み～必須のライブラリ・biogeme…pythonbiogeme に必要なpython言語の拡張
・headers…dataの先頭行の読み込み
追加のライブラリ・nested…Nested Logit 用のライブラリ
・loglikelihood…最尤推定に必要なライブラリ・statistics…統計に使う式のライブラリ

9

NL:コードで実践●NL_feedback.py ～パラメータの設定～
例：ASC_TRAIN=Beta(‘ASC_TRAIN’ , 0 , -10 , 10 , 0)
パラメータ名

上限・下限
初期値

固定
(fixed)固定(1) or非固定(0)μ；スケールパラメータ(Nested Logitモデルにおける下位ネストの相関を表す)

10

NL:コードで実践●NL_feedback.py ～ネスト構造以外の効用式の設定～

11

NL:コードで実践●NL_feedback.py ～スケール調整～

TRAIN_TT_SCALED= DefineVariable(‘TRAIN_TT_SCALED’,TotalTimeTrain / 100)
変数定義の関数

変数名

スケール調整TT；Travel Time(旅行時間)
CO;Cost(費用;本データでは公共交通のみ)

12

NL:コードで実践●NL_feedback.py ～ネスト構造の設定～

人力
manpower乗り物
vehicle：μ

スケールパラメータ[下位ネストのスケールパラメータ]
manpowerを1とし，vehicleをμとする

１：電車
TRAIN

２：バス
BUS

3：自動車
CAR

:１

スケールパラメータ

4:自転車
BIKE

5:徒歩
WALK

13

NL:コードで実践●NL_feedback.py ～ネスト構造の設定～

Nestedモデル選択確率の対数；lognested(効用関数，avilability，nests，choice)イテレータの設定

推定変数の設定※av : 利用可能条件を表す

14

NL:コードで実践●NL_feedback.py ～統計量の算出～①②③① nullLoglikelihood(利用可能な選択肢ID，データのイテレータ)⇒ヌルログの計算
L(0) = −ln(𝐽𝑛 )𝑛② cteLoglikelihood(選択肢，実際の選択，データのイテレータ)⇒パラメータが1つ固定の場合の対数尤度
L=𝑛𝑖 ln 𝑛𝑖 − 𝑛 ln(𝑛)𝑛③ availabilitySatistics(availability,データのイテレータ)⇒選択肢が利用可能である回数の統計値

15

結果；NL_feedback.html

パラメーター1つ固定の対数尤度L(0)尤度比ρ^2など

16

結果；NL_feedback.html

パラメタ
推定値

標準偏差
σ𝑘

ASC_WALK(fixed)
に対する値

ｔ値
𝑡𝑘

p値

ロバスト推定による推定値※ロバスト推定；外れ値を取り除いてパラメータ値を推定

17

MXLの概要(赤バス青バス例)
𝑈𝑅𝑒𝑑𝑏𝑢𝑠 = β𝑋𝑅𝑒𝑑𝑏𝑢𝑠 + σ𝑏𝑢𝑠 τ𝑏𝑢𝑠 +ε′𝑅𝑒𝑑𝑏𝑢𝑠
𝑈𝐵𝑙𝑢𝑒𝑏𝑢𝑠 = β𝑋𝐵𝑙𝑢𝑒𝑏𝑢𝑠 + σ𝑏𝑢𝑠 τ𝑏𝑢𝑠 +ε′𝐵𝑙𝑢𝑒𝑏𝑢𝑠
𝑈𝐶𝑎𝑟= β𝑋𝐶𝑎𝑟+ ε′𝐶𝑎𝑟

自動車

バス

交通機関(a)赤バス

青バス

バスの種類(k)誤差項ε正規分布に従う(プロビットに類似)

IIDガンベル分布(通常のロジットと同様)

分散共分散行列Σは、
2𝜎𝑏𝑢𝑠2𝜎𝑏𝑢𝑠
0Σ = 𝑐𝑜𝑣 𝑈 =𝜀=2𝜎𝑏𝑢𝑠
2𝜎𝑏𝑢𝑠
0ε𝑏𝑢𝑠

000++𝜎2000𝜎20ε′00𝜎2

18

NL/MXLで誤差構造を扱う意義●誤差要素モデル；選択肢間の誤差相関を考慮できる(IIA特性；赤バス青バス，経路重複問題など)

これまで●ランダム係数モデル；パラメータβの確率変動を考慮できる(同じ値段でも人によって感じ方が違う；
ここから学生は貧乏だから落ちた100円玉拾うけどビルゲイツは100円玉拾う時間がもったいない⇒人によって効用への影響度も異なる など…)

19ランダム係数モデル●効用関数のパラメータβが個人nによって変化する場合
効用関数

𝑈𝑖𝑛 = 𝛽′𝑛 X𝑖𝑛 + 𝜖𝑖𝑛= (𝛽 + 𝜏𝑛 )′X𝑖𝑛 + 𝜖𝑖𝑛= 𝛽′ X𝑖𝑛 + 𝜏 ′ 𝑛 X𝑖𝑛 + 𝜖𝑖𝑛= 𝛽′ X𝑖𝑛 + 𝜂𝑖𝑛 + 𝜖𝑖𝑛

𝛽𝑛 = 𝛽 + 𝜏𝑛パラメータのバラツキ（正規分布)を表す

MXLモデルの形式になっている！

選択確率
𝑃𝑖 =
=exp 𝛽′𝑛 X𝑖𝑛
𝑗 exp 𝛽′𝑛 X 𝑗𝑛

𝑓 𝛽𝑛 Ω𝛽 𝑑𝛽𝑛

exp 𝛽′ 𝑥𝑖𝑛 + 𝜏 ′ 𝑛 𝑥𝑖𝑛′′𝑗 exp 𝛽 𝑥𝑗𝑛 + 𝜏 𝑛 𝑥𝑗𝑛

𝑓 𝜏𝑛 Ω𝜏 𝑑𝜏𝑛

20

シミュレーション法(モンテカルロ法)の一例
𝑃𝑖𝑛 =exp(β′ 𝑋𝑖𝑛 + η𝑖𝑛 )𝐿𝑖𝑛 η 𝑓 η Ω 𝑑η ，𝐿𝑖𝑛 =′𝑗 exp( β 𝑋𝑖𝑛 + η𝑖𝑛 )上記の積分を面積を用いて求める．
●2次元乱数を[3×9]の範囲に散らばらせる⇒積分したい関数より上(青丸)or下(赤丸)を判定●点の合計数は20(←青9個，赤11個)⇒関数の積分結果は
3×9×11/20＝14.85

http://bin.t.u-tokyo.ac.jp/model08/lecture/sasaki.pdfより

21

MXL：コードで実践●MXL_feedback.py～シミュレーション積分～
ランダム係数モデル(所要時間のパラメータB_TIMEが変化)

繰り返し計算σβ ；βの標準偏差シミュレーション積分

22

MXL：コードで実践●MXL_feedback.py ～プロビットモデルの挿入～

正規分布に従うランダム係数項(プロビットモデルに類似)
𝑈𝑖𝑛 = 𝛽 ′ X𝑖𝑛 + 𝜏 ′ 𝑛 X𝑖𝑛 + 𝜖𝑖𝑛
正規分布に従うIIDガンベル
分布に従う

23

MXL：コードの結果

24

参考文献
• 技報堂出版「交通行動の分析とモデリング」• 羽藤研 理論勉強会第4回

http://bin.t.u-tokyo.ac.jp/startup14/file/2-3.pdf• 羽藤研 BinN studiesシリーズ

http://bin.t.u-tokyo.ac.jp/kaken/• 夏の学校2008 「効用最大化に基づく離散選択モデルの基礎(暫定版)」 http://bin.t.u-tokyo.ac.jp/model08/lecture/kurauchi.pdf• 「パラメータ推定の実践的テクニック」
http://bin.t.u-tokyo.ac.jp/model08/lecture/sasaki.pdf• 福田先生資料(OCW-i)• Biogeme公式サイト(スイスメトロのサンプルコードを参考に)
http://biogeme.epfl.ch/examples_swissmetro.html