全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3722 0
2022-04-05
拥有数据如下,变量分别代表证券代码、年份、人口数量、收入数量

* Example generated by -dataex-. To install: ssc install dataex
clear
input str12 Stkcd float year long S0101a double Numdiv
"000001" 2016  350142  2712924995.83
"000001" 2017  343994  2335175945.78
"000001" 2018  429409  2489709648.07
"000002" 2008 1056521    549760510.9
"000002" 2009 1446970   769664715.26
"000002" 2010 1117665   1099521021.8
"000002" 2011  925732  1429377328.34
"000002" 2012  748877  1979199561.24
"000002" 2013  723239  4516137256.79
"000002" 2014  496907     5524071900
"000002" 2015  272350  7948189440.72
"000002" 2016  336065  8720930080.79
"000002" 2018  243721 11811892254.63
"000002" 2019  245835 11810738747.83
"000002" 2020  385248 14522165251.25
"000006" 2007   33648     25359163.1
"000006" 2008   70323    40574660.96
"000006" 2009   65182    60861991.44
"000006" 2010   72966    45646493.58
"000006" 2011   62505     39560294.4
end
[/CODE]

想要参考陈传波老师的stata十八讲,计算企业层面这个收入变量的基尼系数。不过我想实现面板数据的计算,想要编写“gini2”命令,输出每一个年份的基尼系数。

我编写的命令如下
capture program drop gini2
program gini2
syntax varlist [if] [in] [,title(string)] //设置我们自己的命令格式
tempvar tinc tp  p w pregini2 gini2  //设定tinc tp  p w pregini2 gini2 七个变量为临时变量
marksample touse  //生成一个0/1暂元,暂元名为touse
preserve  //将内存中的数据暂封存,直到restore命令再复原
quietly{  //大括号后的命令将在后台执行,前台无显示
keep if `touse' //根据if后输入的条件得到一个子数据
sort `3' `4'
by `3' : egen `tinc'=sum(`1')  //生成总收入,将总收入数据暂存在临时变量`tinc'中
if "`2'"==""{
local 2=1
}   //如果没有人口变量,则默认为该变量为1
by `3' :egen `tp'=sum(`2')
gen `m'=`1'/`2'
sort `3' `m'
bysort `3': gen `p'= `2'/ `tinc'
bysort `3': gen `w'= `1'/ `tinc'
bysort `3'(`m'): gen `q'=sum(`1'/ `tinc')
by `3': egen `pregini2'= sum(`p' *(2*`p'-`w'))
gen `gini2'=1-`pregini2'
}
tabstat `gini2',stat(mean) by(`3')
restore
end

执行“gini2”命令后,总是报错

. gini2 Numdiv S0101a year
too few variables specified
r(102);




想请教大家,知道这是怎么回事吗?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群