最小化関数エラー:「収束の失敗:目的関数を減らすことができません」「最小化」機能を使用するJMP16のプロジェクトに取り組んでいます。 関数を実行しているときに、「収束の失敗:目的を減らすことができません」というエラーが頻繁に発生します。 スクリプトの最終結果を見ると、期待どおりです。 したがって、エラーは最終結果にほとんど影響を与えないようです。 ただし、スクリプトの有効性を確保するために、エラーの背後にある理由を知りたいと思います。この特定のエラーに関するドキュメントを見つけるのに苦労したので、JMPコミュニティの誰かが原因を特定するのを手伝ってくれることを望みました。
最小化機能に「<

よろしくお願いします、
ルイ
分析スクリプティングRe:最小化関数エラー:「収束の失敗:目的関数を減らすことができません」次のようなグラフを作成できます。
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.最小化関数によって検出されたdfに急激な低下があります。
急激な低下を拡大すると、完全な答えを得るのが計算上困難になることがわかります。
9 significant digits, and more to go.9 significant digits, and more to go.有効数字9桁、その他。
見つかったdfを最小化= 13.3517718809044 ;
私は推測してみて最小化アルゴリズムは、真の最小値の向こう側にある次のポイントを見つける曲線上のポイントにヒットし、最小値を越えてバウンスするサイクルにある可能性もあります。 開始値が異なると、停止することを決定するのに十分に近づく可能性があります。 十分に近いことも、最小化(許容範囲)するために渡すことができるパラメーターです。
Re:最小化関数エラー:「収束の失敗:目的関数を減らすことができません」関数のプロファイラー(以下および添付のデータテーブルを参照)を見ると、Minimize()が良い答えを出しているように見えます。
多分@ chris_gotwalt1 Minimize()の呼び出しから受け取ったエラーメッセージの説明を提供できます。

Re:最小化関数エラー:「収束の失敗:目的関数を減らすことができません」私はあなたの答えに基づいてこのスクリプトを使用しました。
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つの分散比を使用して、次のようになります。
//:*/
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.91402948948765Re:最小化関数エラー:「収束の失敗:目的関数を減らすことができません」ハイマーク、
ご返信ありがとうございます。
あなたの質問に答えるには:
- 最小化関数呼び出しは次のとおりです。
minfun = Minimize (mfun, {df},<<USENUMERICDERIV></USENUMERICDERIV> - 評価する式は次のとおりです。
mfun = Expr( Log10( (ChiSquare Quantile( alpha, df ) / df - Vratio) ^ 2 ) );
- 関数のパラメーターは次のように初期化されます。
- df:Minimize()関数を実行する前にこれは2に設定されます
- alphaとVratioはどちらも、スクリプトで以前に計算されています。 失敗する特定の状況では、パラメーターの値は次のとおりです。
- アルファ=0.025
- Vratio = 0.39135
- ここで、Vratio = 0.94917を使用しても、警告が表示されないことを追加できます。
よろしくお願いします、
ルイ
Re:最小化関数エラー:「収束の失敗:目的関数を減らすことができません」使用したMinimize()関数呼び出しとは何ですか? 評価する式は何ですか? 式のパラメーターは何ですか?また、それらはどのように初期化されますか? この関数を呼び出すときに、JMPログで利用できる情報は他にありますか?