Salut à tous,
Je me suis gratté la tête en essayant de savoir pourquoi un script que j'ai posté ici ne fonctionnait pas sur l'ordinateur de quelqu'un d'autre alors qu'il fonctionnait parfaitement sur le mien. Il s’avère que l’ordre des variables X et Y dans la fonction de résolution des moindres carrés dans JSL a été inversé dans JMP 14 par rapport à JMP 13. Naturellement, cela rend mon script initial inutilisable pour toute personne utilisant une version JMP <14, ce qui est un peu gênant. Ces changements subtils sont-ils documentés quelque part?
Cordialement, Yves
Merci beaucoup Milo pour ton explication détaillée. Une dernière question: il semble que dans JMP 14, le fait d’augmenter la matrice X (avec une colonne initiale de 1) est sans importance pour la solution. Est-ce le cas également avec JMP 13? Je n'ai plus accès à JMP 13 que par l'intermédiaire d'un utilisateur indépendant qui utilisait mon script. Je suivrai votre solution en ce qui concerne la vérification de la version de JMP.
Merci encore
Ce serait très frustrant. Je suis désolé d'apprendre que c'est comme ça que vous avez découvert le changement de la fonction JSL de résolution des moindres carrés.
Échanger l'ordre des paramètres dans une fonction JSL est extrêmement rare. Lorsqu'un changement perturbe la compatibilité avec les versions précédentes, nous le répertorions dans le Notes de version .
Chez JMP, l'environnement de développement est actif, mais nous faisons de notre mieux pour maintenir également la compatibilité avec les versions antérieures. Vous avez raison de dire que l'ordre des paramètres est passé de JMP 13.0 (lorsque la fonction a été introduite) à 14.0. Non seulement cela, mais par défaut, Least Squares Solve () dans 14.0 inclut un terme d'interception.
Ce changement a été motivé par un certain nombre de raisons. Tout d'abord, Least Square Solve () a été introduit (par moi) dans JMP 13.0, il n'a donc pas été en circulation très longtemps. Deuxièmement, j'ai inversé l'ordre et le terme d'interception par défaut de manière à ce que dans presque tous les cas d'utilisation, la méthode Least Squares Solve () aboutisse à ce qu'un script ne s'exécute pas plutôt que sous la forme de nombres incorrects, ce dernier étant particulièrement difficile à découvrir. Troisièmement, dans 14.0, j’ai introduit la fonction de régression linéaire JSL (), qui résout essentiellement le même problème que la solution Least Squares Solve (), mais avec un accès plus convivial à la sortie standard à partir d’une régression linéaire (par exemple, les erreurs standard, t- tests, R ^ 2, etc.). Avec cette nouvelle fonction, il était plus judicieux de classer les paramètres comme suit: y, X, car cela résout le problème ay = Xb. En raison des similitudes entre ces deux fonctions, nous avons choisi de les faire se comporter de la même manière, avec les paramètres dans le même ordre.
Je suis allé et vient sur la décision de changer l'ordre pour la résolution des moindres carrés afin qu'il corresponde à la régression linéaire (), mais j'ai fini par faire l'appel en le changeant, car pour JMP 14 et ainsi de suite, cela semblait plus propre et plus intuitif.
Si vous voulez vraiment qu'un script soit exécuté dans JMP 13 ou JMP 14 à l'aide de la méthode Least Squares Solve (), vous pouvez effectuer les opérations suivantes:
Names Default To Here(1);
// generate data<BR />random reset(123);
x = j(10,2,random normal());
beta = [1, 2];
y = x * beta + j(10,1,random normal(0,.2) );
<BR />// check version
jmpver = num(left(jmpversion(),2));
if(jmpver >= 14,
Least Squares Solve(y, X, <<NOINTERCEPT></NOINTERCEPT> // where in latest versions, the parameter order is switched <BR /> // and an intercept is added by default
/*else if*/ jmpver == 13,
Least Squares Solve(X, y) <BR /> // this function was introduced in JMP 13.0 with limited functionality
);
Pour votre information, j'ai remarqué le changement d'index de script des deux versions de JMP.
Pouvez-vous donner quelques exemples de syntaxe ici qui se comporte différemment entre JMP 13 et JMP 14? Je ne suis au courant d'aucun changement apporté dans ce domaine, et certainement pas d'un changement qui aurait été fait exprès.
Désolé, je viens de relire votre message. Vous avez fait allusion au fait que vous parliez de la fonction de résolution des moindres carrés. Je regardais la plate-forme Fit Least Squares.
Laisse-moi enquêter.