Traffine I/O

日本語

2022-12-29

混合ロジットモデル

混合ロジットモデルとは

混合ロジットモデルは、個人の選択行動における観測されていない異質性を捉えるための柔軟性を持ち、ランダムパラメータロジットモデルやランダム係数ロジットモデルとも呼ばれます。

ランダム係数

従来のロジットモデルでは、説明変数の効果が選択確率に与える影響を表す係数は人口全体において一定であると仮定されています。しかしながら、この仮定は制限的であり、異なる個人が選択肢の属性に対する感度が異なる可能性を許容しません。

混合ロジットモデルは、これらの係数をランダム変数として扱うことで、人口全体の好みのバラつきを捉えることができます。よく使われる分布には、正規分布、対数正規分布、一様分布があります。これらの分布は、理論的な考慮に基づいて選択することができますが、モデルの比較や検証に基づいて選択することもできます。

誤差成分

誤差成分は、混合ロジットモデルにおける観測されていない異質性の追加要因を表します。これらは、未測定の製品特性や個人の好みなど、選択肢の効用に系統的に影響を与える未観測の要因と考えることができます。誤差成分をモデルに含めることにより、選択肢間の相関を考慮し、個人の選択行動の類似性を捉えることができます。

誤差成分は、捉えたい相関のタイプや文脈によって様々な方法で指定することができます。例えば、同じグループやカテゴリーに属する選択肢に対して共通の誤差成分を含めることができます。また、誤差成分を相関ランダム変数としてモデル化して、選択肢間の相関構造を捉えることもできます。

混合ロジットモデルのメリット

混合ロジットモデルは、従来のロジットモデルに比べ、以下のようなメリットを持っています。

  • 観測されていない好みの異質性を考慮することができ、個人の好みや選択行動をより正確に表現することができる
  • 選択肢間の相関を捉えることができ、より現実的な選択肢の代替パターンをモデル化することができる
  • 関数形において柔軟であり、広範な効用仕様を収容することができる
  • 多くの選択モデルの応用において一般的な、パネルデータや繰り返し選択などの問題に対してより適している

混合ロジットモデルの実践的な応用

混合ロジットモデルは、観測されていない好みの異質性を考慮し、選択肢間の相関を捉えることができるため、様々な分野で広く使用されています。以下は、混合ロジットモデルのもっとも一般的な応用例をいくつか紹介し、実践的な価値と問題解決の汎用性を示します。

マーケットリサーチと消費者の選択分析

マーケットリサーチでは、混合ロジットモデルを使用して、異なる製品やサービスに対する消費者の好みを理解し予測することがあります。ランダム係数や誤差成分を組み込むことで、これらのモデルは個人の好みの変動を捉え、選択行動に影響を与える観測されていない要因を考慮することができます。このドメインにおけるアプリケーションには、以下が含まれます。

  • ブランド選択モデリング
    製品の属性、マーケティングミックスの変数、および消費者の特性が、ブランドの選好に与える影響を推定する

  • 共同分析
    複数の属性を持つ製品の中から選択する場合に、消費者がどのようなトレードオフを行うかを分析する

  • 新製品デザイン
    消費者の満足度と市場シェアを最大化するための最適な製品の特徴や価格戦略を特定する

交通計画と政策分析

交通計画では、混合ロジットモデルを使用して、個人の旅行行動をモデル化し、政策決定に役立てることがあります。これらのモデルは、旅行時間、費用、モード属性などの様々な要因が旅行モードの選択や経路選択にどのように影響するかを理解するのに役立ちます。交通計画における一部の応用例には、以下があります。

  • モード選択モデリング
    自動車、バス、電車などの異なる交通手段を選択する確率を推定する

  • 経路選択モデリング
    旅行時間、渋滞、その他の経路特性に基づいて、旅行者が特定の経路やパスを選択する確率を予測する

  • 政策評価
    混雑料金や交通費補助などの交通政策が、旅行行動や交通手段の選択に与える影響を評価する

ヘルスエコノミクスと医療決定分析

ヘルスエコノミクスでは、混合ロジットモデルを使用して、医療サービス、保険プラン、治療オプションなどの個人の好みを分析することがあります。これらのモデルは好みの異質性を収容することができ、健康に関する選択を促進する要因を洞察することができます。ヘルスエコノミクスにおける応用例には、以下が含まれます。

  • 医療需要モデリング
    健康ケアプロバイダーやサービスの選択に価格、品質、アクセシビリティがどのように影響するかを推定する

  • 健康保険選択モデリング
    異なる保険プランやカバー範囲の選好を分析する

  • 患者の意思決定
    リスク、有効性、副作用などの要因に基づいて、医療処置や介入を選択する際に患者が行うトレードオフを理解する

混合ロジットモデルのTrainデータセットによる実装

この章では、mlogitパッケージのTrainデータセットを使用して混合ロジットモデルを実装します。

データの準備

まず、mlogitライブラリとTrainデータセットを読み込む必要があります。

r
library("mlogit")
data("Train", package = "mlogit")

choiceid変数の作成、pricetimeの再スケーリング、およびmlogitに適した形式にデータセットを変換することにより、データを準備します。

r
# Create a new variable choiceid in the Train dataset.
# The choiceid variable assigns a unique identifier
# (running from 1 to the number of rows in the Train dataset) to each observation.
Train$choiceid <- 1:nrow(Train)

