Script pour enregistrer les résidus de l'ajustement splineBonjour,
Quelqu'un sait comment écrire un script pour sauvegarder les résidus (ou les prévisions) en tant que nouvelle colonne pour l'ajustement des splines ? C'est facile si je le fais manuellement, il suffit de sélectionner Enregistrer les résidus dans le triangle rouge déroulant. Je sais comment écrire des scripts pour enregistrer les résidus en tant que nouvelle colonne pour l'ajustement du revêtement à l'aide de Fit Model. Cependant, j'ai souvent besoin d'ajuster les données de tendance temporelle à l'aide d'un ajustement x spline standardisé, et je ne sais pas s'il existe un moyen plus simple de le faire. Mon objectif final est d'acquérir des résidus ou des prévisions pour plusieurs variables dans une boucle, donc un simple script aidera beaucoup.
Merci!!

Re : Script pour enregistrer les résidus de l'ajustement SplineSalut Jim
Une résolution/un correctif pour que nous puissions enregistrer les résidus dans la v14 ?
Merci pour l'aide
Re : Script pour enregistrer les résidus de l'ajustement SplinePeng,
Oui, cela semble incohérent, cependant, je suppose que cela est fait exprès pour comparer les prédictions (par exemple, les mâles constituent un ensemble de résistances pour les prédictions basées sur les femelles et vice versa.
Pour créer une seule colonne de prévisions basée sur le modèle Group By, créez une nouvelle colonne avec une formule ou définissez chaque expression de valeur.
If( :sex=="M", colonne pour les prédictions masculines, :sex=="F", colonne pour les prédictions masculines) ;
Si vous voulez une colonne qui ressemble aux colonnes résiduelles, créez une colonne pour les hommes et utilisez une expression comme
If( :sex=="M", colonne pour les prédictions masculines, vide() );
Faites ensuite de même pour les femelles.
Re : Script pour enregistrer les résidus de l'ajustement SplineCool, c'est génial !!
Juste encore une question :
Quand je fais obj<SPAN class="token operator"> <</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token punctuation"> (</SPAN> Courbe<SPAN class="token punctuation"> [</SPAN> je<SPAN class="token punctuation"> ]</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token operator"> <</SPAN><SPAN class="token messages"> Enregistrer les résidus</SPAN><SPAN class="token punctuation"> )</SPAN> et regrouper par (:sex), JMP a calculé les résidus pour "M" et "F" et les a enregistrés dans différentes colonnes avec quelques cellules vides. C'est pourquoi "transposer" est nécessaire pour obtenir tous les résidus dans une seule colonne. Cependant, si je <
Merci
Re : Script pour enregistrer les résidus de l'ajustement SplineJ'aime beaucoup la nouvelle référence de sous-ensemble de table JMP 13. Cependant, il existe toujours une méthode simple pour obtenir les valeurs avec le message Get as Matrix. La syntaxe clé est dt << get as matrix( list | index ).Il n'y a pas de fonction max par ligne, mais il existe une fonction VMax qui est un max par colonne.J'ai testé cela dans JMP 12.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ), GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
//Find how many in a group. We know it is 2 for Big Class
summarize(_by = By(:sex));
//Find out how many columns before adding residuals
ncpre = ncol(dt);
_nby = nitems(_by);
for(i=1, i<=_nby, i++,
obj << (Curve[i] << Save Residuals);
wait(0);
);
idx = ncpre+1::(ncpre+_nby);
cmat = Transpose(VMax(Transpose(dt << get as matrix(idx)))); //matrix _nby x nrow(dt)
/*the previous line of code is performing these tasks
- get the columns of residuals into a matrix of size nrow(dt) x _nby
- create the transpose: coloumns are rows and rows are columns, size _nby x nrow(dt)
- Vmax is a vertical maximum, it finds the max of each column (previously rows)
returns a 1 x nrow(dt) vector, a row vector
- transpose again so it is a column vector
*/
//create a single column of residuals
resids = dt << New Column("Weight v Height Spline Residuals",
Numeric, Continuous, Values( cmat )
);
Re : Script pour enregistrer les résidus de l'ajustement SplineMerci à tous pour les solutions !! Le la syntaxe de plusieurs sous-sections d'une table de données ne fonctionne pas dans JMP12. J'ai lu une autre discussion sur le retour de la valeur maximale de plusieurs lignes, une méthode similaire a également été appliquée pour JMP13. Existe-t-il un meilleur moyen d'acquérir des valeurs maximales sur plusieurs lignes dans JMP12 ? Écrire une formule pour comparer les valeurs de ligne pour un nombre inconnu de lignes ne semble pas efficace. Merci!
Re : Script pour enregistrer les résidus de l'ajustement SplineJim,
J'ai remarqué le même problème pour JMP 14. Le support JMP indique qu'il est corrigé dans JMP 14.1 (août ?).
Voici une petite modification du script de Jim. Cela crée une seule colonne de résidus. Il utilise la nouvelle syntaxe (dans JMP 13) pour plusieurs sous-sections d'une table de données. Il s'agit d'obtenir les colonnes résiduelles par ligne et de trouver le maximum (en fait, cela obtient la seule valeur non vide).
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ), GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
//Find how many in a group. We know it is 2 for Big Class
summarize(_by = By(:sex));
//Find out how many columns before adding residuals
ncpre = ncol(dt);
_nby = nitems(_by);
for(i=1, i<=_nby, i++,
obj << (Curve[i] << Save Residuals);
wait(0);
);
idx = ncpre+1::(ncpre+_nby);
//create a single column of residuals
resids = dt << New Column("Weight v Height Spline Residuals",
Numeric, Continuous,
<< Set Each Value( max(dt[row(),idx]) )
);
Re : Script pour enregistrer les résidus de l'ajustement SplineChaque « Fit » distinct spécifié doit avoir ses résidus enregistrés séparément.C'est le sous-strip sur la référence "Curve[]" qui gère cela.L'exemple ci-dessous a un GroupBy(:Sex) qui produira un ajustement pour les femmes, "F" et un pour les hommes, "M".Ainsi, 2 "Save Residuals" doivent être émis.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ),
GroupBy( :sex),
Fit Spline( 0.1, Standardized )
);
obj << (Curve[1] << Save Residuals);
obj << (Curve[2] << Save Residuals);
Alors que je testais ce code pour votre exemple.J'ai découvert que JMP 14 ne fonctionne pas pour enregistrer les résidus pour un ajustement spline.Je vais transmettre cela au support JMP en tant que bug.
Re : Script pour enregistrer les résidus de l'ajustement SplineMerci Jim! Ça marche. Si je dois ajouter « GroupBy » dans Bivariate, est-il possible de sauvegarder tous les résidus ? Il semble que JMP ne conserve que la dernière ligne d'ajustement. Merci!
<SPAN class="token function">Names Default To Here</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
dt <SPAN class="token operator">=</SPAN> <SPAN class="token function">Open</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"$SAMPLE_DATA/Big Class.jmp"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
obj <SPAN class="token operator">=</SPAN> Bivariate<SPAN class="token punctuation">(</SPAN>
Y<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Weight <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
X<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Height <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,<BR /></SPAN> GroupBy( :Team),
Fit Spline<SPAN class="token punctuation">(</SPAN> 0.1, Standardized <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
obj <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> <SPAN class="token punctuation">(</SPAN>Curve<SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Save Residuals</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Re : Script pour enregistrer les résidus de l'ajustement SplineVous pouvez trouver ces types de syntaxe dans l'index des scripts
Aide==>Index des scripts==>Bivarié==>Courbe bivariée
Voici l'exemple d'index de script de cette entrée
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = Bivariate(
Y( :Weight ),
X( :Height ),
Fit Polynomial( 3 )
);
obj << (Curve[1] << Save Residuals);