Contraintes des paramètres dans l'ajustement du modèle non linéaireJ'ajuste un modèle de croissance bi-exponentielle de la forme suivante :

Je voudrais contraindre les estimations de paramètres de sorte que dmax1< dmax2 et rate1
Existe-t-il un moyen de le faire dans la plate-forme non linéaire ?
Re : Contraintes des paramètres dans l'ajustement du modèle non linéaireMerci pour cette référence @Byron_JMP .Dans ce cas, ce n'est pas un modèle segmenté.Le processus physique réel consiste en deux réactions se produisant simultanément à deux vitesses différentes, produisant le même résultat de sortie.La sortie mesurée est la somme des deux sorties de réaction, mais chaque réaction se produit dans le même système de réaction, vous ne pouvez donc pas les mesurer indépendamment.
Re : Contraintes des paramètres dans l'ajustement du modèle non linéaireJ'avais écrit du JSL qui était presque identique à cela, et cela a résolu le problème.Merci d'avoir partagé.
Re : Contraintes des paramètres dans l'ajustement du modèle non linéaireJe me demande s'il serait plus facile de traiter les estimations après l'ajustement non linéaire sans contraintes. Je suppose que les estimations des paramètres dmax1 et rate1 iront ensemble et que les estimations des paramètres dmax2 et rate2 iront ensemble même si les estimations des paramètres dmax1 et rate1 ne sont pas toujours les premières. Ensuite, pour obtenir la commande souhaitée, vous pouvez simplement échanger la commande dans le tableau de données après avoir enregistré le tableau des estimations. Cet exemple montre ce que j'ai en tête :
Names Default to Here( 1 );
dt = New Table( "Double Exponential Models",
Add Rows( 20 ),
New Column( "dmax1",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "rate1",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "dmax2",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "rate2",
Values( J( 20, 1, Random Uniform() ) )
)
);
Wait( 5 );
For Each Row(
If( :rate1 > :rate2,
temp = :dmax1;
:dmax1 = :dmax2;
:dmax2 = temp;
temp = :rate1;
:rate1 = :rate2;
:rate2 = temp;
);
);
Re : Contraintes des paramètres dans l'ajustement du modèle non linéaireSue Walsh a parlé de ce type de modèle dans un papier chez JMP Discovery il y a quelque temps.
Les notes dans les diapositives sur les modèles segmentés sont un peu clairsemées, mais je pense que vous pourrez comprendre l'essentiel de la configuration.
Re : Contraintes des paramètres dans l'ajustement du modèle non linéaireC'est plus une question de commodité que de mathématiques.Le problème réel est que j'adapte un modèle non linéaire à plusieurs profils cinétiques générés dans le cadre d'un DOE.Le modèle non linéaire que j'ai montré est le modèle théorique qui, selon nous, décrit le processus, qui consiste en deux réactions distinctes, l'une "lente" et l'autre "rapide".La vitesse de réaction lente est d'environ 1/100 de la vitesse de réaction rapide.
Le problème est que lorsque j'adapte le modèle non linéaire à chaque profil, parfois le paramètre "rate1" estimé est le plus petit, et d'autres fois le paramètre "rate1" est le plus grand.JMP ne sait pas que je veux que le taux1 soit le taux lent.Lorsque j'enregistre les estimations de paramètres, je dois effectuer un traitement de données pour déterminer quel taux est le taux lent et quel taux est le taux rapide.En fin de compte, je souhaite utiliser les facteurs du DOE pour prédire la vitesse de réaction lente et la vitesse de réaction rapide.
Une partie de moi pense, cependant, que forcer cette contrainte peut également rendre les ajustements du modèle plus stables ?Mais peut-être pas.Je ne suis pas sûr.
Re : Contraintes des paramètres dans l'ajustement du modèle non linéaireSi vous pensez que cette hypothèse est vraie, alors le meilleur modèle devrait trouver de telles estimations sans contrainte, je pense. Les données sont la preuve contre cette hypothèse autrement.
le modèle personnalisé resterait le même. Je pense qu'il faudrait introduire la contrainte comme une pénalité à la fonction de perte. La pénalité est élevée lorsque la contrainte est violée.
Re: Contraintes paramétriques dans l'ajustement de modèles non linéairesExiste-t-il des mises à jour concernant les contraintes dans l'ajustement non linéaire ?
Il y a des paramètres min/max en bas du rapport, mais lorsque je clique sur « Go », le résultat de l'ajustement est en dehors des valeurs min/max.

