Minimierungsfunktionsfehler: „Konvergenzfehler: ZIELFUNKTION KANN NICHT VERRINGERT WERDEN“Ich arbeite an einem Projekt in JMP 16, bei dem ich die „Minimieren“-Funktion verwende. Beim Ausführen der Funktion tritt häufig die Fehlermeldung „Konvergenzfehler: Ziel kann nicht verringert werden“ auf. Wenn man sich die Endergebnisse des Skripts ansieht, sind sie wie erwartet. Es scheint daher, dass der Fehler kaum Einfluss auf die Endergebnisse hat. Um jedoch die Gültigkeit des Skripts sicherzustellen, würde ich dennoch gerne die Gründe für den Fehler erfahren.Ich hatte Schwierigkeiten, Dokumentation zu diesem speziellen Fehler zu finden, und hoffte daher, dass jemand in der JMP-Community bei der Ermittlung der Ursache helfen könnte.
Mit der Option „<< Details( Both )“ für die Minimierungsfunktion wurde das folgende Bild des Protokolls erhalten:

Beste grüße,
Louis
InhaltsorganisationErgebnisse teilen und kommunizierenBetreff: Minimierungsfunktionsfehler: „Konvergenzfehler: ZIELFUNKTION KANN NICHT VERRINGERT WERDEN“Sie könnten ein Diagramm wie dieses erstellen:
expression=expr(Log10( (ChiSquare Quantile( alpha, df ) / df - Vratio) ^ 2 ));
alpha = 0.025;
Vratio = 0.39135;
df=2;
Minimize( expression, { df( 2, 1000 ) }, << Use Numeric Deriv( "true" ) );
show(df);
New Window( "Example",
Graph Box(xscale(-1,26),yscale(-10,0),
Pen Color( "red" );
Y Function( expression, df );
)
);
there is a sharp drop at the df found by the minimize function.there is a sharp drop at the df found by the minimize function.Es gibt einen starken Abfall bei df, der durch die Minimierungsfunktion ermittelt wurde.
Sie können den starken Abfall vergrößern und sehen, dass es rechnerisch schwierig sein wird, eine perfekte Antwort zu erhalten:
9 significant digits, and more to go.9 significant digits, and more to go.9 signifikante Ziffern und noch mehr.
gefundenes df = minimieren 13.3517718809044 ;
Ausweis erraten dass der Minimierungsalgorithmus einen Punkt auf der Kurve trifft, der den nächsten Punkt auf der anderen Seite des wahren Minimums findet, und sich möglicherweise sogar in einem Zyklus befindet, der über das Minimum springt. Bei einem anderen Startwert könnte es nahe genug kommen, dass man sich zum Stoppen entschließt. „Nähe genug“ ist auch ein Parameter, den Sie zur Minimierung (Toleranz) übergeben können.
Betreff: Minimierungsfunktionsfehler: „Konvergenzfehler: ZIELFUNKTION KANN NICHT VERRINGERT WERDEN“Wenn man sich den Profiler für die Funktion ansieht (siehe unten und die beigefügte Datentabelle), sieht es so aus, als würde Minimize() eine gute Antwort geben.
Vielleicht @chris_gotwalt1 kann eine Erklärung der Fehlermeldung geben, die Sie durch den Aufruf von Minimize() erhalten.

Betreff: Minimierungsfunktionsfehler: „Konvergenzfehler: ZIELFUNKTION KANN NICHT VERRINGERT WERDEN“Ich habe dieses Skript basierend auf Ihren Antworten verwendet.
Names Default to Here( 1 );
alpha = 0.025;
variance ratio = 0.94917 ;
df = 2;
expression = Expr( Log10( (Chi Square Quantile( alpha, df ) / df - variance ratio) ^ 2 ) );
Minimize( expression, { df( 2, 1000 ) }, << Use Numeric Deriv( "true" ) );
Mit den beiden Varianzverhältnissen, die Sie mir gegeben haben, erhalte ich Folgendes:
//:*/
Names Default to Here( 1 );
alpha = 0.025;
variance ratio = 0.39135;
df = 2;
expression = Expr( Log10( (Chi Square Quantile( alpha, df ) / df - variance ratio) ^ 2 ) );
Minimize( expression, { df( 2, 1000 ) }, << Use Numeric Deriv( "true" ) );
/*:
Optimization failed: Failed: Cannot Decrease Objective Function
-19.6490758040614
//:*/
Names Default to Here( 1 );
alpha = 0.025;
variance ratio = 0.94917 ;
df = 2;
expression = Expr( Log10( (Chi Square Quantile( alpha, df ) / df - variance ratio) ^ 2 ) );
Minimize( expression, { df( 2, 1000 ) }, << Use Numeric Deriv( "true" ) );
/*:
-2.91402948948765Betreff: Minimierungsfunktionsfehler: „Konvergenzfehler: ZIELFUNKTION KANN NICHT VERRINGERT WERDEN“Hallo Mark,
Danke für Ihre Antwort.
Um Ihre Fragen zu beantworten:
- Der Aufruf der Minimierungsfunktion lautet wie folgt:
minfun = Minimize (mfun, {df},<<USENUMERICDERIV></USENUMERICDERIV> - Der auszuwertende Ausdruck lautet wie folgt:
mfun = Expr( Log10( (ChiSquare Quantile( alpha, df ) / df - Vratio) ^ 2 ) );
- Die Parameter der Funktion werden wie folgt initialisiert:
- df: Dies wird auf 2 gesetzt, bevor die Funktion Minimize() ausgeführt wird
- Sowohl Alpha als auch Vratio werden zuvor im Skript berechnet. In der besonderen Situation, in der dies fehlschlägt, haben die Parameter die folgenden Werte:
- Alpha = 0,025
- Vratio = 0,39135
- Hier kann hinzugefügt werden, dass bei Verwendung von Vratio = 0,94917 die Warnung nicht auftritt.
Beste grüße,
Louis
Betreff: Minimierungsfunktionsfehler: „Konvergenzfehler: ZIELFUNKTION KANN NICHT VERRINGERT WERDEN“Welchen Minimize()-Funktionsaufruf haben Sie verwendet? Welcher Ausdruck soll ausgewertet werden? Was sind die Parameter im Ausdruck und wie werden sie initialisiert? Sind im JMP-Protokoll weitere Informationen verfügbar, wenn Sie diese Funktion aufrufen?