Stata 中的 Numlist 限制低于 -help limits- 建议

Numlist limits in Stata lower than -help limits- suggests

我正在使用 Stata 命令 synth,它以 numlist 作为参数。

我需要 numlist 来获取 2,000 多个值。请注意 forvalues 在这种情况下不是可行的解决方法,除非我弄错了。我正在使用 Stata MP 13.1。在 help limits 中,它表示 numlist 的大小限制为 2,500。但是,当我 运行 以下代码时,我收到错误代码 "r(123) invalid numlist has too many elements."

foreach i of numlist 1/1601 {
   display `i'
}

此代码 运行s 没有错误:

foreach i of numlist 1600{
    display `i'
}

有没有办法允许 numlist 大于 1,600 个元素?另外,为什么 help limits 告诉我我有 2,500 个可以使用,但不允许超过 1,600 个?

编辑添加:nlist,用于解析一个numlist,指定最大为1,600。那么也许 1,600 是合适的最大值?在那种情况下,help limits 页面似乎不正确。

要添加的第二次编辑:synth 是一个匹配命令,您为其提供 numlist 个控制单元以包含在匹配过程中。因此,如果您有一个包含 2000 个单位和 10 个时间段的面板,您可以指定 1,999 个单位作为潜在控制单位。可能可以使用 forvalues,但需要对 synth ado 文件进行一些重要的编辑。

尝试连接数字列表,或使用 forvalues:

set more off

// option 1, or some variation
numlist "1/1600"
local firstlist `r(numlist)'

numlist "1601/1603"
local all `firstlist' `r(numlist)'

foreach i of local all {
   display `i'
}

// option 2
forvalues i = 1/1603 {
   display `i'
}

forvalues 被记录为速度更快,因此请尽可能使用它。

“宏中的字符数”有限制,具体取决于 Stata 风格,如 help limits 中所述:

8,681
165,200
1,081,511

更新

但这不起作用:

foreach i of numlist `all' {
   display `i'
}

报告

invalid numlist has too many elements r(123);

因此,如果用户编写的命令解析为 numlist,您可能也会遇到问题。我的建议是尝试并反馈。

虽然我无法在 .ado 文件中轻松找到 numlist 错误。我通过选择捐助者子样本进行综合控制来解决这个问题,其中组数等于 numlist 的限制。在我的例子中,我想保留大多数在逻辑上接近(地理上或相似的人口或其他特征)治疗单位的捐助者。我首先对这些进行二次抽样,然后用随机选择的其他单位填充限制。