大家好,
使用 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