# Reshape the dataset to long format and convert to mlogit format
Tr <- dfidx(Train, choice = "choice", varying = 4:11, sep = "_",
            opposite = c("price", "comfort", "time", "change"),
            idx = list(c("choiceid", "id")), idnames = c("chid", "alt"))

# Rescale price to Euro and time to hours
Tr$price <- Tr$price / 100 * 2.20371
Tr$time <- Tr$time / 60

混合ロジットモデルの推定

次に、pricetimechange、およびcomfortの4つの変数を使用して、混合ロジットモデルを推定します。個人特有の好みの異質性を考慮して、timechange、およびcomfortのランダム係数を含めます。式は次のように記述できます。

r
choice ~ price + time + change + comfort | - 1

|の前の部分は系統的効用成分を表し、|の後の-1はモデルに選択肢ごとの定数がないことを示します。

モデル式が指定されたら、mlogit()関数を使用して混合ロジットモデルをfitさせます。いくつかの引数を関数に指定する必要があります。

  • formula: 先に指定されたモデル式
  • data: mlogit形式の準備されたTrainデータセット(Tr
  • panel: データのパネル構造を考慮するにはTRUEに設定
  • rpar: ランダム係数の分布を指定するベクトル(今回は、timechange、およびcomfortに対して正規分布"n"を使用)
  • R: ランダム係数をシミュレーションするためのHaltonドロー数(今回は100ドロー)
  • correlation: ランダム係数間の相関がないと仮定するためにFALSEに設定
  • halton: デフォルトのHaltonシーケンスを使用するためにNAに設定
  • method: Berndt、Hall、Hall、およびHausman最適化アルゴリズムを使用

混合ロジットモデルをFitさせるためのコードは以下のとおりです。

r
Train.mxlu <- mlogit(
  choice ~ price + time + change + comfort | - 1,
  Tr,
  panel = TRUE,
  rpar = c(time = "n", change = "n", comfort = "n"),
  R = 100,
  correlation = FALSE,
  halton = NA,
  method = "bhhh"
)

結果の解釈

推定の結果を解釈します。

summary(Train.mxlu)
Call:
mlogit(formula = choice ~ price + time + change + comfort | -1,
    data = Tr, rpar = c(time = "n", change = "n", comfort = "n"),
    R = 100, correlation = FALSE, halton = NA, panel = TRUE,
    method = "bhhh")

Frequencies of alternatives:choice
      A       B
0.50324 0.49676

bhhh method
44 iterations, 0h:0m:6s
g'(-H)^-1g = 8.58E-07
gradient close to zero

Coefficients :
            Estimate Std. Error z-value  Pr(>|z|)
price      0.1373518  0.0061272 22.4166 < 2.2e-16 ***
time       4.3084957  0.2917274 14.7689 < 2.2e-16 ***
change     0.8879947  0.0956106  9.2876 < 2.2e-16 ***
comfort    2.4534514  0.1428630 17.1735 < 2.2e-16 ***
sd.time    4.9079488  0.3624716 13.5402 < 2.2e-16 ***
sd.change  1.6382549  0.1367053 11.9838 < 2.2e-16 ***
sd.comfort 2.4009629  0.1580942 15.1869 < 2.2e-16 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Log-Likelihood: -1551.4

random coefficients
        Min.    1st Qu.    Median      Mean  3rd Qu. Max.
time    -Inf  0.9981346 4.3084957 4.3084957 7.618857  Inf
change  -Inf -0.2169914 0.8879947 0.8879947 1.992981  Inf
comfort -Inf  0.8340265 2.4534514 2.4534514 4.072876  Inf

出力には、各変数の推定された係数、標準誤差、z値、およびp値が示されます。全ての変数が0.001の有意水準で統計的に有意です。timechange、およびcomfortの正の係数は、乗客がより短い旅行時間、より少ない乗り換え、およびより快適な列車を好むことを示しています。

priceについて、直感的には、係数は負の値になっているべきですが、推定された係数はわずかに正の値となっています。

timechange、およびcomfortのランダム係数(標準偏差)も統計的に有意であり、これらの変数に対する好みが個人によって異なることを示しています。

支払意思額(WTP)

支払意思額(WTP)は、特定の属性に乗客がどれだけの金銭的価値を置くかを示す重要な概念であり、離散選択モデルでは重要です。timechange、およびcomfortのWTPを計算するには、それぞれの係数をpriceの係数で割ります。

r
coef(Train.mxlu)[2:4] / coef(Train.mxlu)[1]
     time    change   comfort
31.368325  6.465112 17.862536

WTP値は、timechange、およびcomfortの属性に乗客が置く金銭的価値の推定値を提供します。

  • Time
    乗客は、旅行時間を1単位(例えば、1時間)短縮するために約31.37単位のWTPがあります。この値は、列車選択における旅行時間の重要性を示しています。

  • Change
    乗客は、乗り換えの回数を1回減らすために約6.47単位のWTPがあります。これは、乗客が直行列車を好み、それに対してより多く支払うことができることを示しています。

  • Comfort
    乗客は、快適性を1単位向上させるために約17.86単位のWTPがあります。この値は、列車を選択する際に乗客が快適さを重視し、より快適な列車にプレミアムを支払う傾向にあることを示しています。

参考

https://cran.r-project.org/web/packages/mlogit/vignettes/c5.mxl.html

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!