寻找二元图的顶点大家好,
我正在尝试从二元图中获取顶点
到目前为止,我用脚本提取参数并通过 Excel 工作表计算它。
我很确定 JMP 中包含查找顶点函数,但我找不到它。
有没有办法直接获取顶点?
谢谢
<我用来提取参数的脚本>
dt = Current data Table ();
biv=Bivariate(
Y( :contrast_100cm ),
X( :Offset_Z ),
Fit Polynomial( 2, {Line Color( {212, 73, 88} )} ),
Where( :site == "Para#4" )
);
rbiv = biv << report;
rbiv[tablebox(4)]<<MAKE data="https://community.jmp.com/" table=""></MAKE>
高级统计建模自动化和脚本编写数据混合和清理大规模定制质量和工艺工程回复:寻找二元图的顶点有效
太感谢了回复:寻找二元图的顶点正如我多次发过的,发送至报告()和派遣()参数旨在供 JMP 保存自定义。 它们不适合用户。 当然,您可以使用它们。 但还有更好的方法。
看来您想将答案添加到图中。 这个例子说明了如何做到这一点。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// fit quadratic polynomial interpolating function
biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Fit Line
);
// get reference to report layer
rbiv = biv << Report;
// get parameter estimates
parm = rbiv["Parameter Estimates"][Number Col Box( 1 )] << Get As Matrix;
// compute x intercept
ans = -parm[1] / parm[2];
rbiv[FrameBox(1)] << Add Graphics Script(
Text( { 52.5, 160 }, "X intercept is " || Char( ans ) )
);回复:寻找二元图的顶点嗨马克贝利,
我可以要求更多的事情吗?
我稍微改变了脚本来求解线性函数并且它工作正常。
然而,我发现自己通过日志检查结果不如通过树盒检查方便。
据我所知,调度函数是制作树框进行报告的正确函数。
所以我将脚本更改如下。但是,它不起作用。
我想获取每个站点的答案(有 4 个站点)。所以我尝试这样做,但也没有成功。
你能帮我解决这个问题吗
太感谢了
-> 我的目的
1.添加各个站点的ans。
2. 添加 ans 报告。
-> 我的脚本
名称默认为此处( 1 );
dt = 当前数据表();
// 拟合二次多项式插值函数
biv = dt << 双变量(
Y(:CALU_CALU_intr_cy),
X( :OC 偏移量 Y um ),
拟合线( {线条颜色( {212, 73, 88} )} ),
通过(:网站),
);
// 获取报表层的引用
rbiv = biv << 报告;
// 获取参数估计值
parm = rbiv["参数估计值"][Number Col Box( 1 )] << 获取为矩阵;
// 计算 x 截距
ans = -parm[1] / parm[2];
rbiv<<调度(
{“答”},
“安”,
框架盒,
{标记大小(3)}
);
谢谢
回复:寻找二元图的顶点这展示()函数根据其参数将文本写入日志窗口,默认情况下该窗口未打开。 选择查看 > 日志如果您使用的是 Windows 或窗口 > 日志如果您使用的是 Macintosh。
我修改了脚本来估计 x 截距,假设它存在于真实平面中。 它只是根的二次解。
Names Default To Here( 1 );
// example of data
x = -5::5;
dt = New Table( "Non-Linear Data",
New Column( "X", Numeric, Continuous, Values( x ) ),
New Column( "Y", Numeric, Continuous, Values( x^2 - x - 12 ) )
);
// fit quadratic polynomial interpolating function
biv = dt << Bivariate(
Y( :Y ),
X( :X ),
Fit Polynomial( 2 )
);
// get reference to report layer
rbiv = biv << Report;
// get parameter estimates
parm = rbiv["Parameter Estimates"][NumberColBox( 1 )] << Get As Matrix;
// compute x intercept
ans = parm[2]^2 - 4*parm[3]*parm[1];
x intercepts = If( ans > 0,
(-parm[2] + { -1, 1 } * Sqrt( ans )) / (2*parm[3]);
);
Show( parm, x intercepts );回复:寻找二元图的顶点谢谢你的好意回答。
因为你用注释解释了每个代码,所以很容易理解。
我试图修改你的代码以找出线性函数中的 x 截距。
但什么也没出来。
其实我真的不知道“显示功能”是如何工作的。
你能帮我解决这个问题吗?
谢谢
回复:寻找二元图的顶点感谢您的回复。
我测试了该脚本,发现这正是我正在寻找的。
(虽然我没看懂整个代码)
但我发现通过响应面计算的Offset_Z值与我手动计算(通过微分)略有不同
差异低于 0.0003,所以没什么大不了的
再次感谢你的帮助
回复:寻找二元图的顶点或者,另一种方法是使用拟合模型,使用响应曲面宏,以便 JMP 设置响应曲面属性。 然后您将获得求解临界值的响应面输出。
我让 JMP 使用我编写的一些数据创建了这个脚本。
Fit Model(
Y( :contrast_100cm ),
Effects( :Offset_Z & RS, :Offset_Z * :Offset_Z ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run(
:contrast_100cm << {Summary of Fit( 0 ), Analysis of Variance( 0 ),
Parameter Estimates( 0 ), Lack of Fit( 0 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Residual by Predicted( 0 ),
Plot Studentized Residuals( 0 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 0 ), Box Cox Y Transformation( 0 )}
),
SendToReport(
Dispatch(
{"Response contrast_100cm", "Whole Model"},
"Summary of Fit",
OutlineBox,
{Close( 1 )}
),
Dispatch(
{"Response contrast_100cm", "Whole Model"},
"Analysis of Variance",
OutlineBox,
{Close( 1 )}
),
Dispatch(
{"Response contrast_100cm", "Whole Model"},
"Parameter Estimates",
OutlineBox,
{Close( 1 )}
),
Dispatch(
{"Response contrast_100cm"},
"Response Surface",
OutlineBox,
{Close( 0 )}
)
)
)
这是找到临界值的输出部分。

回复:寻找二元图的顶点JMP 本身没有求解器。 但是您正在拟合二次多项式插值函数,因此您只需将 Offset_Z 的一阶导数设置为零并求解 Offset_Z 即可。 我假设“顶点”是指函数的最小值或最大值。
Names Default To Here( 1 );
// example of data
dt = Current Data Table();
// fit quadratic polynomial interpolating function
biv = dt << Bivariate(
Y( :contrast_100cm ),
X( :Offset_Z ),
Fit Polynomial( 2, {Line Color( {212, 73, 88} )} ),
Where( :site == "Para#4" )
);
// get reference to report layer
rbiv = biv << Report;
// get parameter estimates
parms = rbiv[NumberColBox( 1 )] << Get As Matrix;
// compute extremum
extremum = -parms[2] / (2*parms[3]);
Show( parms, extremum );