JMP は BoxCox 変換をどのように実行しますか?最近、Pythonコードオプションを使用してJMPの数式をExcelに変換しています。BoxCox変換を含む数式(MLR)を実際に転送することができませんでした。数式に従って手動で計算を行った結果、数十万単位の数値ではなく、数百万単位の数値になってしまいました。数式がすでに変換されているのか、または必要なのか、逆BoxCoxを適用して通常の状態に戻すにはどうすればよいのかをご存知の方がいらっしゃいましたら教えてください。何か見落としているのか、数式公開オプションを介したPythonコードに何かが欠けているのかはわかりません。JMPがどのようにBoxCox変換を実行するのかを誰かに説明していただければ、より理解が深まり、修正できる可能性があります。数式のコードを添付しようとしましたが、投稿できませんでした。どなたか助けていただければ幸いです。
データの探索と可視化予測モデリングと機械学習Re: JMP は BoxCox 変換をどのように実行しますか?Box-Cox 変換のドキュメントと式は、こちらでご覧いただけます: https://www.jmp.com/support/help/en/18.2/index.shtml#page/jmp/boxcox-y-transformation.shtml
Re: JMP は BoxCox 変換をどのように実行しますか?こんにちは@DWS : これも役に立つかもしれません。
https://community.jmp.com/t5/Discussions/How-to-understand-Lambda1-and-Lambda2-for-Box-Cox-transformation/mp/614578#M81444
Re: JMP は BoxCox 変換をどのように実行しますか?おかげでBoxCox変換全般の理解は深まりましたが、JMPでどのように変換されるのかは必ずしも分かりませんでした。次の質問が理解を深めるのに役立つと思います。JMPのパラメータ推定値セクションに表示されるBoxCox式の数値は、BoxCox変換されただけのものなのでしょうか、それとも既に逆変換されて理解しやすい単位に戻されているのでしょうか?
Re: JMP は BoxCox 変換をどのように実行しますか?@DWS 「因子プロファイリング」メニューの「ボックス コックス変換」を選択するだけであれば、変換は適用されず、パラメータ推定は Y に基づきます。ただし、ボックス コックス変換 (「ボックス コックス変換」出力の赤い三角形) を使用してさらに再調整すると、パラメータ推定は変換された Y に基づきます。
Re: JMP は BoxCox 変換をどのように実行しますか?念のため確認ですが、「変換による再フィット」をクリックした後に表示される新しいメニューの式とパラメータ推定値は、実単位への逆変換が行われず、変換された単位のままになっています。もしそうであれば、JMPが逆変換に使用する式を知ることは可能ですか?なぜなら、保存列の予測式では逆正規単位が返されるからです。それとも、正規逆変換を適用すべきでしょうか?また、これは経験からご存知ですか?それとも、どこかに書いてあるのでしょうか?どこにも見つからなかったので、質問ばかりで申し訳ありません。質問が多くて申し訳ありません。
Re: JMP は BoxCox 変換をどのように実行しますか?@DWS : ご覧の通り、予測式を再フィッティングして保存すると、Yの元のスケールで予測値が逆変換されます。そして、その新しい列の式が、あなたが探している逆変換式です。これがJMPのヘルプに記載されているかどうかは分かりませんが(自分の作業ではそれが何をしているかは分かります)、パラメータ推定値について何を尋ねているのかよく分かりません。パラメータ推定値は一切変換されず、Yのみが変換されます。
Re: JMP は BoxCox 変換をどのように実行しますか?では、X変数を1つだけ選び、2つの数式の間の切片の例を挙げてみましょう。BoxCox法以外では、切片は254,077 X1: -44,880です。BoxCox法を適用した場合でも、数式と変数は同じです。切片は61,472,780 X1: -43,139です。これで私の問題がお分かりいただけたと思います。これらの数値はパラメータ推定値から取得され、数式エディタで検証されています。すべてのX変数は同じで、変換前の対応する変数とそれほど大きな差はありませんが、切片が大きくずれています。なぜこのような結果になるのか、そしてそもそもこのようなことが起こる理由が全く分かりません。
Re: JMP は BoxCox 変換をどのように実行しますか?@DWS BC変換のラムダ値は何ですか?Xはいくつありますか?パラメータ推定値の両方のセットを写真に撮ってもらえますか?
Re: JMP は BoxCox 変換をどのように実行しますか?
Re: 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
Re: JMP は BoxCox 変換をどのように実行しますか?ご協力ありがとうございます。その点はすべて承知しております。これは、BC式とBC式以外の式の切片の大きな違いを示すために作成した例です。なぜ切片がこれほど異なるのかご存じですか?
Re: JMP は BoxCox 変換をどのように実行しますか?@DWSええと…片方はBoxCox(Y)に基づいていて、もう片方はYに基づいています。では、切片が異なっていてはいけないのはなぜでしょうか? 別に鈍感なつもりはありませんよ。
バイアスとゼロ化されたパラメータ推定値の問題は、今は脇に置いておきましょう。どちらのモデルも、それぞれのモデルのパラメータ推定には最小二乗法が用いられます。そして、それぞれのモデルは、最小二乗法に基づく異なるパラメータ推定値のセットを持ちます。これらが異なるのは、応答が異なるためです(一方はY、もう一方はBoxCox[Y])。
そして、LN変換、BoxCox[Y] = LN[Y]を仮定すると、逆変換するとY = exp[int + Xの線形結合] = exp[int]*exp[Xの線形結合]となります。このモデルは乗法的なモデルであるため、このモデルにおける切片は、変換されていない加法モデルにおける切片とは異なる影響をYに与えます。
これがお役に立てば幸いです。もしかしたら、ご質問の本質を理解していないのかもしれません。なぜこれがそんなに懸念されるのでしょうか?
Re: JMP は BoxCox 変換をどのように実行しますか?この画像が読めるか分かりませんが、左側に予測値の比較が表示されています。互いに公平ではありません。右側には、非BCとBCのページがあり、その下部にそれぞれのパラメータ推定値が表示されています。非BCのパラメータ推定値に記載されている「切片 + 推定値 (X)」式を使用して、シートから予測値を取得できますが、BCの推定値は3860億であるため、BCでは取得できません。これはPythonコードで得られた数値と同じなので、Excelでは左側に示されている正確な数値を取得できません。左の画像に示されているBox Cox Predictを計算するためにJMPが使用している実際の式を知りたいです。

