搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  1.do
资料下载链接地址: https://bbs.pinggu.org/a-3583908.html
附件大小:
各位老师好,最近我遇到一个问题,就是不知道如何用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。大概内容是
  1. 先来一个直观的例子,比如集合 [1,2,3] ,它的所有子集为 [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]。其中空数组表示空集,其实空集肯定会存在,那么让我们的算法从空集开始。

  2. 首先,让我们定义一个结果集 ret =[ [] ], 里面

  3. 然后第一步,复制结果集 ,往里面的所有集合加1, [ [1] ], 然后新旧结果集合并,得到 [[],[1]]

  4. 然后第二步,复制结果集 ,往里面的所有集合加2, [[],[1]] 变成[[2], [1, 2]], 然后新旧结果集合并,得到 [[], [1], [2], [1, 2] ]

  5. 然后第三步,复制结果集 ,往里面的所有集合加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]]
复制代码
综合来说,我有两个问题:一是stata有没有类似列表之类的储存格式。二是如果没有的话,有没有其他办法来实现我列出一个集合所有子集的想法?我有尝试过用矩阵来实现,但是发现stata的矩阵元素好像只能是数字,不能是字符串。
我把资料放在附件里,希望各位老师能够指点一二。附件中1.do是我编写的对6个控制变量的遍历。


    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

GMT+8, 2026-1-9 12:23