楼主: zxc2000
582 2

[统计软件] 盈余管理生成变量报错 [推广有奖]

  • 0关注
  • 0粉丝

高中生

37%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0082
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
299 点
帖子
6
精华
0
在线时间
58 小时
注册时间
2024-12-26
最后登录
2025-7-23

楼主
zxc2000 发表于 2024-12-26 23:10:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
代码如下:
clonevar A  = a001000000         // 总资产
clonevar EBXI  = b001300000      // 营业利润
clonevar cfo = c001000000        // 经营活动现金流净额

gen acc = (EBXI - cfo)/L.A       // 总应计项目,y
gen invA  = 1/L.A                // 滞后一期的总资产的倒数, x1
gen Dsale = D.b001101000/L.A     // 营业收入的增量, x2
gen PPE   = a001212000/L.A       // 固定资产净额/总资产, x3


* 生成行业+年份变量,方便回归

egen IndustryCode_year = group(IndustryCode year), label lname(sic_year) // IndustryCode 为行业分类,year为年度时间标识

* 利用循环求残差,残差即为应计盈余管理DACC

gen DACC = .
     forvalues i = 1/3551{
       cap qui reg acc invA Dsale PPE if (IndustCode_year==`i'), nocons
       cap qui predict e if e(sample), res
       cap qui replace DACC = e if e(sample)
       drop e
     }

小白求教为什么会报variable e not found?
二维码

扫码加我 拉你入群

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

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

关键词:生成变量 盈余管理 forvalues Industry Variable

沙发
赵安豆 发表于 2024-12-26 23:11:53
在你提供的代码中,看起来你是想计算和回归分析一些财务比率以识别盈余管理。你的代码中主要的问题是在 `forvalues` 循环部分没有给出完整的命令或逻辑。我将帮助你修正这段代码,并解释如何正确地使用循环来生成残差(即应计盈余管理 DACC)。

首先,确保所有变量都已经定义并且数据集已经加载到 Stata 中。你的前几行代码看起来是正确的:你创建了几个财务比率和一些用于回归的变量。

然后,在尝试执行循环之前,请确定 `IndustryCode` 和 `year` 变量已经定义,并且它们正确地表示行业分类和年份。你的 `egen` 命令生成了一个新的变量 `IndustryCode_year`,这是基于行业代码和年度组合的。这将用于分组数据以便进行回归。

接下来,你想要使用一个循环来对每个观察点计算残差(DACC)。但是,在你的代码中,`forvalues` 循环没有完成。这里是一个修正后的代码示例:

```stata
* 生成行业+年份变量,方便回归

egen IndustryCode_year = group(IndustryCode year), label lname(sic_year) // IndustryCode 为行业分类,year为年度时间标识

// 进行分组回归并计算残差
qui foreach sic_y in `unique values of IndustryCode_year' {
    qui reg acc invA Dsale PPE if IndustryCode_year == sic_y'
    predict double resid, residual
    replace DACC = resid if IndustryCode_year == sic_y'
}
```

上面的代码使用了 `foreach` 循环(通常用于字符串变量),并且利用 `unique values of IndustryCode_year` 来迭代每个行业和年份组合。对于每个分组,它运行了一个线性回归模型,其中 `acc` 是因变量,`invA`, `Dsale`, 和 `PPE` 是自变量,并使用 `predict` 命令生成了残差(即模型预测值与实际观察值之间的差异)。最后,将这些残差存储到 `DACC` 变量中。

确保在运行上述代码之前已经定义了所有的变量和数据集。如果仍然遇到问题,请检查是否有缺失值或非数值类型的数据可能会影响计算过程。此外,`unique values of IndustryCode_year` 需要替换为实际获取唯一行业-年份组合列表的方法,例如使用 `egen` 命令的变体。

请注意,在真实环境中使用循环来处理大数据集可能会比较慢,特别是在分组回归时。如果数据量非常大,你可能需要考虑使用一些数据管理和优化策略来提高运行效率。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



藤椅
zxc2000 发表于 2024-12-26 23:24:58
egen IndustryCode_year = group(IndustryCode year), label lname(IndustryCode_year) // IndustryCode为行业分类,year为年度时间标识

sum IndustryCode_year
**结果为3551
**生成基本Jones模型应计盈余管理
gen DACC = .
     forvalues i = 1/3551{
       cap qui reg acc invA Dsale PPE if (IndustryCode_year==`i'), nocons
       cap qui predict e if e(sample), res
       cap qui replace DACC = e if e(sample)
       drop e
     }

这个是变量名改过之后我的代码,刚才上面的有误,抱歉

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

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 16:52