2016-09-21 81 views
0

當在Stata中使用logit後的邊際效應時,爲什麼我得到不同的結果取決於我如何指定因子變量。因子變量的邊際效應

例如

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將計算相對於基準值的離散差異。以下是關於邊緣命令的討論,可能會進一步闡明。 http://www3.nd.edu/~rwilliam/stats/Margins01.pdf另請參閱_Stata參考手冊的邊距的完整文檔_ PDF – 2016-09-21 19:59:35

回答

1

下面是塔塔是罩下做的(雙關語意):

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.前綴,塔塔計算的費用高概率的變化是在國外,有一個小變化。您可以通過將continuous選項添加到margins, dydx()而不是擬合第二個模型來模仿。 Stata計算每次觀測對於外國來說昂貴的預測概率的導數,然後取平均值。這不太合理,因爲它不符合合理的操作。外國是二元的,但是衍生物給你的外部一個小的變化的可能性的變化,就好像它是連續的。在線性模型中,這種差異並不重要,但在非線性模型中它可以。

Stata用前綴i.計算預測概率之間的有限差異,好像每輛車都是外國減去預測概率,好像每輛汽車是在國內製造的,然後取平均值。這對於二元變量來說可以說更加明智。另一方面,這裏的差異(以及在許多經驗性應用中)並不那麼大,而且你經常看到人們做的是前者而不是後者。

+0

太好了。非常感謝! – StephenB