楼主: haodestiny
2447 4

[编程问题求助] stata如何实现遍历列出集合中 的所有子集? [推广有奖]

  • 7关注
  • 23粉丝

已卖:1405份资源

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
71300 个
通用积分
643.7146
学术水平
33 点
热心指数
30 点
信用等级
32 点
经验
16175 点
帖子
232
精华
0
在线时间
507 小时
注册时间
2011-1-19
最后登录
2025-11-11

楼主
haodestiny 在职认证  学生认证  发表于 2021-11-30 14:50:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
     各位老师好,最近我遇到一个问题,就是不知道如何用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个控制变量的遍历。
二维码

扫码加我 拉你入群

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

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

关键词:Stata 如何实现 tata python语言 python

1.do
下载链接: https://bbs.pinggu.org/a-3583908.html

1.26 KB

走自己的路,让别人无

沙发
qianchen 发表于 2021-11-30 15:18:50 来自手机
haodestiny 发表于 2021-11-30 14:50
各位老师好,最近我遇到一个问题,就是不知道如何用stata实现组合算法。具体来说,比如有一个集合{a, ...
https://bbs.pinggu.org/thread-10795595-1-1.html

藤椅
haodestiny 在职认证  学生认证  发表于 2021-11-30 15:28:35
qianchen 发表于 2021-11-30 15:18
https://bbs.pinggu.org/thread-10795595-1-1.html
是宝气老师吗?幸会幸会。我其实就是看到你的这个程序后才自己尝试复现一下的。但我的目的是提高一下自己的stata编程水平,而不是单纯想要这个结果。方便的话能请问一下您的编程思路是什么吗?目前其他地方我都有办法解决,就是这个组合的问题不懂。当然这是您的个人知识专利,有冒犯的地方还请见谅~~~

板凳
haodestiny 在职认证  学生认证  发表于 2021-11-30 15:36:58
qianchen 发表于 2021-11-30 15:18
https://bbs.pinggu.org/thread-10795595-1-1.html
我目前想到的是根据变量数目生成对应数目的宏,tokenize分隔后,用plural()函数对这些宏进行一个个添加,用这一系列宏来模拟列表结构,从而实现算法。

报纸
qianchen 发表于 2021-11-30 19:44:26 来自手机
haodestiny 发表于 2021-11-30 14:50
各位老师好,最近我遇到一个问题,就是不知道如何用stata实现组合算法。具体来说,比如有一个集合{a, ...
我不是

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-9 04:02