楼主: 一只迅速
11467 10

[编程问题求助] stata想要设置自己的命令,但是报错too few variables specified [推广有奖]

  • 0关注
  • 0粉丝

高中生

5%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
69 点
帖子
4
精华
0
在线时间
40 小时
注册时间
2022-4-6
最后登录
2025-2-1

楼主
一只迅速 发表于 2022-4-6 09:27:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
拥有数据如下,变量分别代表证券代码、年份、人口数量、收入数量

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);




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

二维码

扫码加我 拉你入群

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

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

关键词:Variables specified Variable Stata ABLE SYNTAX

沙发
jnutt 学生认证  发表于 2022-4-7 20:23:21
这里为啥要用数字命名变量

藤椅
zdlspace 学生认证  发表于 2022-4-7 21:01:33
你输入的变量只有三个,但编写gini2时,sort 3 4,此时根本没有第四个变量,所以会提示变量输入少了,至少得有4个。

板凳
一只迅速 发表于 2022-4-9 15:48:44
jnutt 发表于 2022-4-7 20:23
这里为啥要用数字命名变量
参考了陈传波老师stata十八讲中的基尼系数创建案例,他用了数字1和数字2

报纸
一只迅速 发表于 2022-4-9 15:56:36
zdlspace 发表于 2022-4-7 21:01
你输入的变量只有三个,但编写gini2时,sort 3 4,此时根本没有第四个变量,所以会提示变量输入少了,至少 ...
谢谢您的回复,我把`4'删掉了,还是这样

地板
小白来学习 学生认证  发表于 2023-3-14 13:41:27
你好~请问问题解决了吗?求请教

7
dzj331 发表于 2023-4-4 16:27:05 来自手机
小白来学习 发表于 2023-3-14 13:41
你好~请问问题解决了吗?求请教
请问解决了吗,求指教

8
LQB1994 学生认证  发表于 2023-5-5 02:57:03
今天也遇到了这个问题,探究了一下,来回答一波。应该是你调用了两次临时变量或者是临时变量的定义和使用被其他代码隔开了。根据官方文档,临时变量是局部宏,对于局部宏,个人的经验是,定义和使用必须同时(一次性)运行,否则就报错。可以再仔细检查一下代码。

9
古你古怪 发表于 2023-6-10 12:05:26
LQB1994 发表于 2023-5-5 02:57
今天也遇到了这个问题,探究了一下,来回答一波。应该是你调用了两次临时变量或者是临时变量的定义和使用被 ...
你好,我也在写基尼系数的命令,但是报错,请问能帮忙看一下吗?可有偿

10
古你古怪 发表于 2023-6-10 12:06:15
LQB1994 发表于 2023-5-5 02:57
今天也遇到了这个问题,探究了一下,来回答一波。应该是你调用了两次临时变量或者是临时变量的定义和使用被 ...
略急,球球了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-2 14:44