全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3103 4
2018-11-28
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

 马上下载

这是相应的数据

二维码

扫码加我 拉你入群

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

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

全部回复
2018-11-28 19:26:06
顶一下
二维码

扫码加我 拉你入群

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

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

2018-11-28 19:51:58
已经试了无数遍,还是不行,就是不知道哪儿出了问题,求大神给分析下
二维码

扫码加我 拉你入群

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

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

2018-11-28 20:05:03
二维码

扫码加我 拉你入群

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

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

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

 马上下载

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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