大家好,
使用 JSL 将命令 <
我遇到困难的代码部分如下:
report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out( Eval( YCols ) ),
In( :Simulated Y )
);
运行该部分代码会出现以下错误:未找到要切换的列。然后弹出一个窗口,您应该在其中选择要切换的列。
report_of_interest 是我发送模拟命令的报告窗口。 具体到 NumberColBox(8),它是报告中的“估计”列。 NBSnum 和 RSnum 是要运行的引导样本数和随机种子变量。 问题在于 Simulate( ) 命令的 Out( ) 中的列名称。 In( ) 列没有问题,因为我可以将模拟数据列命名为任何我想要的名称,但 Out( ) 选项的列不是我真正想要重命名的列或其他列。 在本例中,我将模拟数据保存到数据表中,并将该列重命名为“Simulated Y”,以便我可以根据 Simulate 命令中的需要将其引用为 In(:Simulated Y)。
在代码的前面,系统会提示用户选择将作为建模响应列的列,这就是 YCols,通常,在处理平台中的列时,您可以将其设置为 Eval(YCols),并且它很好地接受它,例如:
fm = avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Effects( :Null Factor, Eval( XCols ) ),
Personality( "Generalized Regression" ),
Run( Fit( Estimation Method( Forward Selection ), Validation Method( Validation Column ) ) )
);
将在 Y( ) 列上正确运行拟合模型。 然而,Simulate( ) 命令希望将该列引用为作用域列,我相信,正如它所希望的那样,例如:My Column To Model。
假设该列的名称为“My Column To Model”,因此变量 YCols 和 Eval(YCols) 都将返回以下 {“My Column To Model”}。 将模拟命令发送到报表时,它需要范围列名称,如下所示:
report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out( :My Column To Model ),
In( :Simulated Y )
);
问题是,我正在建模的列可以更改,因此它的名称会更改,并且我不想将列重命名为始终为固定名称,例如 :YData。 我想使用像 YCols 这样的变量,但我不知道如何使用中缀冒号运算符 (:) 和像 YCols 这样的变量来为 Simulate( ) 命令提供正确的列引用。
我尝试过 As Column(dt, name), Column(dt, name), Column(number), Parse(":"||char(Column(avdt, Eval(YCols)))), Parse(":" ||Eval(YCols)[1]),但这些都不起作用。 它们都会导致上面提到的相同错误,并打开一个新窗口来选择要交换输入/输出的列,这否定了我正在尝试执行的自动化。
任何帮助深表感谢。
谢谢!,
DS