用于分析(逐步回归)平台的蒙特卡罗模拟我有一个分析,它使用了几个包含随机元素的列。我知道如何手动更新列中的随机数,并且我了解如何对分析的输出进行模拟。但在这种情况下,我想在每次更新列中的随机数时运行逐步回归。我想这样做至少 1000 次。我不知道如何自动化这个过程:在公式列中生成新的随机数,重新运行逐步回归平台,运行所选模型并收集结果。
分析回复:用于分析(逐步回归)平台的蒙特卡罗模拟让我更具体一些,以防有任何慷慨的脚本编写者可以提供帮助。我附上了我正在尝试做的一个较小的版本。我在附件中有 10 列(全部从第 2 列开始),涉及随机正态分布和第一列 Y,它使用标有参数 1 到 5 的 5 列,以及公式中的一个随机正态分布。我希望执行以下步骤:
1. 运行存储在文件中的逐步回归。我不需要制作或运行模型,我只需要从 Fit Model 平台执行 Run 之后运行逐步过程的 Go 按钮。
2. 记录从第 2 列开始的 10 列中的每一列被逐步过程选择的频率。 (我不知道如何编写收集特定信息的脚本)
3. 重新运行 5 个参数列的公式,以便它们包含一组新的模拟值。我知道这可以通过表格左上角红色箭头处的重新运行公式命令来完成(但我不知道如何编写脚本)。
4. 重复步骤 1 和 2。 (我相信这可以通过一个简单的循环来完成)
5. 重复此操作 1000 次,并显示在逐步过程中选择 10 Column 2 列中每一列的次数分布。
我相信这一切都可以编写脚本,但这远远超出了我的能力范围。如果有人可以提供帮助,我将不胜感激。我愿意与某人合着一篇论文,因为我对此有一个出路。
回复:用于分析(逐步回归)平台的蒙特卡罗模拟我已经基本解决了我的问题 - 但仍然有一个问题。附件是一个小脚本,可以根据需要执行逐步回归。但是要生成 1000 个样本,我需要创建一个“样本”列并将其用作分析中的“依据”变量。这可行,但是进行模拟是一种繁琐的方法,因为我需要使文件非常长 - 例如,对于 1000 个样本,每个样本有 1000 个观测值,我需要 1,000,000 行。有谁知道进行模拟的更有效方法?据我所知,许多JMP平台附带的“模拟”选项只能模拟某些分析结果,不能模拟分析本身。
回复:用于分析(逐步回归)平台的蒙特卡罗模拟您在上一篇文章中提出的计划是一个很好的计划。 我也会那样做。 我会尝试给出一些建议。
- 如果您不熟悉 JMP 中的脚本,则可以从以下起点开始脚本指南. 在这个特定任务中,一些重要的部分可能是:
- 除此之外,您还需要熟悉帮助菜单下的脚本索引。 有 3 组脚本对象:函数、对象和显示框。 左上角有一个组合框,您可以缩小到特定组。
- 对于此特定任务,您可能需要查看对象组。 此处列出了所有平台,包括数据表。 您可能需要查看“Fit Model”对象下的“Fit Stepwise”项。单击“Fit Stepwise”,然后在“Item Messages”中向右查看“Finish”消息。 这可能是你现在缺少的关键部分。
- 对于这个特定的任务,您还需要学习如何操作数据表。 特别是串联,也许。 转到对象列表,单击“数据表”,然后在项目消息中向右查找“连接”。
除了上述之外,这里还有我从同事那里学到的其他有用的技巧。
- 尽可能在讨论板上发布更小、更具体的问题。 它将更有可能产生帮助。
- 更喜欢屏幕截图而不是附件。 对于JSL代码,可以直接在帖子中插入,方便读者查看。 编辑帖子时,在工具栏中查找 按钮。 它也更有可能产生帮助。 例如,移动设备上的阅读器不太可能打开附件。

回复:用于分析(逐步回归)平台的蒙特卡罗模拟嗨 dale_lehman
我的想法是从文件夹中的“逐步”平台获取并保存结果。 然后 '多文件导入' 整个结果作为一个文件。
最后,通过 ' 清理行P值'并根据需要分发。详细 JSL 如下:
Clear Globals();
Clear Log();
Names Default To Here( 1 );
//Define path in and out
Path_in = Pick File( "Select file" );
If( Directory Exists( "$Desktop\Fit_Stepwise" ),
,
Create Directory( "$Desktop\Fit_Stepwise" )
);
Path_out = "$Desktop\Fit_Stepwise\";
//Run Fit model and stepwise after open datatable
dt = Open( Path_in );
For( i = 1, i <= 1000, i++,
ow = dt << Fit Model(
Y( :Y ),
Effects(
:Column 2 001,
:Column 2 002,
:Column 2 003,
:Column 2 004,
:Column 2 005,
:Column 2 006,
:Column 2 007,
:Column 2 008,
:Column 2 009,
:Column 2 010
),
Personality( "Stepwise" ),
Run,
SendToReport( Dispatch( {}, "Step History", OutlineBox, {Close( 1 )} ) )
);
dt_result = Report( ow )[Outline Box( "Stepwise Fit for Y" )][Outline Box( "Current Estimates" )][Table Box( 1 )] << Make Into Data Table;
dt_result << save( Path_out || Char( i ) || ".csv", "csv" );
ow << close window;
dt_result << Close Window;
);
dt << Close Window;
dt_result = Multiple File Import(
<<SET folder="">F\!"" ) > 0.05 ) ) << Delete Rows;
dt_result << Distribution( Stack( 1 ), Nominal Distribution( Column( :Parameter ), Horizontal Layout( 1 ), Vertical( 0 ) ) );</SET>