在 JMP 中实施“Power Fit”模型并调整模型全部,
我有一些数据非常适合 Excel 中的“Power Fit”。
我在这篇文章中找到了一些有用的信息( https://community.jmp.com/t5/Discussions/Power-Fit-Equation-for-JMP/td-p/5783 )
我非常感谢有关此主题的更多指导:
- 当对 Excel 中的数据执行幂拟合时 - 拟合看起来相当合理
- 为了对 JSL 中的数据执行幂拟合 - theta1 和 theta2 是 2 个可调参数。 我通过反复试验找出了 theta2 和 theta 1 的合理值是多少,以使数据能够很好地拟合模型
用户如何在不过度拟合模型的情况下找出给定数据集的 theta1 和 theta2 的最佳值?
如果可能的话,请提供一个例子。
回复:在 JMP 中实现“Power Fit”模型并调整模型为了结束,我发布了从技术支持收到的回复。
本质上,通过 JSL 启动的非线性平台有一定的局限性,即利用非线性模型的最佳方法是执行以下操作:
1. 定义一个列,对控制模型的公式进行编码
2. 提供公式化列作为非线性平台函数调用的输入。
虽然需要初始起始值,但这是我迄今为止找到的最佳答案。
dt << New Column("Model E", Numeric, Continuous,
Formula( Parameter( {theta1 = 0.03, theta2 = 1.25}, theta1 * :year ^ theta2 ) )
);
dt << New Column("Exponential 3", Numeric, Continuous,
Formula( Parameter( {a = -20, b = 0.01, c = 0.01},
a + b * Exp( c * :year ) ) )
);
dt << New Column("Mechanistic Growth", Numeric, Continuous,
Formula( Parameter( {a = -40, b = 0.01, c = -0.01},
a * (1 - b * Exp( -c * :year ) ) ) )
);
dt << Run Formulas;
fc = Nonlinear( Y( :pop ), X( :Name("Exponential 3" )) );
fc << Finish;
fc << Save Prediction Formula;
//End Script;回复:在 JMP 中实现“Power Fit”模型并调整模型我对非线性平台工作原理的理解有点不同。要运行该平台,您需要使用参数创建一个公式预测器列 - 我相信您必须将这些参数的初始值作为猜测。当您单击“Go”时,平台会告诉您它是否收敛到解决方案。如果它收敛并且您保存解决方案,它会将这些值放置在您创建的预测变量列中 - 但公式仍然与原始公式相同。换句话说,预测器列包含您初始化并需要优化的参数。但与其他 JMP 平台不同的是,保存列不会创建新列,而只会将非线性优化的解值放置在您创建的同一公式列中。
我的理解可能有误,还请大家指正。
回复:在 JMP 中实现“Power Fit”模型并调整模型@dale_lehman , @苏珊_沃尔什1
谢谢你的建议 。
我正在尝试整理一个示例来理解工作流程。
当我启动“非线性”模型平台时,并指定以下内容:
- Y - 变量
- X - 变量
- 非线性模型
保存预测公式 - 将值保存到数据表中。
我假设通过执行这些步骤,由于我没有为模型中的参数设置任何起始值,JMP 会自动为模型参数设置它认为可能的最佳值,并将预测数据作为一列保存到数据表。
但是,如果我尝试在同一个数据表上运行第二个模型,则第二次启动非线性平台后添加的列具有旧模型的方程。请参阅下面的示例代码:
Clear Log();
Clear Globals();
dt = Open( "$SAMPLE_DATA/Nonlinear Examples/US Population.jmp" );
/* Run Predictions using different models*/
PowerFitPredModel = Nonlinear(Y(:pop),X(:Name("X-formula")),"Model E(2P)");
PowerFitPredModel << Save Prediction Formula ;
PowerFitPredModel << Close Window;
Wait(0.1);
CPredModel = Nonlinear(Y(:pop),X(:Name("X-formula")),"Mechanistic Growth Model(3P)");
CPredModel << Save Prediction Formula ;
CPredModel << Close Window;
现在,我不遵循的一些事情是:
- 当我多次启动非线性平台时,为什么在上面的脚本中只应用了我调用的第一个模型方程?
- 如何确定 JMP 假设的适合模型的参数是否产生收敛的解?

回复:在 JMP 中实现“Power Fit”模型并调整模型我没有答案,但这可能会引发一些有趣的讨论。附件是一个小数据集,其中包含有关汽车速度和停车距离的一些观察结果。功率曲线似乎拟合得很好。我使用了 JMP 中的非线性平台和估计器列 - 我使用了 1,1 的初始参数猜测(不太接近正确值,但也不是太远) - 数据集中保存的是非线性的最佳拟合平台(在部分回答您的问题时,JMP将计算theta1和theta2,因此您无需担心“过度拟合”,但存在一个问题,即JMP是否会收敛于解决方案,具体取决于您用作起始猜测的值) 。我还使用 Excel 为 Power 拟合趋势线提供的公式放置了一列。请注意,它们并不相同!JMP 拟合效果优于 Excel 拟合效果。这并不令人震惊,因为 Excel 通常无法执行最佳的统计分析。然而,令我惊讶的是,对于这个相当简单的数据,这两种解决方案有多么不同。
我相信 JMP 和 Excel 在拟合数据的幂关系时都会遇到问题。JMP可能收敛也可能不收敛到一个解,如果它收敛的话,我相信这个解是可靠的。Excel 只是给你一个拟合 - 我不知道如果它不适合它是否会给出错误或会发生什么 - 也许有人可以阐明 Excel 如何将幂函数拟合到数据。我认为“过度拟合”在这里是一个转移注意力的话题——它与权力关系是否是正确的关系有关,而不是与正在拟合的特定权力关系有关。由于算法选择 theta1 和 theta2 值,因此它们将是最适合数据的值 - 过度拟合始终是可能的,但它是您用于拟合数据的函数的属性,而不是特定选择算法选择的参数。也许更清楚的说法是,如果这个特定数据不是您尝试建模的数据的良好样本(可能是不同类型的汽车),那么将功率关系拟合到该数据就会面临过度拟合的风险。
Excel 与 JMP 问题是一个不同的问题,我很感兴趣是否有人可以阐明两者之间的差异。