如何在腳本中解析效果以“適合模型”?我正在嘗試將效果解析為腳本中的擬合模型。
這些效果是由腳本使用名義邏輯迴歸進行多次逐步選擇來產生的。 選定的變數名稱將輸出到 JMP 資料檔「final Selection.jmp」。
如果只選擇主效應,這是沒有問題的,但我還沒有成功地包括兩個因素的相互作用。
僅對於主要效果,我使用了以下腳本:
Basedata=concat( projectpath, "final selection.jmp");
dt = OPEN(basedata);
myparameters = :Parameter << Get Values();
close(dt,nosave);
sdt = Open(concat(projectpath, "all data.jmp"));
UseEffects = {};
For (ii = 1, ii <= NItems(myparameters), ii++,
colname = myparameters[ii];
col = Column(sdt, colname);
InsertInto(UseEffects, col)
);
Fit Model(
Y( :Y ),
Effects( Eval(UseEffects)),
Personality( "Nominal Logistic" ),
Run( Likelihood Ratio Tests( 1 ), Wald Tests( 0 ), Confusion Matrix( 1 ) )
);
如果選擇交互,則使用相同的腳本會導致錯誤訊息“找不到列...”
然後我嘗試使用以下腳本來產生具有效果的陣列:
For (ii = 1, ii <= NItems(myparameters), ii++,
colname = myparameters[ii];
position = contains(colname,"*");
If (position > 0,
col = ":"||left(colname,position)||" :"||right(colname,length(colname)-position),
col = ":"||colname);
/*col = Column(sdt, colname);*/
InsertInto(UseEffects, col)
);
儘管 UseEffects 中的效果名稱看起來不錯,但這也會失敗並再次給出「未找到列...」錯誤。
歡迎任何解決方案。
回覆:如何在腳本中解析效果以「適合模型」?非常感謝你的幫助@jthi 。 我自己解決了,但你的方法比較簡單。
回覆:如何在腳本中解析效果以「適合模型」?至少有兩個選項,將該函數解析為字串或表達式。 下面是如何使用 Arg() 將其解析為表達式的選項
Names Default To Here(1);
f = Expr(Fit Model(
Y(:Y1, :Y2, :Y3, :Y4, :Y5, :Y6, :Y7, :Y8, :Y9, :Y10, :Y11, :Y12, :Y13, :Y14, :Y15),
Effects(
:X1 & RS, :X2 & RS, :X3 & RS, :X4 & RS, :X5 & RS, :X1 * :X1, :X1 * :X2, :X2 * :X2, :X1 * :X3,
:X2 * :X3, :X3 * :X3, :X1 * :X4, :X2 * :X4, :X3 * :X4, :X4 * :X4, :X1 * :X5, :X2 * :X5, :X3 * :X5,
:X4 * :X5, :X5 * :X5, :Block, :X6, :X7
),
Personality("Standard Least Squares")
));
first_arg = Arg(f, 1);
second_arg = Arg(f, 2);
ys = Substitute(Arg(f, 1), Expr(Y), Expr(List()));
show(first_arg); // first_arg = Y(:Y1, :Y2, :Y3, :Y4, :Y5, :Y6, :Y7, :Y8, :Y9, :Y10, :Y11, :Y12, :Y13, :Y14, :Y15);
show(second_arg);
show(ys); // ys = {:Y1, :Y2, :Y3, :Y4, :Y5, :Y6, :Y7, :Y8, :Y9, :Y10, :Y11, :Y12, :Y13, :Y14, :Y15};
我想你也可以使用 Extract Expr()
Extract Expr(f, Y(Wild List()));
回覆:如何在腳本中解析效果以「適合模型」?@michael_jmp你知道我們是否可以從DoE模型中得到效果清單嗎? 因為我們設計 DoE 時效果列表已保存在模型中,所以我們不必像這裡提到的那樣手動生成效果列表。 例如,如何從下面的模型腳本中取得 Y 和 Effects 的清單? 太感謝了。
適合模型(Y(:Y1, :Y2, :Y3, :Y4, :Y5, :Y6, :Y7, :Y8, :Y9, :Y10, :Y11, :Y12, :Y13, :Y14, :Y15) , 效果(:X1 & RS, :X2 & RS, :X3 & RS, :X4 & RS, :X5 & RS, :X1 * :X1, :X1 * :X2, :X2 * :X2, :X1 * : X3, :X2 * :X3, :X3 * :X3, :X1 * :X4, :X2 * :X4, :X3 * :X4, :X4 * :X4, :X1 * :X5, :X2 * :X5, :X3 * :X5, :X4 * :X5, :X5 * :X5, :Block, :X6, :X7), Personality(\!"標準最小平方法\!"))
回覆:如何在腳本中解析效果以「適合模型」?謝謝您,我已經使用了您描述的解決方案,它確實解決了我的問題。
回覆:如何在腳本中解析效果以「適合模型」?我認為您可能需要為此使用 JSL 表達式。 以下是一個與您使用波士頓住房樣本資料表類似的範例:
myparameters = {"crim*zn", "zn", "indus", "nox", "rooms", "age", "distance"};
sdt = Open("$SAMPLE_DATA/Boston Housing.jmp");
EffectsExpr = Expr(Effects());
For (ii = 1, ii <= NItems(myparameters), ii++,
colname = myparameters[ii];
position = contains(colname,"*");
If (position > 0,
col = ":"||left(colname,position)||" :"||right(colname,length(colname)-position),
col = ":"||colname
);
/*col = Column(sdt, colname);*/
InsertInto(EffectsExpr, parse(col))
);
fmExpr = substitute(
Expr(Fit Model(
Y( :chas ),
_effects_,
Personality( "Nominal Logistic" ),
Run( Likelihood Ratio Tests( 1 ), Wald Tests( 0 ), Confusion Matrix( 1 ) )
)),
expr(_effects_),
nameexpr(EffectsExpr)
);
eval(fmExpr)