Re: Contraintes paramétriques dans l'ajustement de modèles non linéairesSalut @hogi ,
Quel jeu de données avez-vous utilisé pour cela ?
Merci,
Ben
Re: Contraintes paramétriques dans l'ajustement de modèles non linéairesSalut @Ben_BarrIngh ,
En fait, j'essayais de faire correspondre deux pics et j'ai essayé de limiter la plage d'ajustement pour les centres.
Difficile d'ajuster les pics lorsque les queues ne correspondent pas à la courbe d'ajustement ; )
En jouant avec l'ajustement, je me suis demandé si je pouvais l'optimiser en limitant la plage du balayage x1/x2.
...et je me demandais s'il existait un moyen, au sein de la plateforme, de restreindre son utilisation.
) dt = New Table( "spectra",
Add Rows( 200 ),
New Column( "X",
Formula( Row() )
),
New Column( "input",
Formula(
Parameter(
{h1 = 1, W = 40, h2 = 1},
(h1 * W ^ 2) / ((:X - 70) ^ 2 + W ^ 2) + (h2 * W ^ 2) / ((:X - 130)
^ 2 + W ^ 2)
)
)
),
New Column( "fit",
Formula(
Parameter(
{h1 = 1, W = 40, h2 = 1, x1 = 0, x2 = 200},
h1 * Exp( -(:X - x1) ^ 2 / (2 * W ^ 2) ) + h2 *
Exp( -(:X - x2) ^ 2 / (2 * W ^ 2) )
)
)
)
);
dt << Nonlinear( Y( :input ), X( :fit )
Re: Contraintes paramétriques dans l'ajustement de modèles non linéairesSalut @hogi ,
Vous devez d'abord définir les limites des paramètres (triangle rouge) avant de lancer le calcul afin d'éviter tout dépassement de valeurs. Bien que les valeurs minimales et maximales devraient s'actualiser dans le tableau ci-dessous, il peut être utile de signaler le problème à support@jmp.com.
Cela répond-il à ce que vous essayez d'obtenir ?
Merci,
Ben
Re: Contraintes paramétriques dans l'ajustement de modèles non linéairesAh, super, merci 
Quelqu'un pourrait-il marquer la réponse de @Ben_BarrIngh comme « solution » ?

Re: Contraintes paramétriques dans l'ajustement de modèles non linéaires@Ben_BarrIngh , question complémentaire :
Lorsque j'utilise « By » pour ajuster plusieurs spectres, existe-t-il une astuce pour définir des contraintes globales et le verrouillage ?

quelque chose comme :
new column ("by",Nominal, set each value(mod(row(),3)));
Nonlinear( Y( :input ), X( :fit ), by(:by),
SendToByGroup( Bygroup Default,
Parameter Bounds(
h1( 0, 2 ),
x1( 0, 100),
h1( 0, 2 ),
x2( 100, 200)
) )
)
Re: Contraintes paramétriques dans l'ajustement de modèles non linéairesSolution de contournement pour les contraintes globales :
new column ("by",Nominal, set each value(mod(row(),3)));
nl = Nonlinear( Y( :input ), X( :fit ), by(:by) );
nl << Parameter Bounds(
h1( 0, 2 ),
x1( 0, 100 ),
h2( 0, 2 ),
x2( 100, 200 )
)
L'écluse ne semble pas être enregistrée.
On pourrait définir des contraintes avec min=max.