楼主: motonigh
2732 4

[一般统计问题] 新人求助,做循环出现invalid syntax!!!! [推广有奖]

  • 0关注
  • 0粉丝

高中生

85%

还不是VIP/贵宾

-

威望
0
论坛币
2126 个
通用积分
0.8480
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
162 点
帖子
5
精华
0
在线时间
71 小时
注册时间
2018-11-21
最后登录
2023-11-22

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
sum year
local yearnum=r(max)
***给行业进行连续编号且获取行业编号的最大值和最小值,方便下面的循环
egen indid = group(ind)
sum indid
local indnum1=r(min)
local indnum2=r(max)
***添加变量tfp,方便全要素生产率的值保存在变量tfp
gen tfp=.
***对行业和年份进行循环
tabulate indid
return list
forval indid = `indnum1'(1)`indnum2'{
disp `indid'
***确保每个年份和每个年份至少有20个样本,避免回归时样本太少
count if year == `year' & indid==`indid'{
if r(N)<20{
continue
}
***按照同行业和同年份进行回归分析
regress lnincome lnstaff lnasset lncash if year == `year' & indid==`indid'
***计算残差值
predict temp if year == `year' & indid ==`indid', residual
***把计算好的残差值保存在变量tfp
replace tfp=temp if year == `year' & indid ==`indid'
drop temp
}
}


我今天上午不知道怎么成功了一次,可中午用新的数据跑就不行了,用原来的数据也不行,求大神给萌新解答。。。

二维码

扫码加我 拉你入群

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

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

关键词:全要素生产率 全要素生产 要素生产率 最小值 全要素

financial.dta

4.14 MB

这是相应的数据

沙发
motonigh 发表于 2018-11-28 19:26:06 |只看作者 |坛友微信交流群
顶一下

使用道具

藤椅
motonigh 发表于 2018-11-28 19:51:58 |只看作者 |坛友微信交流群
已经试了无数遍,还是不行,就是不知道哪儿出了问题,求大神给分析下

使用道具

板凳
motonigh 发表于 2018-11-28 20:05:03 |只看作者 |坛友微信交流群

使用道具

报纸
GeishaG1 学生认证  发表于 2021-5-14 11:18:13 |只看作者 |坛友微信交流群
虽然当事人大概来不及用了,但是我自己试着解决了问题。分享答案是为了希望别人不用像我一样头疼的调整代码。
原网站的代码是错误的,if的嵌套缺失了。部分行发生了错位。
http://www.360doc.com/content/17/1206/18/49194803_710565146.shtml
*** ind_id为行业细分比如 首字母SQP之类的
egen indid = group(ind_id)
***设定暂元
sum year
local yearnum2 = r(max)
local yearnum1 = r(min)
sum indid
local indnum1 = r(min)
local indnum2 = r(max)
***生成TFP变量空值
gen TFP =.
***此为循环公式,注意空格
***命令格式是year forval里嵌套一个ind forval再嵌套一个if三层,注意对齐。

forval year = `yearnum1'(1)`yearnum2'{
***第二行命令在开头插入一个tab
        forval indid = `indnum1'(1)`indnum2'{
***第三行命令在开头插入两个tab 后续命令均插入两个tab
                count if year == `year' & indid==`indid'
                ***计算要求各行业当年至少20个观测值,使用者也可以根据需要自行调节(可能造成较多的样本缺失,在回归时要注意)
                if r(N) > 20{
                regress  lnS lnL lnK lnM  if year == `year' & indid==`indid'  
***这里 lnS为总销售额对数 lnL为员工数对数 lnK为总资产对数 lnM为现金流量表中用于获取物资和劳务的现金流支出,仅供参考。
***if条件满足计算残差值
                predict temp if year == `year' & indid ==`indid', residual

***把计算好的残差值保存在变量tfp

                replace TFP=temp if year == `year' & indid ==`indid'
                drop temp
                continue
                }
***上一行命令空格仍为开头两个tab,下一行命令开头一个tab
        }
***下一行命令开头无需空格,命令结束。
}
*** TFP_G为循环按行业和年份分组回归的结果
rename TFP TFP_G

命令.txt

930 Bytes

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 01:04