变量拟合模型脚本可能吗?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,我是这个论坛的新手,希望与大家相处融洽:) 我是一名使用 JMP 的学生,但在编写与拟合模型部分有关的脚本时遇到了一些困难。下面说明了我似乎无法让它工作的拟合模型代码:
a=0;var_list={:param1,:param2};rs_list={:test1,:test2,:test3,:test4,:test5};obj=Fit Model( Y(var_list[1]), Effects( response surface(:test1,:test2,:test3,:test4,:test5) ), Personality( Standard Least Squares ), Emphasis( Effect Screening ), Run());if(a==1, obj< var_list[1]< maximize desirability(1), ); obj << {Lack of Fit( 0 ), Sorted Estimates( 1 ), Plot Actual by Predicted( 1 ), Plot Regression( 0 ), Plot Residual by Predicted( 0 ), Plot Effect Leverage( 0 )}; );if(a==0, obj< var_list[1]< maximize desirability(1), ); obj << {Lack of Fit( 0 ), Sorted Estimates( 1 ), Plot Actual by Predicted( 1 ), Plot Regression( 0 ), Plot Residual by Predicted( 0 ), Plot Effect Leverage( 0 )};);我在一个列表中有 10 个变量,并且想使用它们通过 fitmodelling 进行一系列最小二乘分析,但我似乎无法让它工作。上面的代码最初计划插入到for 循环循环 10 次(这可能会随着变量的数量或多或少而变化)但问题是我想使用循环命令 jmp 从上面的列表中执行所需的分析......此外,是否可以放置rs_list进入上面的响应面函数?(我似乎也无法让列表起作用)……非常感谢任何想法或建议!提前谢谢,祝你有美好的一天!:)
变量拟合模型脚本可能吗?非常感谢MS的指导,感激不尽!:)
变量拟合模型脚本可能吗?好的,当应用于我使用的示例表时,我的代码在这里工作。当应用于更大的表格时,我还发现某些迭代缺少实际的预测图。我猜这可能是由于对合意性的拟合缓慢造成的,尽管当前的计算尚未完成,但 JMP 仍会继续执行代码。有时这可以通过在正确的位置插入 Wait() 命令来解决(这里不明显)。
回复:变量拟合模型脚本可能吗?MS,我试过你的代码,好像我在看一些错误?...我看到的是,有时实际的情节没有出现在报告的预测窗口中,而其他人有它们,例如: drvros 的报告没有实际情节,而 drvrus 情节有实际情节……我也尝试根据序列最大化和最小化,例如先最大化,然后最小化,但它似乎也能工作……任何想法?提前谢谢!:)
PS:非常感谢你的专家指导,从你的两个回复中我学到了很多,JSL真的很伤脑子哈哈,之前我在脚本指南中找不到响应面()函数(它是JMP9.0.3 脚本指南中未列出)并使用其他方法,例如:
效果(
var1 & RS,
var2 & RS,
多项式 (var1,var2),
阶乘(var1,var2),
)
这可以使用响应面(var1,var2)函数来简化……我只是决定试一试,它的工作原理哈哈……
回复:变量拟合模型脚本可能吗?抱歉,我错过了响应表面部分。正如您所经历的,另一个似乎不能很好地解析列表的函数。JSL 在这方面很烦人,因为通常很难事先说明论证的要求。
因此,我们也必须对 Fit Model obj 执行相同的技巧,即使用表达式并替换。例如:
dt =打开( "$ENGLISH_SAMPLE_DATA/Tiretread.jmp" ) ;
一种= 0 ;
目标列表= {最小化,最大化} ; // 选项列表
变量列表= { :磨损, :硬度} ;
rs_list = { :二氧化硅, :硅烷, :硫} ;
obj_expr =表达式(对象= dt <<拟合模型(
是(变量列表[一世] ) ,
效果,
性格(标准最小二乘法) ,
重点(效果筛选) ,
不合身( 0 ) ,
排序估计( 1 ) ,
按预测绘制实际值( 1 ) ,
绘制回归( 0 ) ,
按预测绘制残差( 0 ) ,
情节效应杠杆( 0 ) ,
跑()
)) ;
objsettings_expr =表达式(
对象<<探查器(
1 ,
置信区间( 1 ) ,
无功<<响应限制( {目标(最大最小值) ,重要性( 1 )} ) ,
最大化合意性( 1 ) ,
意愿函数( 1 )
)
) ;
rs_cols =正则表达式(字符( rs_list ) , "\{(.+)\}" , “\1” ) ; // 从大括号中去除列表
代入( obj_expr ,表达式(效果) ,解析( "效应(响应面(" || rs_cols || "))" ) ) ; // 将效果作为 Parse(string) 插入
代入( objsettings_expr ,表达式(最大最小值) ,目标列表[一种+ 1 ] ) ; // 设定目标
为了(一世= 1 ,一世<= N 项(变量列表) ,一世++,
obj_expr ;
评估(代替(名称表达式( objsettings_expr ) ,表达式(无功) ,变量列表[一世] ) ) ; // 应用分析器设置
) ;
回复:变量拟合模型脚本可能吗?首先,感谢 mpb 和 ms 的建议,非常感谢您的帮助!首先,参考mpb的回复,我需要使用响应面()对于我的分析,似乎这样做:
response surface(eval(rs_list))
不起作用。我已经尝试过多次mpb建议的方法但无济于事。使用了以下代码:
Cannot find specified column in access or evaluation of 'Eval' , Eval( rs_list )In the following script, error marked by /*###*/obj=Fit Model( Y( var_list ), //this part works perfectly fine if the response list is listed out below Effects( response surface( Eval/*###*/(rs_list) ) ), Personality( Standard Least Squares ), Emphasis( Effect Screening ), Run, invisible);
有什么方法可以实现响应面或其他替代方法?
至于MS的回复,我想知道,你能读懂我的想法吗哈哈哈……是的,我面临的主要问题是响应限制部分!它似乎没有根据需要正确地最大化或最小化......我会尝试你上面的例子:)...... 但是谢谢你,非常感谢你的帮助,我真诚地感谢所有这些帮助,因为我已经尝试了几个星期:)
变量拟合模型脚本可能吗?正如上面 mpb 所指出的,Y() 和 Effects() 理解变量并评估变量列表。但是,探查器消息“<< 响应限制({})”似乎没有评估列变量,至少没有由列表项表示。因此,在变量列表上循环它不是很简单。
解决这个问题的一种方法是使用表达式并替换循环中的关键条目。
这是一个示例(使用 JMP 示例数据文件之一):
dt =打开( "$ENGLISH_SAMPLE_DATA/Tiretread.jmp" ) ;
一种= 0 ;
目标列表= {最小化,最大化} ; // 选项列表
变量列表= { :磨损, :硬度} ;
rs_list = { :二氧化硅, :硅烷, :硫} ;
objsettings_expr =表达式(
对象<<探查器(
1 ,
置信区间( 1 ) ,
无功<<响应限制( {目标(最大最小值) ,重要性( 1 )} ) ,
最大化合意性( 1 ) ,
意愿函数( 1 )
)
) ;
代入( objsettings_expr ,表达式(最大最小值) ,目标列表[一种+ 1 ] ) ; // 设定目标
为了(一世= 1 ,一世<= N 项(变量列表) ,一世++,
对象= dt <<拟合模型(
是(变量列表[一世] ) ,
效果(评估( rs_list ) ) ,
性格(标准最小二乘法) ,
重点(效果筛选) ,
不合身( 0 ) ,
排序估计( 1 ) ,
按预测绘制实际值( 1 ) ,
绘制回归( 0 ) ,
按预测绘制残差( 0 ) ,
情节效应杠杆( 0 ) ,
跑()
) ;
评估(代替(名称表达式( objsettings_expr ) ,表达式(无功) ,变量列表[一世] ) ) ; // 应用分析器设置
) ;
变量拟合模型脚本可能吗?这可能会有所帮助:
var_list={:DrvrOS,:DrvrUS};
rs_list={:SKEW,:PKGIMP,:MBIMP,:XT,:MBLEN};
fm = 拟合模型(
Y(eval(var_list)),
效果(评估(rs_list)),
个性(标准最小二乘法),
重点(效果筛选),
跑()
);