Ciao a tutti,
Mi grattai la testa cercando di scoprire perché una sceneggiatura che avevo pubblicato qui non funzionava sul computer di qualcun altro quando funzionava perfettamente sulla mia. Si scopre che l'ordine delle variabili X e Y nella funzione Least Squares Solve in JSL è stato invertito in JMP 14 rispetto a JMP 13. Naturalmente, questo rende il mio script iniziale inutilizzabile per chiunque usi una versione JMP <14, il che è un po 'fastidioso. Sono questi piccoli cambiamenti documentati da qualche parte?
Cordiali saluti, Yves
Mille grazie Milo per la tua spiegazione dettagliata. Ancora una domanda: sembra che in JMP 14, se la matrice X è aumentata (con una colonna iniziale di 1s) è irrilevante per la soluzione. È così anche con JMP 13? Non ho più accesso a JMP 13 tranne che tramite un utente indipendente che stava usando il mio script. Seguirò la tua soluzione per quanto riguarda il controllo della versione di JMP.
Grazie ancora
Sarebbe molto frustrante. Mi dispiace sentire che hai scoperto la modifica della funzione JSL Least Squares Solve ().
Scambiare l'ordine dei parametri in una funzione JSL come questa è straordinariamente raro. Quando una modifica interrompe la compatibilità con le versioni precedenti, la elenchiamo nella Note di rilascio .
Siamo in un ambiente di sviluppo attivo in JMP, ma facciamo del nostro meglio per mantenere anche la compatibilità con le versioni precedenti. Hai ragione che l'ordine dei parametri è cambiato da JMP 13.0 (quando è stata introdotta la funzione) a 14.0. Non solo, ma per impostazione predefinita, Least Squares Solve () in 14.0 include un termine di intercettazione.
C'erano un numero di motivi che motiva il cambiamento. Innanzitutto, Least Square Solve () è stato introdotto (da me) in JMP 13.0, quindi non è stato in circolazione a lungo. In secondo luogo, ho cambiato l'ordine e il termine dell'intercetto predefinito in tandem in modo che in quasi tutti i casi d'uso, Least Squares Solve () dovrebbe comportare uno script non in esecuzione piuttosto che in numeri errati, l'ultimo dei quali sarebbe particolarmente difficile da scoprire. In terzo luogo, in 14.0, ho introdotto la funzione JSL Regressione lineare (), che risolve essenzialmente lo stesso problema di Least Squares Solve (), ma con un accesso più intuitivo allo standard output da una regressione lineare (ad es. Errori standard, t- test, R ^ 2, ecc.). Con questa nuova funzione, ha più senso ordinare i parametri come y, X, poiché risolve il problema ay = Xb. A causa delle somiglianze tra queste due funzioni, abbiamo scelto di comportarsi allo stesso modo, con i parametri nello stesso ordine.
Sono andato avanti e indietro sulla decisione di cambiare l'ordine di Least Squares Solve () in modo che corrisponda a Regressione lineare (), ma ho finito per effettuare la chiamata a cambiarlo, dal momento che per JMP 14 e in poi, sembrava più pulito e più intuitivo.
Se vuoi veramente che uno script venga eseguito in JMP 13 o JMP 14 usando Least Squares Solve (), puoi fare qualcosa del tipo:
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
);
Cordiali saluti, ho notato la modifica dell'Indice Scripting delle due versioni di JMP.
Potete fornire qui alcuni esempi della sintassi che si comporta diversamente tra JMP 13 e JMP 14? Non sono a conoscenza di alcun cambiamento che è stato apportato in quest'area, certamente non è stato fatto apposta.
Scusa, ho appena riletto il tuo messaggio. Mi sono perso che ti riferivi alla funzione Least Squares Solve (). Stavo guardando la piattaforma Fit Least Squares.
Lasciami indagare.