Comment JMP effectue-t-il les transformations BoxCox ?J'ai récemment converti des formules JMP vers Excel à l'aide de l'option de code Python. Je n'ai pas réussi à transférer une formule (MLR) impliquant une transformation BoxCox. Les calculs ont été effectués manuellement, et les nombres sont passés à plusieurs millions au lieu de 100 000 comme prévu. Si quelqu'un sait si la formule est déjà reconvertie, ou si je dois le faire, et comment appliquer la transformation BoxCox inverse pour la rétablir normalement, je ne sais pas s'il y a quelque chose qui m'échappe ou si le code Python via l'option de publication de formule manque quelque chose. J'espérais que quelqu'un pourrait m'expliquer comment JMP effectue la transformation BoxCox afin que je puisse mieux la comprendre et éventuellement la corriger. J'ai essayé de joindre le code de la formule, mais je n'ai pas pu le publier. Toute aide serait la bienvenue.
Exploration et visualisation des donnéesModélisation prédictive et apprentissage automatiqueRe : Comment JMP effectue-t-il les transformations BoxCox ?La documentation et la formule de la transformation Box-Cox sont disponibles ici : https://www.jmp.com/support/help/en/18.2/index.shtml#page/jmp/boxcox-y-transformation.shtml
Re : Comment JMP effectue-t-il les transformations BoxCox ?Bonjour @DWS : Cela peut également être utile.
https://community.jmp.com/t5/Discussions/Comment-comprendre-Lambda1-et-Lambda2-pour-la-transformation-de-Box-Cox/mp/614578#M81444
Re : Comment JMP effectue-t-il les transformations BoxCox ?Merci, cela m'a aidé à mieux comprendre les transformations BoxCox en général, mais pas nécessairement comment JMP les réalise. La question suivante, je pense, m'aidera à comprendre : les nombres affichés par JMP dans la section « Estimations des paramètres » pour une formule BoxCox sont-ils simplement issus de la transformation BoxCox ou ont-ils déjà été transformés en unités intelligibles ?
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Si tout ce que vous faites est de sélectionner « Box Cox Transformation » dans le menu « Factor Profiling », aucune transformation n'est appliquée et les estimations des paramètres sont basées sur Y. Mais si vous effectuez un réajustement supplémentaire avec la transformation box-cox (triangle rouge dans la sortie « Box Cox Transformations »), les estimations des paramètres sont basées sur le Y transformé.
Re : Comment JMP effectue-t-il les transformations BoxCox ?OK, pour être clair, la formule obtenue après avoir cliqué sur « Réajuster avec transformation » dans ce nouveau menu, ainsi que les estimations de paramètres, ne sont pas transformées puis inversées en unités réelles, mais conservées en unités transformées. Si tel est le cas, est-il possible de connaître la formule utilisée par JMP pour les inverser, car il fournit bien les unités normales inverses dans la formule de prédiction de la colonne enregistrée ? Ou dois-je appliquer une transformation inverse normale ? Le savez-vous par expérience ? Ou est-ce écrit quelque part, car je ne l'ai pas trouvé ? Désolé pour le nombre de questions.
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS : Comme vous pouvez le constater, lorsque vous réajustez et enregistrez la formule de prédiction, elle est rétrotransformée, de sorte que les prédictions sont à l'échelle d'origine de Y. La formule de cette nouvelle colonne est la formule de rétrotransformation que vous recherchez. Je ne sais pas si cela se trouve dans l'aide JMP ou non (mais je vois ce que cela fait dans mon propre travail). Je ne suis pas sûr de ce que vous demandez à propos des estimations de paramètres ; elles ne sont en aucun cas transformées ; seul Y l'est.
Re : Comment JMP effectue-t-il les transformations BoxCox ?Bon, je vais vous donner un exemple avec une seule variable X et l'ordonnée à l'origine entre les deux formules. Non BoxCox : Ordonnée à l'origine : 254 077 X1 : -44 880. Même formule et même variable après BoxCox : Ordonnée à l'origine : 61 472 780 X1 ; -43 139. Vous comprenez mon problème. Ces valeurs sont issues de l'estimation des paramètres et vérifiées dans l'éditeur de formules. Toutes les variables x sont identiques ; elles ne sont pas très éloignées de leurs homologues non transformées, mais l'ordonnée à l'origine est très décalée. Je ne comprends pas pourquoi et je ne vois pas comment cela pourrait être possible.
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Quelle est votre valeur lambda dans la transformation BC ? Et combien de X avez-vous ? Pouvez-vous prendre une photo des deux ensembles d'estimations de paramètres ?
Re : Comment JMP effectue-t-il les transformations BoxCox ?
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Oh là là. Je pense que la rétrotransformation est le cadet de vos soucis. Avant de penser à interpréter des coefficients (surtout s'ils sont supérieurs à 50), assurez-vous que les termes de votre modèle peuvent être estimés avec les données dont vous disposez. Certaines estimations sont biaisées, d'autres sont mises à zéro. Cela indique que vous essayez d'estimer des paramètres par rapport à X qui sont fortement corrélés, et/ou d'autres qui ne sont pas estimables car la structure de vos données ne permet pas d'estimer les termes que vous essayez d'estimer. Vos VIF dans votre tableau d'estimation des paramètres (s'ils ne sont pas visibles, faites un clic droit sur le tableau des estimations des paramètres pour les sélectionner) vous aideront à identifier la multicolinéarité (corrélation). Par exemple, si X1 et X2 évoluent ensemble, leur inclusion dans le modèle rend leurs coefficients non fiables pour l'interprétation… il faut donc exclure l'un d'eux comme candidat du modèle.
De plus, si lambda = -0,002, il peut être plus facile d'utiliser la transformation LN ; elle est plus facile à interpréter et -0,002 est très proche de 0 (lambda = 0 correspond à la transformation LN).
Edit : plus d'informations ici.
https://community.jmp.com/t5/Discussions/Parameter-Estimates-being-zerod/mp/751701
Re : Comment JMP effectue-t-il les transformations BoxCox ?J'apprécie votre aide, j'en suis parfaitement conscient. Ceci est juste un exemple que j'ai créé pour vous montrer la différence significative entre les interceptions des formules BC et non BC. Savez-vous pourquoi les interceptions sont si différentes ?
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Eh bien… l'un est basé sur BoxCox(Y) et l'autre sur Y ; alors pourquoi les interceptions ne seraient- elles pas différentes ? Et je ne cherche pas à être obtus.
Laissons de côté pour l'instant la question des estimations de paramètres biaisées et mises à zéro. Pour les deux modèles, la méthode des moindres carrés est utilisée pour estimer les paramètres. Chacun aura un ensemble différent d'estimations de paramètres basées sur la méthode des moindres carrés. Leurs différences résident dans les réponses (l'une est Y, l'autre BoxCox[Y]).
Et si nous supposons une transformation LN, BoxCox[Y] = LN[Y], lorsque nous effectuons une transformation inverse, nous obtenons Y = exp[int + combinaison linéaire de X] = exp[int]*exp[combinaison linéaire de X]. Ce modèle est multiplicatif… donc l'interception de ce modèle a un effet différent sur Y que l'interception du modèle additif non transformé.
J'espère que cela vous sera utile. Je ne comprends peut-être pas la nature de votre question ; pourquoi est-ce si préoccupant ?
Re : Comment JMP effectue-t-il les transformations BoxCox ?Je ne sais pas si vous pouvez lire cette image, mais vous pouvez voir à gauche les valeurs prédites comparées. Elles ne sont pas équitables les unes par rapport aux autres. Ensuite, à droite, vous pouvez voir les pages pour les modèles non BC et BC, ainsi que leurs estimations de paramètres en bas. Je peux obtenir la valeur prédite à partir de la feuille en utilisant la formule Intercept + Estimation (X) fournie dans les estimations de paramètres pour les modèles non BC, mais pas pour les modèles BC, car l'estimation BC est de 386 milliards. C'est le même nombre donné par le code Python, donc je ne peux pas obtenir le nombre exact affiché à gauche dans Excel. Je souhaite connaître la formule utilisée par JMP pour calculer la prédiction Box Cox affichée sur l'image de gauche.

Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Si je comprends bien, ne pouvez-vous pas simplement enregistrer la formule de prédiction via le menu triangle rouge en haut de la sortie ?
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Ou en général, voir la photo (et g est la moyenne géométrique de Y).
Re : Comment JMP effectue-t-il les transformations BoxCox ?Il donne toujours le 3.868e+11
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Vous faites une erreur ou interprétez mal quelque chose. Quelle équation utilisez-vous dans Excel pour obtenir une prédiction pour Y ?
Re : Comment JMP effectue-t-il les transformations BoxCox ?Python directement depuis JMP
def getModelMetadata():
retour {"creator": u"Ajuster les moindres carrés", "modelName": u"", "predicted": u"BoxCox(Prix de vente ajusté, -1,088)", "table": u"Nation Export", "version": u"18.0.2", "timestamp": u"2025-07-02T17:34:44Z"}
def getInputMetadata():
retour {
u"Surface habitable approximative" : "float",
u"YSB": "float"
}
def getOutputMetadata():
retour {
u"Pred Formula BoxCox (Prix de vente ajusté, -1,088)" : "float"
}
score def(données d'entrée, données de sortie) :
outdata[u"Pred Formula BoxCox(Prix de vente ajusté, -1,088)"] = 386761700160,329 + 153,473460505384 * indata[u"Surface habitable approximative"] + -1519,63590642121 * indata[u"YSB"]
renvoyer les données de sortie [u"Pred Formula BoxCox(Prix de vente ajusté, -1,088)"]
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Il me semble que vous renvoyez le Y transformé. Si vous voulez Y, vous devez effectuer une transformation inverse comme indiqué sur cette image (où g est la moyenne géométrique de Y).
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Je vais essayer d'expliquer plus en détail. Votre équation dans la fonction outdata est incorrecte. Si vous définissez cette fonction comme f(x) dans l'image ci-jointe et que vous définissez g = moyenne géométrique de Y, vous obtiendrez ce que vous souhaitez.
C'est-à-dire, soit f(x) = 386761700160,329 + 153,473460505384 * indata[u"Surface habitable approximative"] + -1519,63590642121 * indata[u"YSB"] dans l'image ci-jointe.
Re : Comment JMP effectue-t-il les transformations BoxCox ?Je ne suis peut-être pas très bon en maths, mais je n'y arrive pas. J'ai aussi besoin de pouvoir saisir cette formule dans Excel et une fonction. Ce n'est pas exactement la même formule, mais une formule très similaire. Voici l'éditeur de formules. Est-ce que ça fonctionnerait ? C'est bien la notation scientifique ?

Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Cela a l'air correct, même si je ne connais pas la moyenne géométrique, donc je ne peux pas la vérifier complètement.
Vous pouvez cependant le vérifier. Comme je l'ai indiqué à plusieurs reprises, à partir de l'analyse par transformation Box-Cox dans JMP, enregistrez la formule de prédiction (triangle rouge en haut du résultat). Cela créera une nouvelle colonne de prédictions basée sur cette transformation inverse. La formule enregistrée dans cette colonne devrait correspondre à celle affichée ci-dessus.
Re : Comment JMP effectue-t-il les transformations BoxCox ?@DWS Pour info, on arrondit souvent lambda à 0,5 près. C'est plus facile à interpréter, et on constate souvent, sur le graphique de Box Cox, que la différence est négligeable. Dans votre cas, vous pourriez choisir lambda = -1.