Stata 中的 forvalues 和 xtile

forvalues and xtile in Stata

最后两行是做什么的?据我了解,这些行循环遍历列表 h_nwave 并计算加权分位数,如果 syear2digit == 'nwave' ,即每年计算 5 个分位数。但是我不确定我的理解是否正确。这也等同于使用 group() 函数吗?

h_nwave      "91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15"

generate        quantile_ip = .
  forvalues number = 1(1)15 {
  local       nwave : word `number' of `h_nwave'
  xtile       quantile_ip_`nwave' = a_ip if syear2digit == `nwave' [ w = weight ], nq(5)
  replace     quantile_ip = quantile_ip_`nwave' if syear2digit == `nwave'
  } 

我尝试使用 forloopmutatextile(需要 statar 包)和 case_when 将其转换为 R。但是,到目前为止,我找不到合适的方法来获得类似的结果。

此代码没有来源或上下文。

详细信息:第一个命令被截断了,大概应该是

local h_nwave 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

详细信息:第一个列表包含 25 个值,大概对应于 1991 年到 2015 年。但是第二个列表包含 15 个值,因此我们只查看 91 到 05。

主要思想:xtile 变量 a_ip 上的分箱到五分位数分箱,带有权重。因此最低的 20% 的观察值(考虑到权重)应该在 bin 1 中,依此类推。在实践中,必须将具有相同值的观察值分配给相同的 bin,因此不能保证 20-20-20-20-20 次拆分,除了样本大小是否为 5 的倍数的小字之外。所以,结果分配给 bins 1 到 5,not 五分位数本身,或任何其他类型的分位数。

这是针对每个调查波单独完成的。

xtile 命令在 https://www.stata.com/manuals/dpctile.pdf 为所有人记录,无论个人或工作场所对 Stata 的访问如何。

在 R 中,您很可能能够一次为所有调查年份生成五分位数分箱。我不知道该怎么做。

换句话说,循环的出现是因为 xtile 在一个命令调用中对单独的子集不起作用。社区提供的 Stata 命令允许这样做。这种话题在Statalist上讨论得很多。