サンプルデータをダウンロードし、データを確認します。
交通機関での移動時間を表す変数traveltime
と待ち時間を表す変数termtime
から、合計移動時間を表す時間変数time
を作成します。
. use https://www.stata-press.com/data/r16/travel, clear
. generate time = traveltime + termtime
通機関の選択を例にデモンストレーションします。
2つの都市間の交通手段(飛行機、電車、バス、自動車)について、210人に調査を行いました。
各交通手段にかかる時間、各個人の所得、一緒に移動する人数に関する情報があります。
cmset
コマンドを使用して、選択モデルのデータであることを宣言します。
変数id
は各個人を識別し、変数mode
は交通手段の選択肢であることを指定します。
. cmset id mode
次に、被説明変数をchoice
として、選択された交通手段を示す条件付きロジスティック回帰モデルをフィットします。
共変量のうち変数time
は唯一、4つの交通手段の選択肢間で変化します。
income
とpartysize
は、選択肢ごとの値ではなく、個人(またはケース)ごとに1つの値しかないため、casevars()
オプションにリストします。
. cmclogit choice time, casevars(income partysize)
結果から、次のことが分かります。
time
の係数は負であるため、移動時間が長くなると、その交通手段を選択する確率が低くなります。
今回は飛行機を選択肢のベースとして比較しています。
「電車の場合の所得の係数が負である」ことは、所得が増加するにつれて、飛行機よりも電車を選択する可能性が低くなることを示しています。
自動車の場合の移動人数の係数は正です。
一緒に移動する人数が多くなると、飛行機よりも自動車を選択する可能性が高くなることを示しています。
上記の結果から、次のことに興味を持ったとします。
marginsコマンドを使用して、これらについて考察していきます。
フィット後にmargins
コマンドを実行すると、各交通手段を選択する平均予測確率が得られます。
. margins
このモデルと2つの都市間の移動者のランダムなサンプルに基づき、28%の人が飛行機で移動すると予想しています。
また、30%が電車で、14%がバスで、28%が自動車で移動すると予想しています。
はじめに、自動車を選択する確率に対する所得の影響を評価します。
margins
のat()
オプションを使用して、$30,000から$70,000まで$10,000刻みの所得レベルでの自動車移動の予測確率を推定します。
. margins, at(income=(30(10)70)) outcome(car)
これらの確率をプロットして、所得の影響を視覚化します。
結果から、自動車を選択する予想確率は、所得が増えるにつれて高くなります。
これらの違いが統計的に有意であるかを調べます。
所得が$10,000増えるごとに、予想される確率の違いをテストします。
margins
のcontrast()
オプションを使用して逆隣接(ar)
コントラストを求めます。
また、nowald
オプションとeffects
オプションを使用して、テスト結果の出力を簡略化します。
. margins, at(income=(30(10)70)) outcome(car) contrast(atcontrast(ar) nowald effects)
この表の一行目から、所得が$30,000から$40,000に増えると、自動車での移動を選択する確率が0.045増加することがわかります。
所得が$40,000から$50,000に増えると、自動車での移動の予想確率が0.035増加します。
これらの効果は両方とも5%の有意水準で有意です。
所得が$50,000から$60,000に、および$60,000から$70,000に増加しても、自動車での移動の確率に大きな違いはありません。
次に、電車を選択する確率に対する所得の影響を評価します。
margins
コマンドのオプションでoutcome(car)
の代わりにoutcome(train)
を使用します。
. margins, at(income=(30(10)70)) outcome(train)
これらの確率をプロットして、所得の影響を視覚化します。
. marginsplot
結果から、所得レベルが上がると、電車を選択する確率は低くなります。
逆隣接コントラストを使用して、確率の違いを再度テストします。
. margins, at(income=(30(10)70)) outcome(train) contrast(atcontrast(ar) nowald effects)
結果から、所得が$10,000増えるごとに、電車を選択する予想確率が大幅に低下することがわかりました。
対象を自動車や電車に限定せず、各交通手段の選択確率が所得によってどのように変化するかを調べる際は、次のコマンドを実行します。
ここでは出力結果は省略します。
. margins, at(income=(30(10)70))
結果をグラフ化すると次のようになります。
ここではnoci
オプションを使用して信頼区間の表示を省略します。
. marginsplot, noci
このグラフにより、各所得レベルでの交通手段の選択確率を視覚的に比較できます。
所得が増えると、交通手段としてバスや電車を選択する確率が低下し、飛行機や自動車を選択する確率が高くなります。
交通手段の選択予想確率の違いを正式にテストします。
ここでは、$30,000の所得レベルでは、4つの交通手段すべてが等しく選択される可能性があるかを調べます。
margins
コマンドでcontrast(outcomejoint)
オプションを使用します。
. margins, at(income=30) contrast(outcomejoint)
結果から、これらの予想確率の少なくとも1つは、他の確率とは大幅に異なることがわかります。
よって、$30,000の所得レベルでは、4つの交通手段すべてが等しく選択されることはありません。
さらに具体的に、所得が$50,000の場合、電車とバスの交通手段を選択する予想確率に違いがあるかを調べます。
margins
コマンドのoutcome()
オプションでこれら2つの交通手段を指定し、contrast(outcomecontrast(r))
オプションで2つの確率の差を推定します。
. margins, at(income=50) outcome(bus train) contrast(outcomecontrast(r) nowald effects)
結果から、この所得レベルではバスと電車の交通手段を選択する確率に有意差は見られません。
これまでは連続変数income
を使用しましたが、代わりにカテゴリ変数の効果を評価する場合の方法を紹介します。
はじめにxtile
コマンドを使用して、income
の四分位数を表す新規変数income_cat
を作成し、適当なラベルをつけます。
. xtile income_cat = income, nquantiles(4)
. label define quartiles 1 "Quartile 1" 2 "Quartile 2" 3 "Quartile 3" 4 "Quartile 4"
. label values income_cat quartiles
income_cat
に因子変数を示すi.
演算子をつけてモデルをフィットします。
. cmclogit choice time, casevars(i.income_cat partysize)
次のコマンドを実行して、所得の四分位数ごとに交通手段として電車を選択する予想確率を推定します。
. margins income_cat, outcome(train)
結果をグラフ化します。
. marginsplot
ar.
演算子を使用して、隣接する所得の四分位数間で予想される確率の違いをテストします。
. margins ar.income_cat, outcome(train) contrast(nowald effects)
交通手段として電車を選択する予想確率は、第1所得四分位から第2所得四分位に移動するときに大幅に変化することがわかります。
これまで、交通手段の選択における所得の影響を検討してきましたが、選択肢固有の変数である移動時間についても検討することができます。
空港での待ち時間が全てのフライトで60分増加すると、交通手段の選択はどのように変化するかを調べます。
次のコマンドを実行します。
marginsのat()
オプションを使用します。
. margins, at(time=generate(time+60)) alternative(air)
元の飛行機の選択予想確率は28%でした。
今回は24%で、移動時間が長くなると飛行機を選択する確率が低くなっています。
次のコマンドを実行すると、元の移動時間と、飛行機での移動時間が60分増加した場合の両方を一度に推定できます。
. margins, at(time=generate(time)) at(time=generate(time+60))
. alternative(air)
#1
がついているものが元の移動時間、#2
がついているものが飛行機での移動時間が60分増加した場合です。
結果をグラフ化します。
X軸に各選択肢を配置するxdimension()
オプションを使用します。
. marginsplot, xdimension(_outcome)
飛行機の選択確率が減少したのに対し、他の交通手段の選択確率はやや増加しています。
これらの差が統計的に有意であるかを調べます。
margins
のcontrast(atcontrast(r))
オプションを使用して、元の移動時間との比較を行います。
. margins, at(time=generate(time)) at(time=generate(time+60)) alternative(air) contrast(atcontrast(r) nowald effects)
結果から、これらの差は全て統計的に有意です。
飛行機の選択予想確率は3.8%ポイント減少しています。
さらに発展させて、「飛行機の移動時間が60分増加すると同時に、電車の移動時間が60分減少した場合、各交通手段の選択の確率にどのように影響するか」を調べます。
変数time
を複製して新規変数newtime
を作成します。
飛行機(mode==1
)の移動時間を60分増加、電車(mode==2
)の移動時間を60分減少させます。
. generate newtime = time
. replace newtime = time+60 if mode==1
. replace newtime = time-60 if mode==2
newtime
を使用してmargins
を実行します。
飛行機と電車の移動時間の変化が同時に発生することを指定するために、alternative(simultaneous)
オプションを使用します。
. margins, at(time=generate(time)) at(time=generate(newtime)) alternative(simultaneous)
結果をグラフ化します。
. marginsplot, xdimension(_outcome)
結果から、飛行機の選択予想確率は減少し、電車の選択予想確率は増加しました。
他の交通手段の選択予想確率にはあまり変化がありません。
これらの差が統計的に有意であるかを調べます。
. wmargins, at(time=generate(time)) at(time=generate(newtime))
. alternative(simultaneous) contrast(atcontrast(r) nowald effects)
結果から、飛行機および電車の差は統計的に有意です。
飛行機の選択予想確率は元の移動時間より5.2%ポイント減少しています。
電車の選択予想確率は元の移動時間より5.7%ポイント増加しています。
Stata is a registered trademark of StataCorp LLC, College Station, TX, USA, and the Stata logo is used with the permission of StataCorp.