使用 GraphBuilder 和/或分析(使用脚本)绘制非线性回归这篇文章是类似于这个,我在那里发表了一条评论,但由于该帖子已经发布了 2 年,它可能不会被看到,而且我在将解决方案适应我的方程时遇到了麻烦。
我正在使用下面的脚本进行非线性回归来准备数据,然后使用“分析”选项,将归一化荧光作为 Y 值,将模型(公式)列作为 X 值(反转轴),并按孔位置,但这一次只能做一个。 如果我使用 GraphBuilder,我无法让 Smoother 使用公式。 我希望将所有图都放在一张图上,或者在一个绝对理想的独角兽世界中,一次图 3 个井位置(例如 B2-B4),但这似乎不现实:p
Data Table( "Melt Curve Raw Data" ) << New Column( "Normalized Fluorescence",
formula(
(:Fluorescence - Col Min( :Fluorescence, :Well Position )) / (
Col Max( :Fluorescence, :Well Position )
-Col Min( :Fluorescence, :Well Position ))
)
);
Data Table( "Melt Curve Raw Data" ) << New Column( "Model", Numeric,
"Continuous", Format( "Best", 12 ),
Formula(Parameter({m1 = -60, m2 = 0.2, m3 = -50, m4 = -0.3, m5 = 100000, m6 = 320},
((m1 + m2 * (:Temperature + 273)) + (m3 + m4 * (:Temperature + 273)) * Exp((-m5 / (1.987 *
(:Temperature + 273))) * (1 - (:Temperature + 273) / m6))) /
(1 + Exp((-m5 / (1.987 * (:Temperature + 273))) * (1 - (:Temperature + 273) / m6))))));
高级统计建模回复:使用 GraphBuilder 和/或分析绘制非线性回归(使用脚本)你没有误解。 由此产生的复杂性可能会造成阻碍收敛的实际限制。
回复:使用 GraphBuilder 和/或分析绘制非线性回归(使用脚本)感谢您澄清说明。在您的示例中,您似乎必须输入所有不同的可能年龄,对吗?我使用的是 96 孔板,因此通常有大约 45 个孔位,但最多可以有 96 个。 那么我会为所有 6 个变量(m1-m6)设置 45 个参数吗? 我想我严重误解了一些事情......
您在其他评论中问我将对此做什么,这主要与两种蛋白质在不同处理后的焓 (m5) 和熔化温度 (m6) 变化的比较有关。
回复:使用 GraphBuilder 和/或分析绘制非线性回归(使用脚本)让我向您展示 FDE 的工作原理以及它可以为您做些什么。 您还没有说明您最终想要如何处理拟合曲线。 例如,每个井的条件是如何确定的? 您想根据每口井的状况比较曲线吗?
我打开您的数据表并选择“分析”>“专业建模”>“功能数据资源管理器”。 我将数据列扮演以下角色:

初始平台以叠加和单独函数(曲线)的形式显示数据。 我单击顶部的红色三角形并选择“模型”>“B 样条线”。

重要的信息是均值函数、标准差函数和函数主成分。 这些 FPC 捕获每条曲线相对于均值函数的独特性。 它们提供有关您的曲线及其差异的见解。 FPC 的数量等于曲线的数量,但通常您可以忽略其中的大部分。 前三个 FPC 捕获了所有曲线中 99.1% 的信息。
您可以将 FPC 视为曲线的原型。 也就是说,它们是可以组合起来产生一条曲线的基本特征。 您可以使用 FPC 作为响应或因素。 换句话说,您可能会问孔中变化的因子水平如何确定曲线的形状? 或者曲线的形状如何预测其他结果?

JMP 最初任意显示贡献至少为 1% 的所有 FPC,因此本例中有 5 个 FPC。 我将数量减少到 3 并保存了功能摘要,其中包括“条件”响应的公式。 现在我可以用 FPC 做任何我想做的事情,它们只是数据。 我可以在图形生成器中绘制它们。

我将脚本保存到您的原始数据表和带有功能摘要的数据表中,并附上了下面的新数据表。
回复:使用 GraphBuilder 和/或分析绘制非线性回归(使用脚本)您没有正确使用此功能。 帮助中的段落是正确的,但可能有点含糊。 这是正确的方法,一步一步。 我正在使用 Big Class 来拟合 :weight 与 :height 的简单指数模型,其中 :age 作为分组变量 (:weight = A*Exp( B*height ) )。
为模型添加新的数据列。 将模型的公式添加到数据列。 定义参数。

