在 Stata 中,如何创建组以使每个组具有相同的另一个变量总数?

In Stata, how to create groups such that each group has the same total of another variable?

我有一个面板数据集,想根据数据创建组。

egen AUX = cut(variable), group(5)  

这将创建每个组中(几乎)相同数量的单元。我现在想要的是有这样的组,在每个组中,另一个变量的总和是相同的。例如,我想对家庭进行分组,使每个箱子的总收入相同。

如何设置这样的命令?

这里没有数据示例,不清楚面板结构是如何进入的。例如,您是要合并所有年份的家庭(?),还是分开计算年份?

无论哪种方式,技术都是根据累积和的分数进行拆分。一个细节是相同的值应该分配给相同的bin。

sysuse auto, clear
bysort foreign (price) : gen runningsum = sum(price)

* same values belong together 
bysort foreign price (runningsum) : replace runningsum = runningsum[_N] 
by foreign : gen quintile = ceil(5 * runningsum/runningsum[_N])
bysort foreign quintile : egen qtotal = total(price)
list  price qtotal quintile if foreign, sepby(quintile)


     +----------------------------+
     |  price   qtotal   quintile |
     |----------------------------|
 53. |  3,748    24231          1 |
 54. |  3,798    24231          1 |
 55. |  3,895    24231          1 |
 56. |  3,995    24231          1 |
 57. |  4,296    24231          1 |
 58. |  4,499    24231          1 |
     |----------------------------|
 59. |  4,589    31280          2 |
 60. |  4,697    31280          2 |
 61. |  5,079    31280          2 |
 62. |  5,397    31280          2 |
 63. |  5,719    31280          2 |
 64. |  5,799    31280          2 |
     |----------------------------|
 65. |  5,899    25273          3 |
 66. |  6,229    25273          3 |
 67. |  6,295    25273          3 |
 68. |  6,850    25273          3 |
     |----------------------------|
 69. |  7,140    24959          4 |
 70. |  8,129    24959          4 |
 71. |  9,690    24959          4 |
     |----------------------------|
 72. |  9,735    34720          5 |
 73. | 11,995    34720          5 |
 74. | 12,990    34720          5 |
     +----------------------------+