You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stata两期面板固定效应1000次蒙特卡洛模拟代码求助

Stata固定效应模拟代码报错修复

代码存在的明确问题

  • 非法命令行:DEFINE PROGRAM THAT SPECIFIES THE DGP为说明文本,未添加注释前缀*,Stata会将其识别为无效命令直接终止运行
  • 数值格式错误:参数rho赋值写为-0,2,Stata仅支持英文点.作为小数点,逗号会被判定为参数分隔符触发语法报错
  • 返回值不匹配:程序内部仅运行了混合OLS回归,未执行固定效应估计,但simulate命令调用了不存在的r(b_FE)、r(se_FE)返回值,运行时会触发返回值不存在的错误
  • DGP逻辑错误:随机扰动项u、核心解释变量成分xstar均在面板展期(expand 2生成两期数据)前生成,属于不随时间变动的个体层面变量,会被固定效应完全吸收;且核心解释变量xit无时间维度的组内变异,固定效应估计无法识别系数。

修正后可直接运行的代码

clear all
global numid = 400

* DEFINE PROGRAM THAT SPECIFIES THE DGP
program treatment, rclass
    drop _all
    
    * 设定个体数量
    set obs $numid
    * 生成个体固定效应
    generate alpha = rnormal(0,2)
    gen id = _n
    * 扩展为2期平衡面板
    expand 2
    bysort id: gen t = _n
    * 声明面板结构
    xtset id t
    
    * 调整数据生成过程,保证核心变量存在组内变异
    generate x_ind = rnormal(2,4)  // 核心解释变量的个体不变成分
    generate x_time = rnormal(0,1) // 核心解释变量的时间变形成分
    generate u = rnormal()         // 每期随机扰动项,在展期后生成保证随时间变动

    generate beta0 = 1
    generate beta1 = 2
    generate rho = -0.2            // 修正小数点格式
    generate xit = x_ind + x_time + rho*alpha
    generate y = beta0 + beta1*xit + alpha + u
    
    * 存储混合OLS估计结果
    regress y xit 
    return scalar b_OLS = _b[xit]
    return scalar se_OLS = _se[xit]
    regress y xit, robust
    return scalar ser_OLS = _se[xit]
    
    * 补充固定效应估计,存储对应结果
    xtreg y xit, fe
    return scalar b_FE = _b[xit]
    return scalar se_FE = _se[xit]
end

* 执行1000次重复模拟
simulate b_OLS=r(b_OLS) se_OLS=r(se_OLS)  ///
         b_FE=r(b_FE) se_FE=r(se_FE), ///
         seed(117) reps(1000) :treatment

* 查看模拟结果的统计特征(可验证FE估计无偏、OLS存在遗漏变量偏差)
summarize

运行后可通过summarize结果看到:混合OLS估计量因遗漏个体固定效应存在明显偏差,固定效应估计量的均值接近设定的真值2,符合预期。

内容的提问来源于stack exchange,提问作者BearCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 05:03:26