求助大佬为什么这段代码运行出现“last estimates not found”这个问题呀
// 参数设定
local mu 1
local reps 10000
// 创建一个新的数据集用于存储模拟结果
clear
set obs `reps'
gen id = _n
gen size = .
gen power = .
// 模拟循环
foreach T in 100 200 500 1000 2000 5000 {
foreach phi in 0.25 0.5 2 4 {
local sigma1 = sqrt(`phi')
local sigma2 = 1
foreach rho in 1 0.9 {
forvalues i = 1/`reps' {
clear
set obs `T'
gen e = cond(_n <= `T'/2,rnormal(0, `sigma1'), rnormal(0, `sigma2'))
gen Y = `mu'
forvalues t = 2/`T' {
replace Y = `mu' + `rho' *Y[_n-1] + e in `t'
}
// 结构突变检测
// 这里您需要使用 Stata 的命令来检测结构突变,可能的命令包括estat sbsingle,estat sbmultiple等
// 以estat sbsingle 为例,它通常用于检测单一的结构突变
estat sbsingle, vars(Y)distribution(normal) saving(breakpoints, replace)
// 加载突变点检测结果
use breakpoints, clear
summarize breakdate, meanonly
// 根据rho 的值记录模拟结果到之前创建的数据集
use sim_results, clear
if `rho' == 1 {
replace size = r(mean) in`i'
}
else {
replace power = r(mean) in`i'
}
save sim_results, replace
}
}
}
}
// 最后,您可以输出模拟结果进行分析
use sim_results, clear
summarize size power, detail