Re:グラフから範囲を抽出します直接的な方法はわかりませんが、ここにいくつかのアイデアがあります。スクリプトを作成するのに少し手間がかかるものもありますが、小さな問題に対してこれほど高速なものはないと思います。
- 二変量レポートのテーブルからパラメーターと標準誤差を取得し、適切な式を使用して列を作成することにより、これらの各行の式をデータテーブルに保存します。次に、プロファイラーに組み込まれているオプティマイザーを使用して、それぞれを解決します。
- 力ずくの方法を使用して比較的少数のポイントを保存し、フィットモデルを使用してそれらに新しい曲線をフィットします。それから予測式を保存し、オプティマイザーで解きます。
- 代わりに、予測式を直接抽出できるはずのフィットモデルを使用してフィットしますが、CIは抽出できない可能性があります。
- 強引な方法を使用して、最後の2つの間で線形、またはこの問題の場合は最も近い3つの間で2次のいずれかで、最も近いいくつかの点の間を補間します。
二変量グラフから因子範囲を抽出するこの曲線とその95%CIの交差点を任意のY値で効率的に抽出するにはどうすればよいですか。

dt = Open( "$sample_data/Growth.jmp" );
biv = Bivariate(
Y( :age ),
X( :ratio ),
Fit Line( {Line Color( {204, 121, 41} )}, save studentized residuals ),
SendToReport(
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Grid Line Order( 3 ), Reference Line Order( 4 )}
)
)
);
biv << (Curve[1] << Save Studentized Residuals);
biv2 = Bivariate(
Y( :Studentized Residuals age ),
X( :ratio ),
Fit Polynomial( 2, {Confid Shaded Fit( 1 ), Line Color( {212, 73, 88} )} ),
SendToReport(
Dispatch(
{},
"ratio",
ScaleBox,
{Min( 0.2796875 ), Max( 1.2666259765625 ), Inc( 0.2 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Studentized Residuals age",
ScaleBox,
{Add Ref Line( 1.96, "Solid", "Black", "", 1 ),
Add Ref Line( -1.96, "Solid", "Black", "", 1 )}
)
)
);したがって、曲線とその95%CIが+/- 1.96と交差する比率値を取得したいと思います(合計6つの値)。 私が考えることができる強引な力よりも優れた解決策はありますか?予測値と平均信頼限界式をテーブルにダンプし、値を含む行をテーブルに追加して、制限を超えたときを確認しますか?
スクリプティングRe:二変量グラフから因子範囲を抽出しますMinimize()関数と信頼境界の式を使用できる場合があります。 のヘルプを参照してください最適化手法。
Re:二変量グラフから因子範囲を抽出します@markbaileyおかげで、私はそのショットを与えようとしましたが、構文は私にはわかりません。
これは私が得た限りですが、今度はそれを適切な最適化制約に供給する方法を理解する必要があります。
Names Default To Here( 1 );
dt = Open( "$sample_data/Growth.jmp" );
biv = Bivariate(
Y( :age ),
X( :ratio ),
Fit Line( {Line Color( {204, 121, 41} )}, save studentized residuals ),
SendToReport(
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Grid Line Order( 3 ), Reference Line Order( 4 )}
)
)
);
biv << (Curve[1] << Save Studentized Residuals);
biv << close window();
biv2 = Bivariate(
Y( :Studentized Residuals age ),
X( :ratio ),
Fit Polynomial( 2, {Confid Shaded Fit( 1 ), Line Color( {212, 73, 88} )} ),
SendToReport(
Dispatch(
{},
"ratio",
ScaleBox,
{Min( 0.2796875 ), Max( 1.2666259765625 ), Inc( 0.2 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Studentized Residuals age",
ScaleBox,
{Add Ref Line( 1.96, "Solid", "Black", "", 1 ),
Add Ref Line( -1.96, "Solid", "Black", "", 1 )}
)
)
);
biv << (Curve[1] << Mean Confidence Limit Formula);
f =column(dt, n cols(dt)) << Get Formula;
fs = substitute(name expr(f), expr(:ratio), expr(x1));
/*A = [1 5];
b = [-1.96, 1.96];
minFun = Constrained Maximize(
f,
{x1( 0, 5 )},
<<LESSTHANEQ></LESSTHANEQ>
minimize(name expr(f), {})最後の部分は機能しません。 ご協力いただきありがとうございます!
Re:二変量グラフから因子範囲を抽出します別のアプローチが気になります。 予測プロファイラーと一致ターゲットの望ましさ関数をターゲット応答で使用するとどうなりますか? 次に、予測された平均と平均の95%信頼区間の推定値を選択できます。
私はあなたの当初の目標から外れたかもしれません...
Re:二変量グラフから因子範囲を抽出しますあなたのコードは少し面倒でした。 私はそれをクリーンアップして例を終了しましたが、それでも間違った目標を追求している可能性があります。
Names Default To Here( 1 );
// example data set
dt = Open( "$sample_data/Growth.jmp" );
// fit first-order polynomial model to response
biv = Bivariate(
Y( :age ),
X( :ratio ),
Fit Line
);
// save residuals for next step
biv << (Curve[1] << Save Studentized Residuals);
biv << Close Window();
// fit second-order polynomial model to residuals
biv = Bivariate(
Y( :Studentized Residuals age ),
X( :ratio ),
Fit Polynomial( 2, {Confid Shaded Fit( 1 ), Line Color( {212, 73, 88} )} )
);
// save formulas for lower / upper 95% confidence bound
biv << (Curve[1] << Mean Confidence Limit Formula);
// get upper formula
f = Column( dt, N Cols( dt ) ) << Get Formula;
// replace predictor name with x
fs = Substitute( Name Expr( f ), Expr( :ratio ), Expr( x ) );
// initialize x, could get x that predicts mean residual = 0
x = 0.5;
// minimize expression that is Abs( residual ), or mean = 0
fa = Insert( Expr( Abs() ), Name Expr( fs ) );
Minimize( fa, { x } );
Show( x );Re:二変量グラフから因子範囲を抽出しますええ、その問題は、通常、ターゲット値(左側に1つ、右側に1つ)との交差が複数あり、望ましさの最大化機能を使用すると、2つのうちの1つをランダムに取得することです。
近似モデルで逆予測を試しましたが、2次項はサポートされていません。
Re:二変量グラフから因子範囲を抽出しますええ、これは極小値を見つけるために正確に機能しますが、そこから1.96で次の交差点に到達するのはまだ困難です。 値が1.96を超えるまで、曲線を上る必要があります。
これを一時的に解決するために、わずかなステップで、値が制限(または最大ステップ数)を超えるまで両方向に出力される関数を作成しましたが、JMPには実装するソルバー関数があると予想していました。より良いアルゴリズム(非線形プラットフォームに組み込まれているものなど)。 今のところ私は必要なものを持っていると思いますが、私はそれを行うためのより良い方法を常に開いています。
Re:二変量グラフから因子範囲を抽出しますこれは、プロファイラーに組み込まれているオプティマイザーを使用して行うことができます。ターゲットに一致するように応答制限を設定してから、上限値と下限値を見つけるには、リセット係数グリッドを使用して、最小値より上または下のいずれかで検索する値の範囲を定義します。
Profiler(
Y( :Lower 95% Mean Studentized Residuals age ),
Profiler(
1,
Desirability Functions( 1 ),
Lower 95% Mean Studentized Residuals age <<
Response Limits(
{Lower( -0.04, 0.0183 ), Middle( 1.96, 1 ), Upper( 3.96, 0.0183 ),
Goal( "Match Target" ), Importance( 1 )}
),
Term Value( ratio( 0.8, Min( 0 ), Max( 0.8 ), Lock( 0 ), Show( 1 ) ) )
),
SendToReport(
Dispatch(
{"Prediction Profiler"},
"1",
ScaleBox,
{Min( 0 ), Max( 0.8 ), Inc( 0.2 ), Minor Ticks( 0 )}
)
)
) << Maximize Desirability;
Profiler(
Y( :Lower 95% Mean Studentized Residuals age ),
Profiler(
1,
Desirability Functions( 1 ),
Lower 95% Mean Studentized Residuals age <<
Response Limits(
{Lower( -0.04, 0.0183 ), Middle( 1.96, 1 ), Upper( 3.96, 0.0183 ),
Goal( "Match Target" ), Importance( 1 )}
),
Term Value( ratio( 1.52, Min( 0.8 ), Max( 2 ), Lock( 0 ), Show( 1 ) ) )
),
SendToReport(
Dispatch(
{"Prediction Profiler"},
"1",
ScaleBox,
{Min( 0.8 ), Max( 2 ), Inc( 0.2 ), Minor Ticks( 0 )}
)
)
) << Maximize Desirability;
また、1.96を減算し、残余を最小化して同じ結果を得るだけで、最小化関数に送信する式を変更できるはずです。何らかの理由で、許容誤差を調整した後でも、わずかに異なる値が得られます(プロファイラーv 1.03では1.07、最小化)。
fa = Insert( Expr( Abs() ), parse( "abs( " || char( Name Expr( fs ) ) || " - 1.96 )" ) );
// find lower value
x = 0.2;
Minimize( fa, { x(0.2,0.8) } );
Show( x );
// find upper value
x = 1;
Minimize( fa, { x(0.8,1.5) } );
Show( x );