1180_zh-CN
计算两个样条拟合之间的面积(双变量)我使用双变量平台的拟合样条来参数化荧光光谱曲线,并保存了样品和空白的预测公式。 我想估计峰下的面积,或更准确地说,估计指定波长间隔内样品曲线和空白曲线之间的面积。
我当然可以在 Matlab 中花费一些精力来完成此操作,但它可以很好地保留 JMP 中的整个工作流程。 我认为我的方法将涉及对几何形状由样条预测公式矩阵确定的切片进行求和。 但是我不确定如何解释和使用预测公式。
有什么想法可以引导我找到如何使用 JMP/JSL 解决此问题的正确方向吗? 谢谢!回复:计算两个样条拟合之间的面积(双变量)这个脚本有效,这让人奇怪为什么我的脚本不能,因为它应该与你的相同。 当我比较它们时,我发现了我的错字。 很抱歉造成混乱。 感谢您的帮助! 我现在有一个用于批量处理荧光数据的工作脚本。
剩下的唯一烦人的事情是 Maximize() 命令,如果它无法收敛(即找到局部最大值),它会破坏脚本。 我还没有找到如何与 JSL 中的错误输出交互(例如“如果结果==错误,则更改容差并重复,否则最大=结果”或类似)。
再次感谢!回复:计算两个样条拟合之间的面积(双变量)在 WinXP 下的 JMP 8.0.2 上,在出现提示时使用示例 JMP 生成的样条系数表,以下脚本确实对我有用,没有错误:
回复:计算两个样条拟合之间的面积(双变量)使用“列公式变量”或类似的内容搜索此论坛,以查找如何通过引用预先未知的列的脚本成功创建列公式的示例。 我认为这会有帮助。回复:计算两个样条拟合之间的面积(双变量)谢谢! 它工作得很好,我现在正在尝试在 JSL 中做到这一点。 如果有人感兴趣的话,我可以在完成后将脚本发布在这里。
顺便说一句,累积列有问题。 如果通过添加公式手动完成
If(Row() == 1, :Slice Area, :Cumulative Area[Row() - 1] + :Slice Area[Row()]) 到“累积区域”列,它可以工作。 但是,如果我通过使用命令 << set Formula() 编写脚本来执行此操作,则会收到错误“行中的非法引用(递归)......”。 该列已创建,但没有公式。回复:计算两个样条拟合之间的面积(双变量)来自 8.0.1 统计和图表指南:
“三次样条方法使用一组拼接在一起的三次多项式,使得所得曲线在拼接(结点)处连续且平滑。 该估计是通过最小化目标函数来完成的,该目标函数是误差平方和和在曲线范围内积分的曲率惩罚的组合。 有关此方法的描述,请参阅 Reinsch (1967) 的论文或 Eubank (1988) 的文本。”
当您在“Fit Y by X”中拟合样条线时,会出现一个红色三角形下拉菜单,其中包含“保存系数”项目。 此操作创建一个包含 X、A、B、C、D 列的新表。X 列包含数据中按升序排序的唯一 X 值。 其他 4 列是从同一行的 X 值开始到下一行的 X 值的区间中使用的三次多项式的系数。 如果同一行中 X 的值为 X1,则该区间的多项式为:
A + B*(X-X1) + C*(X-X1)^2 + D*(X-X1)^3
它用于 X 到 X2,即下一个“结”。 要找到该曲线下 x1 和 x2 之间的精确面积,只需将该多项式从 X1 积分到 X2 即可得到:
A*(X2-X1) + (B*(X2-X1)^2)/2 + (C*(X2-X1)^3)/3 + (D*(X2-X1)^4)/4
您需要创建一个名为“区域切片”的新列并输入此公式。 在 JMP 公式中,使用 X 代表 X1,使用 Lag(X,-1) 代表 X2。 然后您将有一列区域切片。 然后,您可以添加所有面积切片以获得从开始到结束的曲线下的总面积。 如果需要,您还可以创建一列累积区域。
这将为您提供样条线下方面积的精确值,而不是近似值。
这可能可以编写脚本,但我还没有尝试过。
要获得两条这样的曲线之间的面积,只需以这种方式找到两条曲线的面积,然后从另一条曲线中减去一条曲线即可。
迈克尔
Comments
There are no comments yet