跳到内容

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
华夏公益教科书