各位老师好,最近我遇到一个问题,就是不知道如何用stata实现组合算法。具体来说,比如有一个集合{a,b,c},我想让stata列出这个集合所有的子集{},{a},{b},{c},{a,b,c},{a,b}{b,c}{a,c}。扩展一下,一个集合里有m个元素,我要列出这个集合的所有子集。
我想编程这个算法的初衷是自己在做回归的时候每次增加减少控制变量都显得很麻烦,所以想编写一个程序可以列出所有的控制变量组合,而不用一个个去跑回归。对于固定数量元素的集合,我可以通过不停使用for循环来实现。但我想扩展一下,可以让这个程序对任意数目的集合都能列出其所有子集。在这过程中我在python语言里看到可以利用列表来轻易的实现组合算法,但是换到stata里,我没看到有列表这个数据格式。
目前我已经解决了对输入变量个数的识别,对特定数目的控制变量也可以编程找出其所有可能的组合,但是我想进一步实现对不特定数目的控制变量也可以找出其所有可能的组合。目前查询到的网上关于获取集合的子集的算法在这个链接,
https://zhuanlan.zhihu.com/p/62027511。大概内容是
综合来说,我有两个问题:一是stata有没有类似列表之类的储存格式。二是如果没有的话,有没有其他办法来实现我列出一个集合所有子集的想法?我有尝试过用矩阵来实现,但是发现stata的矩阵元素好像只能是数字,不能是字符串。
我把资料放在附件里,希望各位老师能够指点一二。附件中1.do是我编写的对6个控制变量的遍历。