2016-09-21 11 views
0

ファクタ変数をどのように指定するかによって、結果が異なるのはなぜですか。例ファクタ変数の限界効果

sysuse auto 
    gen expensive=0 
    replace expensive=1 if price>=4000 
    qui logit expensive i.foreign 
    margins, dydx(foreign) 

    qui logit expensive foreign 
    margins, dydx(foreign) 

私は、そのうちの一つは、外国に対する限界効果を取っていることを取得し、1.foreignに関して他の場合

。私はなぜこれが起こっているのか分かりません、私の前任者はこれらが同じことであったでしょう。

ご協力いただければ幸いです。最も重要なのは、どちらが正しいか?ここで

+3

因子変数の場合、余白は変数が連続していないことを認識します。したがって、dydxは正しく理解すれば、基本値に対する離散差を計算します。さらなる光を放つかもしれないmargininsコマンドの議論がここにあります。 http://www3.nd.edu/~rwilliam/stats/Margins01.pdf _StataリファレンスManual_ PDF –

答えて

1

は(しゃれが意図した)のStataはフードの下でやっているものです。

sysuse auto, clear 
gen expensive=0 
replace expensive=1 if price>=4000 
logit expensive i.foreign, coefl 
predict phat, pr 

/* Change in Pr(Expensive) for a tiny change in foreign */ 
margins, dydx(foreign) continuous // this is like your second spec 
gen double me_foreign = phat*(1-phat)*_b[1.foreign] 
sum me_foreign 

/* Discrete change in Pr(Expensive) for when foreign goes from all 1 to all 0 */ 
margins, dydx(foreign) 
replace foreign=1 
predict phat1, pr 
replace foreign=0 
predict phat0, pr 
gen double fd_foreign = phat1 - phat0 
sum fd_foreign 

あなたがi.接頭辞を省略した場合、外国での中の小さな変更があったされたとして、Stataのが高価であることの確率の変化を算出し、 。あなたは、continuousオプションをmargins, dydx()に追加することで、2番目のモデルをフィッティングする代わりに、それを真似することができます。 Stataは、観測ごとに外国に対して高価であると予想される確率の導関数を計算し、平均をとる。これは合理的な操作に対応していないため、意味をなさない。外国語はバイナリですが、その派生語は、連続しているかのように、外国語の小さな変化の確率の変化をあなたに与えます。線形モデルでは、この差は重要ではありませんが、非線形モデルでは差があります。

プレフィックスi.で、Stataは、すべての車が外貨であるかのように予測された確率と、すべての車が国内で製造されたかのように予測された確率との間の有限差分を計算し、バイナリ変数ではこれはおそらくもっと賢明です。一方で、ここでの(そして多くの経験的なアプリケーションでの)違いはそれほど大きくなく、人々は後者の代わりに前者をすることがよくあります。

+0

のマージンに関する詳細なドキュメントもご覧ください。これは本当にありがとう! – StephenB