具体的な例で示すと以下のとおり。
このとき、データの構造は、第一列に光ファイバの選択肢、第二列にADSLの選択肢、第三列にケーブルインターネットの選択肢に関係するデータが入ることとなる。
またここでは2つのダミー変数が所与の選択肢を示すために使われる。例えば、光ファイバダミー変数は光ファイバについての選択情報が含まれる第一列に入り、そこが「1」、その他の列では「0」となる。ADSLダミーは、ADSLについての選択情報が含まれる第二列に入り、そこが「1」、その他の列では「0」となる。
さらに実際に選択されたモードを表す変数(choice)が作られる。それは選択したモードの列に「1」が入り、他は「0」となるものである。またmodeという変数により各選択肢を表す。ここでは「1」は光ファイバ、「2」はADSL、「3」はケーブルインターネット。
グループを特定するためにグループ変数が必要となる(ここではid)。ブロードバンドユーザは1ユーザ(グループ)につき、3つの列で構成される。一つのグループが一つのcaseということになる。
ここではalternative-specificな変数(AS変数)は、速度と価格。これらは選択肢とグループによって変わる変数である(疑問:選択されない選択肢の速度と価格は、平均値や最大値を入れている。それでASになっているのであろうか)。
実はこのAS変数を考慮し、ケースごとにデータセットを作成するのにいつも苦労していた。それはエクセルにしろ、Stata等の統計ソフトにしろ、横に変数を増やすのは簡単なのだが、今回の場合だと各ケース分のデータを増やすのは簡単には出来ない。
今までは以下のようにしていた(エクセルでやるのもStataでやるのも手順は同じ)。
- オリジナルのデータセットをケース分コピーする(今回の場合は光ファイバ、ADSL、ケーブルインターネットだから3つ)。オリジナルのデータセットはとっておく。
- 各データセットに関して、AS変数に該当するデータを入れる。例えば、光ファイバのファイルでは速度変数のところに100M、ADSLなら50M、ケーブルインターネットなら30Mという具合。価格も同じように入れる。その他のAS変数も同様にする。
- モード変数やダミー変数も各ファイルごとに作る。
- そのファイルをappendコマンドで合成する。
- ケース変数であるcaseと選択肢を表すmode変数でソートする。
これで分析用のデータセットが出来上がる。
ところがStataではそれを一発コマンド(case2alt)で処理してくれる・・・便利だ。
case2altを使うときはオリジナルのデータセットにAS変数を選択肢ごとの変数として作成しておく必要がある。例えば、速度なら、「速度1」変数は光ファイバ用で100M、「速度2」変数はADSL用で50M、「速度3」変数はケーブルインターネット用で30Mという具合。変数名「速度」のあとの数字は、modeの数字に対応する。この数字から各ケースのデータとして割り当てる。またchoice変数はこの場合は、0,1ではなく、選択肢したケースの番号が入る。
case2altのsintaxは次のとおり。
.case2alt, {choice(varname) | rank(subname)} [alt(subnames) casevars(varlist) case(varname) replace altnum(varname) nonames]
各オプションは次のとおり。
choice(varname),rank(varname):必須。ランキングがないデータの場合は、choice()で選択された選択肢の値を特定。今回、rankは関係ないので無視。
atl(stubnames):これでAS変数を特定する。
casevars(varlist):CS変数を特定。ここにid変数等を含んではいけない。
case(varname):ケースを特定する変数を指定。ここではid。
generate(newvar),replece:選択された選択肢を特定する変数を作成ないし再構成する。今回はchoiceがあるのでOK。
その他は省略。
詳しくは下記文献の296ページを参照のこと。
case-specific変数をどのように考慮するかは後ほど^^
Regression Models for Categorical Dependent Variables Using Stata, Second Edition
- 作者:Long, J. Scott,Freese, Jeremy
- 発売日: 2005/11/15
- メディア: ペーパーバック