Re: Estrarre l'intervallo dal graficoNon conosco un metodo diretto, ma qui ci sono alcune idee.Alcuni richiederebbero un po' di lavoro da scrivere e probabilmente sospetto che nessuno sarebbe molto più veloce per piccoli problemi.
- Salva una formula per ciascuna di queste righe nella tabella dati estraendo i parametri e gli errori standard dalla tabella nel report bivariato e quindi creando una colonna con la formula appropriata.Quindi usa l'ottimizzatore integrato nel profiler per risolverli.
- Salva relativamente pochi punti usando il metodo della forza bruta e poi adatta loro una nuova curva usando il modello di adattamento, e poi salvare la formula di previsione e risolvere con l'ottimizzatore.
- Adatta utilizzando invece il modello di adattamento in cui dovresti essere in grado di estrarre direttamente la formula di previsione, ma forse non il CI.
- Usa il metodo della forza bruta e interpola tra i pochi punti più vicini, lineare tra gli ultimi due o, per questo problema, quadratico tra i tre più vicini.
Estrai l'intervallo di fattori dal grafico bivariatoCome posso estrarre in modo efficiente i punti di incrocio di questa curva e il suo 95% CI con un valore Y arbitrario.

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 )}
)
)
);Quindi vorrei ottenere i valori del rapporto in cui la curva e il suo 95% CI incrocia +/- 1,96 (quindi 6 valori in totale). Esistono soluzioni migliori della forza bruta a cui riesco a pensare: scaricare le previsioni e la formula del limite di confidenza media in una tabella e aggiungere righe con valori alla tabella per vedere quando supera i limiti?
ScriptingRe: Estrarre l'intervallo di fattori dal grafico bivariatoPotresti essere in grado di utilizzare la funzione Minimize() e l'espressione per il limite di confidenza. Vedi l'aiuto per metodi di ottimizzazione .
Re: Estrarre l'intervallo di fattori dal grafico bivariato@markbailey grazie, ho provato a provarlo ma la sintassi non mi è chiara.
Questo è quanto ho ottenuto, ma ora ho bisogno di capire come alimentarlo con i giusti vincoli di ottimizzazione:
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), {})L'ultima parte non funziona. Grazie per l'aiuto!
Re: Estrarre l'intervallo di fattori dal grafico bivariatoMi chiedo un altro approccio. Cosa succede se si utilizza il Profiler di previsione e una funzione di desiderabilità dell'obiettivo di corrispondenza con la risposta dell'obiettivo? Quindi puoi semplicemente scegliere la media prevista e la stima dell'intervallo di confidenza al 95% della media.
Potrei essermi allontanato dal tuo obiettivo originale...
Re: Estrarre l'intervallo di fattori dal grafico bivariatoIl tuo codice era un po' disordinato. L'ho ripulito e ho finito l'esempio, anche se potrei ancora perseguire l'obiettivo sbagliato.
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: Estrarre l'intervallo di fattori dal grafico bivariatoSì, il problema con quello è che di solito ci sono più incroci con il valore target (uno a sinistra e uno a destra) e con il massimizzatore di desiderabilità ottieni casualmente uno dei due.
Ho provato le previsioni inverse sotto il modello di adattamento ma questo non supporta i termini quadratici.