JMP 如何进行 BoxCox 变换?我最近一直在使用 Python 代码选项将 JMP 公式转换为 Excel 格式。但实际上,我无法传输任何涉及 BoxCox 变换的公式 (MLR)。我手动按照公式进行了计算,结果却得出了数百万个数字,而不是十万个数字(它应该是十万个数字)。请问有人知道公式是否已经转换回来,或者我是否需要转换回来,以及我需要如何应用逆 BoxCox 函数才能将其恢复到正常值吗?我不知道是我遗漏了什么,还是通过发布公式选项编写的 Python 代码缺少了什么。我希望有人能解释一下 JMP 是如何执行 BoxCox 变换的,这样我就能更好地理解它,并有可能修复它。我试图附加公式代码,但它不允许我发布。任何帮助都将不胜感激。
数据探索与可视化预测模型和机器学习回复:JMP 如何进行 BoxCox 转换?Box-Cox 变换的文档和公式可在此处找到: https://www.jmp.com/support/help/en/18.2/index.shtml#page/jmp/boxcox-y-transformation.shtml
回复:JMP 如何进行 BoxCox 转换?你好@DWS :这可能也有帮助。
https://community.jmp.com/t5/Discussions/How-to-understand-Lambda1-and-Lambda2-for-Box-Cox-transformation/mp/614578#M81444
回复:JMP 如何进行 BoxCox 转换?谢谢,这确实帮助我更好地理解了 BoxCox 变换的总体原理,但并不一定能帮助我理解 JMP 是如何进行这些变换的。我相信下面的问题能帮助我理解。JMP 在 BoxCox 公式的“参数估计”部分显示的数字,是经过 BoxCox 变换的,还是已经逆变换回了可理解的单位?
回复:JMP 如何进行 BoxCox 转换?@DWS如果您所做的只是在“因子分析”菜单下选择“Box Cox 变换”,则不会应用任何变换,参数估计基于 Y。但如果您进一步使用 box-cox 变换(“Box Cox 变换”输出中的红色三角形)进行重新拟合,则参数估计基于变换后的 Y。
回复:JMP 如何进行 BoxCox 转换?好的,需要澄清的是,在我点击“使用变换重新拟合”后,在新菜单中显示的公式中,该公式和参数估计值并没有被变换后再逆变换回真实单位,而是保留了变换后的单位。如果是这样,那么是否可以知道JMP用来逆变换它们的公式,因为它在保存列预测公式中给出了逆正态单位?还是我应该应用正态逆变换?另外,您是根据经验知道的吗?还是因为我找不到相关资料,所以不知道在哪里找到的。抱歉,问题太多了。
回复:JMP 如何进行 BoxCox 转换?@DWS :正如您所见,当您重新拟合并保存预测公式时,它会被反向变换,因此预测结果仍处于 Y 的原始尺度。而新列中的公式就是您要查找的反向变换公式。我不确定 JMP 帮助中是否有这个公式(但我可以在自己的工作中看到它的作用)。不过,我不确定您问的是参数估计值;它们没有任何变换;只有 Y 会变换。
回复:JMP 如何进行 BoxCox 转换?好的,让我举一个只有一个X变量的例子,两个公式之间有一个截距。非BoxCox变换:截距:254,077 X1:-44,880。BoxCox变换后的相同公式和变量:截距:61,472,780 X1;-43,139。你明白我的问题了吧。这些数字取自参数估计值,并在公式编辑器中进行了验证。所有x变量都相同,它们与未变换后的对应变量相差不大,但截距却非常偏离。我不知道这是为什么,也想不出这怎么可能。
回复:JMP 如何进行 BoxCox 转换?@DWS你的BC变换中的lambda是多少?你有多少个X?你能拍一张两组参数估计的照片吗?
回复:JMP 如何进行 BoxCox 转换?
回复:JMP 如何进行 BoxCox 转换?@DWS哦,天哪。我觉得反向变换是你最不用担心的事情。在考虑解释系数(尤其是超过50个系数的系数)之前,你需要确保模型中的项可以用你现有的数据进行估计。有些估计值有偏差,有些估计值被置零。这表明你正在尝试估计一些与X高度相关的参数,和/或一些由于数据结构不支持估计你试图估计的项而无法估计的参数。参数估计表中的方差系数(VIF)(如果看不到,请在参数估计表上右键单击以选择它们)将帮助你识别多重共线性(相关性)。例如,如果X1和X2同时变动,那么将两者都纳入模型中会导致它们的系数在解释方面都不可靠……因此,应该在模型中排除其中一个作为候选参数。
另外,如果 lambda = -0.002,则使用 LN 变换可能更容易;它更容易解释,并且 -0.002 非常接近 0(lambda=0 对应于 LN 变换)。
编辑:此处有更多信息。
https://community.jmp.com/t5/Discussions/Parameter-Estimates-being-zerod/mp/751701
回复:JMP 如何进行 BoxCox 转换?感谢您的帮助,我完全了解这些。这只是我创建的一个例子,旨在向您展示BC公式和非BC公式截距的显著差异。您知道为什么截距差异如此之大吗?
回复:JMP 如何进行 BoxCox 转换?@DWS嗯……一个基于 BoxCox(Y),另一个基于 Y;那么为什么截距不会不同呢?我并不是故意装糊涂。
我们先把有偏和零参数估计的问题放在一边。这两个模型都使用最小二乘法来估计各自模型中的参数。并且每个模型基于最小二乘法都会有一组不同的参数估计值。它们之所以不同,是因为响应不同(一个是 Y,另一个是 BoxCox[Y] )。
如果我们假设 LN 变换,BoxCox[Y] = LN[Y],当我们反向变换时,我们得到 Y = exp[int + X 的线性组合] = exp[int]*exp[X 的线性组合]。该模型是乘法的……因此,该模型中的截距对 Y 的影响与未变换的加法模型中的截距对 Y 的影响不同。
希望以上信息对您有所帮助。也许我没理解您问题的本质;为什么这个问题如此令人担忧?
回复:JMP 如何进行 BoxCox 转换?我不知道您是否能读懂这张图片,但您可以在左侧看到预测值的比较。彼此之间并不公平。然后在右侧,您可以看到非公元前和公元前的页面以及底部的参数估计值。我可以使用非公元前参数估计值中给出的截距 + 估计值 (X) 公式从工作表中获取预测值,但无法获取公元前的预测值,因为公元前的估计值是 3860 亿。这与 Python 代码给出的数字相同,因此我无法在 Excel 中获得左侧显示的准确数字。我想知道 JMP 用于计算左图所示的 Box Cox 预测的实际公式。

