STATA 程序更健壮 适应多种调用写法 更灵活
capture program drop ginid program ginid syntax varlist [if] [in] [,title(string)] //设定我们自己的命令格式 tempvar tinc tp m gini //设定 tinc tp m gini 四个变量为临时变量 marksample touse //生成一个 0/1 暂元,暂元名为 touse preserve //将当前内存中数据暂封存,直到 restore 命令再复原 quietly { //大括号内的命令将在后台执行,前台无显示 keep if `touse' //根据 if 后输入的条件得到一个子数据 egen `tinc'=sum(`1') //生成总收入,将总收入数据暂存在临时变量'tinc'中 if "`2'"=="" { local 2=1 } //如果没有人口变量,则默认为该变量为 1 egen `tp'=sum(`2') gen `m'=`1'/`2' sort `m' gen `gini'=1-sum(`2'/`tp'*(2*sum(`1'/`tinc')-`1'/`tinc')) } display as result "`title'基尼系数为:" as error `gini'[_N] //显示基尼系数 restore end sysuse auto,clear ginid rep78 mpg ginid rep78 ginid rep78 mpg if mpg>20 ginid rep78 mpg if mpg>20 in 1/50
sysuse auto,clear
(1978 automobile data)
. ginid rep78 mpg
基尼系数为:.17245194
. ginid rep78
基尼系数为:.155535
. ginid rep78 mpg if mpg>20
基尼系数为:.12831196
. ginid rep78 mpg if mpg>20 in 1/50
基尼系数为:.15851207