Hola a todos,
Me rasqué la cabeza tratando de descubrir por qué un script que publiqué aquí no estaba funcionando en la computadora de otra persona cuando estaba funcionando perfectamente en la mía. Resulta que el orden de las variables X e Y en la función de resolución de mínimos cuadrados en JSL se ha invertido en JMP 14 en relación con JMP 13. Naturalmente, esto hace que mi script inicial sea inutilizable para cualquiera que use una versión JMP <14, lo cual es un poco molesto. ¿Están estos cambios sutiles documentados en alguna parte?
Saludos cordiales, Yves
Muchas gracias Milo por tu detallada explicación. Solo una pregunta más: parece que en JMP 14, si la matriz X está aumentada (con una columna inicial de 1s) es irrelevante para la solución. ¿Es este el caso también con JMP 13? Ya no tengo acceso a JMP 13, excepto a través de un usuario independiente que estaba usando mi script. Seguiré su solución con respecto a verificar qué versión de JMP es.
Gracias de nuevo
Eso sería muy frustrante. Lamento escuchar que fue así como descubrió el cambio en la función JSL Resolver cuadrados mínimos ().
Cambiar el orden de los parámetros en una función JSL como esta es extraordinariamente raro. Cuando un cambio interrumpe la compatibilidad con versiones anteriores, lo enumeramos en el Notas de lanzamiento .
Estamos en un entorno de desarrollo activo en JMP, pero hacemos todo lo posible para mantener la compatibilidad con versiones anteriores. Tiene razón en que el orden de los parámetros cambió de JMP 13.0 (cuando se introdujo la función) a 14.0. No solo eso, sino que de forma predeterminada, la resolución de mínimos cuadrados () en 14.0 incluye un término de intercepción.
Hubo una serie de razones que motivaron el cambio. Primero, Least Square Solve () fue introducido (por mí) en JMP 13.0, por lo que no estuvo en circulación por mucho tiempo. En segundo lugar, cambié el orden y el término de intercepción predeterminado en tándem para que, en casi todos los casos de uso, la resolución de mínimos cuadrados () represente que un script no se ejecute en lugar de números incorrectos, el último de los cuales sería particularmente difícil de descubrir. En tercer lugar, en 14.0, introduje la función Regresión lineal de JSL (), que esencialmente resuelve el mismo problema que la Solución de mínimos cuadrados (), pero con un acceso más fácil de usar a la salida estándar de una regresión lineal (por ejemplo, errores estándar, t- pruebas, R ^ 2, etc.). Con esta nueva función, tenía más sentido ordenar los parámetros como y, X, ya que resuelve el problema ay = Xb. Debido a las similitudes entre estas dos funciones, elegimos que se comportaran de la misma manera, con los parámetros en el mismo orden.
Fui de un lugar a otro en la decisión de cambiar la ordenación de la resolución de mínimos cuadrados () para que coincidiera con la Regresión lineal (), pero terminé haciendo la llamada al cambiarla, ya que para JMP 14 y más, parecía más limpio y más intuitivo.
Si realmente quieres que un script se ejecute en JMP 13 o JMP 14 usando Least Squares Solve (), podrías hacer algo como:
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
);
Para su información, noté el cambio en el índice de secuencias de comandos de las dos versiones de JMP.
¿Puede proporcionar algunos ejemplos de la sintaxis aquí que se comporta de manera diferente entre JMP 13 y JMP 14? No estoy al tanto de ningún cambio que se haya hecho en esta área, ciertamente no se hizo a propósito.
Lo siento, acabo de releer su mensaje. Extrañé que te referías a la función Resolver cuadrados mínimos (). Estaba mirando la plataforma Fit Least Squares.
Déjame investigar.