Re: JMP は BoxCox 変換をどのように実行しますか?@DWS私の理解が正しければ、出力の上部にある赤い三角のメニューから予測式を保存することはできないのでしょうか?
Re: JMP は BoxCox 変換をどのように実行しますか?@DWSまたは、一般的には、pic を参照してください (g は Y の幾何平均です)。
Re: JMP は BoxCox 変換をどのように実行しますか?それでも3.868e+11となる
Re: JMP は BoxCox 変換をどのように実行しますか?@DWS何か間違っているか、誤解しています。Yの予測値を得るためにExcelでどのような式を使っていますか?
Re: JMP は BoxCox 変換をどのように実行しますか?JMPから直接Python
getModelMetadata() を定義します:
return {"creator": u"最小二乗法", "modelName": u"", "predicted": u"BoxCox(販売価格調整済み、-1.088)", "table": u"国別輸出", "version": u"18.0.2", "timestamp": u"2025-07-02T17:34:44Z"}
getInputMetadata() を定義します:
戻る {
u"おおよその居住面積": "float",
u"YSB": "フロート"
}
getOutputMetadata() を定義します:
戻る {
u"Pred Formula BoxCox(売値調整後、-1.088)": "float"
}
def score(入力データ、出力データ):
outdata[u"予測式 BoxCox(販売価格調整済み、-1.088)"] = 386761700160.329 + 153.473460505384 * indata[u"居住面積のおおよその値"] + -1519.63590642121 * indata[u"YSB"]
return outdata[u"予測式 BoxCox(売値調整後、-1.088)"]
Re: JMP は BoxCox 変換をどのように実行しますか?@DWS変換された Y を返しているように見えます。Y が必要な場合は、この図に示すように逆変換する必要があります (g は Y の幾何平均です)。
Re: JMP は BoxCox 変換をどのように実行しますか?@DWSもう少し詳しく説明してみます。outdata関数の式が正しくありません。添付画像のf(x)をその関数とし、gをYの幾何平均とすれば、必要な結果が得られます。
つまり、添付の写真では、f(x) = 386761700160.329 + 153.473460505384 * indata[u"おおよその居住面積"] + -1519.63590642121 * indata[u"YSB"] とします。
Re: JMP は BoxCox 変換をどのように実行しますか?数学があまり得意じゃないせいかもしれませんが、まだできていません。また、Excelの関数に入力する必要があります。全く同じ数式ではありませんが、非常に似た数式です。これは数式エディタです。これでうまくいくでしょうか?科学的記法で合っていますか?

Re: JMP は BoxCox 変換をどのように実行しますか?@DWS問題なさそうですが、幾何平均がわからないので完全には検証できません。
確認することは可能です。何度かお伝えしたように、JMPのBox-Cox変換分析から予測式(出力上部の赤い三角)を保存してください。すると、その逆変換に基づく予測値が新しい列として作成されます。そして、その列に保存された予測式は、上記のものと一致するはずです。
Re: JMP は BoxCox 変換をどのように実行しますか?@DWSちなみに、lambda は0.5 に丸めることがよくあります。解釈がしやすく、Box Cox プロットでは差が無視できるほど小さいことがよく分かります。あなたの場合は、lambda = -1 を選択するのが良いかもしれません。