【发布时间】:2018-04-11 08:27:45
【问题描述】:
我目前正在从事一个重要的项目,我们使用逻辑回归来预测事件。
问题是,我需要生成 2 个不同的 1500 人样本,然后处理逻辑回归。整个过程应至少循环 50 次。你知道循环 50 次的方法吗?
我尝试了一个宏:
%macro repeat
%do i = 1 %to 50;
[...]
output;
end;
run;
%mend;
%repeat(50);
但这行不通。你有什么想法吗?
【问题讨论】:
-
请提供导致问题的代码minimal, verifiable and complete example,并包含相应的日志输出。
-
在您的示例代码中,
%do没有匹配的%end,这应该会在尝试编译宏时触发明显的错误消息,但如果没有看到更完整的代码示例,这是不可能的说这是否是唯一的问题。 -
SAS 方式是一次生成所有样本,2*1500*50 = 150,000,仍然很小。 SAS 可以通过完全避免宏的 BY 组处理轻松处理该问题。上面的论文详细介绍了如何实现这一点。
-
谢谢 Reeza,我没想过这种解决问题的方法。但这似乎是一种更有效的随机抽样方法,因为我只选择一次观察,它避免了获得相同观察的副本,就像我随机抽样 50 次一样。