回复:JMP 如何进行 BoxCox 转换?@DWS如果我理解正确的话,您不能只通过输出顶部的红色三角形菜单来保存预测公式吗?
回复:JMP 如何进行 BoxCox 转换?@DWS或者一般来说,看图(g 是 Y 的几何平均值)。
回复:JMP 如何进行 BoxCox 转换?它仍然给出 3.868e+11
回复:JMP 如何进行 BoxCox 转换?@DWS你肯定做错了什么,或者误解了什么。你在Excel里用什么公式来预测Y值?
回复:JMP 如何进行 BoxCox 转换?直接从 JMP 使用 Python
def getModelMetadata():
返回 {“creator”:u“拟合最小二乘法”,“modelName”:u“”,“predicted”:u“BoxCox(调整后的售价,-1.088)”,“table”:u“国家出口”,“version”:u“18.0.2”,“timestamp”:u“2025-07-02T17:34:44Z”}
def getInputMetadata():
返回 {
u"大约居住面积": "浮动",
u"YSB": "浮动"
}
def getOutputMetadata():
返回 {
u“预测公式BoxCox(调整后的售价,-1.088)”:“浮动”
}
定义分数(输入数据,输出数据):
outdata[u"预测公式 BoxCox(调整后的售价,-1.088)"] = 386761700160.329 + 153.473460505384 * indata[u"大致居住面积"] + -1519.63590642121 * indata[u"YSB"]
返回输出数据[u"预测公式BoxCox(调整后的售价,-1.088)"]
回复:JMP 如何进行 BoxCox 转换?@DWS在我看来,您正在返回转换后的 Y。如果您想要 Y,则需要按照此图所示进行反向转换(其中 g 是 Y 的几何平均值)。
回复:JMP 如何进行 BoxCox 转换?@DWS我会尝试进一步解释。你的 outdata 函数中的公式不正确。如果你将该函数设为附图中的 f(x),并让 g=Y 的几何平均值,你就能得到你想要的结果。
即,让 f(x) = 386761700160.329 + 153.473460505384 * indata[u"Approx Living Area"] + -1519.63590642121 * indata[u"YSB"] 在附图中。
回复:JMP 如何进行 BoxCox 转换?也许我数学不太好,但我一直没能做到。我还需要能把它输入到Excel和一个函数里。不是那个完全相同的公式,但非常相似。这是它的公式编辑器。这个能用吗?科学计数法对吗?

回复:JMP 如何进行 BoxCox 转换?@DWS看起来还不错,但我不知道几何平均值是多少,所以我无法完全验证它。
不过你可以检查一下。正如我多次提到的,在 JMP 中进行 Box-Cox 变换分析时,保存预测公式(输出顶部的红色三角形)。它会根据该反向变换创建一个新的预测列。保存到该列的公式应该与上面的公式一致。
回复:JMP 如何进行 BoxCox 转换?@DWS顺便说一句,我们经常将 lambda 四舍五入到最接近的 0.5。这样更容易解释,而且你经常在 Box Cox 图中看到差异可以忽略不计。对于你的情况,你可能应该选择 lambda = -1。