你好社区,
我尝试创建一个脚本来动态创建具有主要效果和交互的模型。
例如,我可能有一个由以下内容定义的效果列子集:
all_cols = Current Data Table () << Get Column Names(String);
effect_cols = all_cols[3::8];
然后我构建了一系列模型来减少effect_cols。
随后,我考虑交互项。 但是,我在构建交互术语的列名称或列引用列表时遇到问题。
我尝试过这样的事情:
if(length(effect_cols) > 1,
interaction_effects = {};
for(i = 1, i < length(effect_cols), i++,
for(j=i+1,j<= length(effect_cols), j ++,
inter_tmp = effect_cols[i] || "*" || effect_cols[j];
interaction_effects = insert(interaction_effects,inter_tmp);
)
)
);并将其构建为模型:
Fit Model(
Y( :"Result"n ),
Effects(
concat(effect_cols,interaction_effects),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Screening" ),
Run( ),
)
但是,这始终会给出错误,并且我使用 parse() 和 eval() 的其他尝试不起作用。
任何帮助深表感谢。
谢谢
你好@mkiesz ,
您是否尝试编写逐步平台的脚本?它可能内置了一些模型选择标准。
如果我没记错的话我尝试过这样的事情
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Tiretread.jmp");
effect_cols = {"SILICA", "HARDNESS", "SILANE", "SULFUR"};
terms = {};
For Each({first_term, idx}, effect_cols[1::N Items(effect_cols) - 1],
For Each({second_term}, effect_cols[idx+1::N Items(effect_cols)],
cur_interaction = Substitute(Expr(_firstterm_*_secondterm_),
Expr(_firstterm_), NameExpr(AsColumn(first_term)),
Expr(_secondterm_), NameExpr(AsColumn(second_term))
);
Insert Into(terms, Name Expr(cur_interaction));
);
);
fitm = dt << Fit Model(
Y(:ABRASION),
Effects(Eval(terms)),
Personality("Standard Least Squares"),
Emphasis("Effect Screening")
);