单击“确定”并选择分组变量。

对并非所有曲线共有的其他参数重复此步骤。 构建模型。 根据需要选择参数。 这是分组指数模型。

保存公式并启动非线性。

单击“确定”开始拟合。

不过,我担心模型中的参数化会导致估计值之间存在高度相关性。 引入分组变量会加剧这种相关性,特别是考虑到组的数量。 因此,另一种方法是使用原始模型并在“By”角色中使用曲线 ID。 这种方式将允许您单独拟合每条曲线。
另一方面,如果您不依赖于该模型,那么 FDE 是另一种方式。 它使用基函数的扩展来对数据建模。 这些是通用插值器。

回复:使用 GraphBuilder 和/或分析绘制非线性回归(使用脚本)嗨马克!
非常感谢您的回复。是的,我有 JMP Pro,但我还没有尝试过功能数据浏览器。 今天我将尝试阅读有关它的内容。 感谢您的建议。
我看到了您链接到的有关使用“扩展到类别”复选框的段落。 我将其添加为第七个参数,并在“分析”页面中将所有内容绘制在一个图上(太棒了!),但只给了我一条线的值。 我是否错误地使用了“展开到类别”选项? 我应该将其添加到我原来的 6 个参数之一中吗?
回复:使用 GraphBuilder 和/或分析绘制非线性回归(使用脚本)非线性启动对话框过度简化了情况。 您需要对自定义模型进行更多操作,以指示 Group 变量如何影响参数。 您的模型仅包含通用参数。 唯一参数取决于组变量的级别。
请参见这一页以及底部的注释。
您有 JMP Pro 吗? 您尝试过功能数据浏览器吗?
回复:使用 GraphBuilder 和/或分析绘制非线性回归(使用脚本)哇,这些都太棒了。 我最初想要寻找的是右上角的多色散点图,但你制作的图表和脚本绝对让我震惊。
使用“分析”选项时,我获得了所需的值,但每个图表都是单独的。 我已附上当前使用的设置的屏幕截图以及单击“执行”然后单击“置信限制”后的结果。
我还附上了尝试使用“group”而不是“by”作为井位时收到的错误消息。



回复:使用 GraphBuilder 和/或分析绘制非线性回归(使用脚本)我无法准确说出您在寻找什么,这些图表中的一个是否偶然显示了您正在寻找的内容,或者您可以发布一次只执行一个的图表的屏幕截图吗?您说您使用了“分析”,但我不确定您在该菜单中选择了哪个选项。



Graph Builder(
Size( 671, 507 ),
Show Control Panel( 0 ),
Variables(
X( :Model ),
Y( :Normalized Fluorescence ),
Overlay( :Well Position )
),
Elements( Smoother( X, Y, Legend( 12 ) ), Points( X, Y, Legend( 13 ) ) ),
Local Data Filter(
Add Filter(
columns( :Well Position ),
Where( :Well Position == {"B2", "B3", "B4"} ),
Display( :Well Position, N Items( 15 ), Find( Set Text( "" ) ) )
)
)
);
Graph Builder(
Size( 671, 543 ),
Show Control Panel( 0 ),
Variables( X( :Model ), Y( :Normalized Fluorescence ), Wrap( :Well Position ) ),
Elements( Points( X, Y, Legend( 9 ) ), Smoother( X, Y, Legend( 11 ) ) ),
Local Data Filter(
Add Filter(
columns( :Well Position ),
Where( :Well Position == {"B2", "B3", "B4"} ),
Display( :Well Position, N Items( 15 ), Find( Set Text( "" ) ) )
)
)
);
Graph Builder(
Size( 1308, 384 ),
Show Control Panel( 0 ),
Variables(
X( :Model ),
Y( :Normalized Fluorescence ),
Group X( :Well Position )
),
Elements( Smoother( X, Y, Legend( 12 ) ) ),
Local Data Filter(
Add Filter(
columns( :Well Position ),
Where( :Well Position == {"B2", "B3", "B4"} ),
Display( :Well Position, N Items( 15 ), Find( Set Text( "" ) ) )
)
)
);