1180_fr-FR
Calcul de l'aire entre deux ajustements de splines (bivarié)J'ai utilisé la spline d'ajustement de la plate-forme bivariée pour paramétrer les courbes spectrales fluorométriques et enregistré la formule de prédiction pour mes échantillons ainsi que les blancs. Je souhaite estimer l'aire sous le pic, ou plus précisément, l'aire entre les courbes de l'échantillon et le blanc dans un intervalle de longueur d'onde spécifié.
Je pourrais certainement le faire dans Matlab avec quelques efforts, mais ce serait bien de conserver l'ensemble du flux de travail dans JMP. Je pense que mon approche impliquerait de résumer des tranches dont la géométrie est déterminée par la matrice de formule de prédiction spline. Cependant, je ne sais pas comment interpréter et utiliser la formule de prédiction.
Des idées qui pourraient me conduire dans la bonne direction sur la façon de résoudre ce problème en utilisant JMP/JSL ? Merci!Re : Calcul de l'aire entre deux ajustements splines (bivarié)Ce script fonctionne, ce qui fait se demander pourquoi le mien ne l'a pas fait, car il est censé être identique au vôtre. Lorsque je les ai comparés, j'ai trouvé une faute de frappe dans le mien. Désolé pour la confusion. Et merci pour votre aide ! J'ai maintenant un script fonctionnel pour le traitement par lots de mes données de fluorométrie.
La seule chose ennuyeuse restante est la commande Maximize() qui interrompt le script s'il ne parvient pas à converger, c'est-à-dire trouver un maxima local. Je n'ai pas trouvé comment interagir avec la sortie d'erreur dans JSL (comme "si résultat == erreur, puis changez la tolérance et répétez, sinon Max = résultat" ou similaire).
Merci encore!Re : Calcul de l'aire entre deux ajustements splines (bivarié)Sur JMP 8.0.2 sous WinXP, en utilisant un exemple de table de coefficients Spline généré par JMP lorsque vous y êtes invité, le script suivant a fonctionné pour moi sans erreur :
Re : Calcul de l'aire entre deux ajustements splines (bivarié)Recherchez sur ce forum en utilisant : Variable de formule de colonne ou quelque chose de similaire pour trouver un exemple de la façon de créer avec succès une formule de colonne via un script qui fait référence à une colonne inconnue à l'avance. Je pense que cela aidera.Re : Calcul de l'aire entre deux ajustements splines (bivarié)Merci! Cela fonctionne parfaitement et j'essaie maintenant de le faire en JSL. Je peux poster le script ici une fois terminé, si quelqu'un est intéressé.
Au fait, il y a un problème avec la colonne cumulée. Si vous le faites manuellement en ajoutant la formule
If(Row() == 1, :Slice Area, :Cumulative Area[Row() - 1] + :Slice Area[Row()]) à une colonne "Cumulative Area", cela fonctionne. Cependant, si je le fais par script en utilisant la commande << set formula(), j'obtiens une erreur "Référence illégale (récursion) à la ligne....". La colonne est créée mais sans la formule.Re : Calcul de l'aire entre deux ajustements splines (bivarié)Extrait du Guide des statistiques et des graphiques 8.0.1 :
"La méthode des splines cubiques utilise un ensemble de polynômes du troisième degré assemblés de telle sorte que la courbe résultante soit continue et lisse au niveau des épissures (points de nœuds). L'estimation est effectuée en minimisant une fonction objectif qui est une combinaison de l'erreur de somme des carrés et d'une pénalité pour la courbure intégrée sur l'étendue de la courbe. Voir l'article de Reinsch (1967) ou le texte d'Eubank (1988) pour une description de cette méthode."
Lorsque vous ajustez une spline dans Ajuster Y par X, un menu déroulant triangulaire rouge apparaît avec un élément permettant d'enregistrer les coefficients. Cette action crée une nouvelle table avec les colonnes X, A, B, C, D. La colonne X contient les valeurs X uniques des données par ordre de tri croissant. Les 4 autres colonnes sont les coefficients du polynôme du troisième degré utilisé dans un intervalle commençant par la valeur de X pour la même ligne jusqu'à la valeur de X pour la ligne suivante. Si la valeur de X dans la même ligne est X1, alors le polynôme de l'intervalle est :
A + B*(X-X1) + C*(X-X1)^2 + D*(X-X1)^3
qui est utilisé pour X jusqu'à X2, le prochain "nœud". Pour trouver l'aire exacte sous cette courbe entre x1 et x2, intégrez simplement ce polynôme de X1 à X2 pour obtenir :
A*(X2-X1) + (B*(X2-X1)^2)/2 + (C*(X2-X1)^3)/3 + (D*(X2-X1)^4)/4
Vous devez créer une nouvelle colonne appelée Area Slice et insérer cette formule. Dans la formule JMP, utilisez X pour X1 et Lag(X,-1) pour X2. Ensuite, vous aurez une colonne de Area Slices. Vous pouvez ensuite ajouter toutes les tranches de zone pour obtenir la surface totale sous la courbe du début à la fin. Vous pouvez également créer une colonne de zones cumulées si vous le souhaitez.
Cela vous donne une valeur exacte, et non une approximation, pour la zone sous la spline.
Cela peut probablement être scripté mais je n'ai pas essayé.
Pour obtenir l'aire entre 2 de ces courbes, trouvez simplement l'aire de cette façon pour les deux et soustrayez l'une de l'autre.
Michael