我想编程这个算法的初衷是自己在做回归的时候每次增加减少控制变量都显得很麻烦,所以想编写一个程序可以列出所有的控制变量组合,而不用一个个去跑回归。对于固定数量元素的集合,我可以通过不停使用for循环来实现。但我想扩展一下,可以让这个程序对任意数目的集合都能列出其所有子集。在这过程中我在python语言里看到可以利用列表来轻易的实现组合算法,但是换到stata里,我没看到有列表这个数据格式。
目前我已经解决了对输入变量个数的识别,对特定数目的控制变量也可以编程找出其所有可能的组合,但是我想进一步实现对不特定数目的控制变量也可以找出其所有可能的组合。目前查询到的网上关于获取集合的子集的算法在这个链接,https://zhuanlan.zhihu.com/p/62027511。大概内容是
- 先来一个直观的例子,比如集合 [1,2,3] ,它的所有子集为 [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]。其中空数组表示空集,其实空集肯定会存在,那么让我们的算法从空集开始。
- 首先,让我们定义一个结果集 ret =[ [] ], 里面
- 然后第一步,复制结果集 ,往里面的所有集合加1, [ [1] ], 然后新旧结果集合并,得到 [[],[1]]
- 然后第二步,复制结果集 ,往里面的所有集合加2, [[],[1]] 变成[[2], [1, 2]], 然后新旧结果集合并,得到 [[], [1], [2], [1, 2] ]
- 然后第三步,复制结果集 ,往里面的所有集合加3, [[], [1], [2], [1, 2] ]变成[[3],[1, 3], [2, 3] [1, 2, 3]], 然后新旧结果集合并,得到 [[], [1], [2], [1, 2] ,[3],[1, 3], [2, 3] [1, 2, 3]]
我把资料放在附件里,希望各位老师能够指点一二。附件中1.do是我编写的对6个控制变量的遍历。



雷达卡





京公网安备 11010802022788号







