跳到內容

Stata/Tobit 和選擇模型

來自華夏公益教科書


我們觀察到 x 的完整邊際分佈,但我們只觀察到 y 在給定閾值以上或以下的分佈。

clear
set obs 1000
gen u = invnorm(uniform())
gen x = invnorm(uniform())
gen y = x + u
su
replace y=0 if y < 0
su 
hist y 
#delimit ; 
tw (sc y x, m(Oh) msize(small) ) 
	(sc ycens x , m(Oh) msize(small) )
	(lfit y x, lw(thick)) 
	(lfit ycens x, lw(thick)) ; 
#delimit cr

估計

eststo clear 
eststo : reg y x
eststo : tobit y x , ll(0) 
esttab , se

我們也可以有一個雙限 tobit 模型

*** Data Generating Process ***
clear
set obs 1000
gen u = invnorm(uniform())
gen x = invnorm(uniform())
gen y = x + u
su
replace y=-2 if y < -2
replace y=2 if y > 2
su 
hist y 
*** Estimation ***
eststo clear 
eststo : reg y x
eststo : tobit y x , ll(-2) ul(2)
esttab , se

我們只觀察到 x 和 y 的分佈,如果 y 在給定閾值以上或以下。


clear
set obs 1000
gen u = invnorm(uniform())
gen x = invnorm(uniform())
gen y = x + u 
replace y = . if y > 0 /* drop some observations*/
eststo clear 
eststo : reg y x
eststo : truncreg y x , ul(0)
esttab , se

選擇模型

[編輯 | 編輯原始碼]

heckman估計 Heckman 選擇模型。

clear
set obs 1000
gen u = invnormal(uniform())
gen v = 1 + u + invnormal(uniform())
gen x = invnormal(uniform())
gen z = invnormal(uniform())
gen d = (1 + x + z + v > 0)
gen ystar = 1 + x + u 
gen y = ystar if d
heckman y x, select(d = z x)
test x = 1
華夏公益教科書