Estoy tratando de obtener el inverso de la función GLog. ¿Hay manera de exportar la fórmula para esto?
Aquí hay un pequeño script que crea el que devolverá un valor no transformado de una fórmula transformada guardada. Dime si esto es algo que crees que es útil.
Names Default to Here( 1 );
dt=open("$SAMPLE_DATA\semiconductor Capability.jmp");
Dis =dt << Distribution(invisible,
Continuous Distribution(
Column( :NPN1 ),
Fit Distribution(
GLog(
Spec Limits(
LSL( 104.412948990151 ),
USL( 131.893493064355 ),
Target( 118.153221027253 )
)
)
)
),
SendToReport(
Dispatch(
{"NPN1"},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 4 ), {Font( "Arial Unicode MS", 9, "Plain" )} ),
DispatchSeg( LabelSeg( 5 ), {Font( "Arial Unicode MS", 9, "Plain" )} ),
DispatchSeg( LabelSeg( 6 ), {Font( "Arial Unicode MS", 9, "Plain" )} )}
)
)
);
Dis<< Fit Distribution( GLog( Save Transformed ) );
Dis << Delete Window;
Wait(0);
RawFormula = "";
RawFormula = char(column(N Cols(dt))<<GET formula=""> 0,
While( Contains( TheFormula, ColonColName ) > 0, TheFormula = Munger( TheFormula, 1, ColonColName, "(__Value__)" ) ),
Dialog(
" The column specified as",
"the Transformed Column does",
" not contain a reference",
" to the original column.",
" in it's formula.",
" ",
" Please rerun and select",
" the correct column"
);
Throw();
);
TheFormula;
);
/***********************************************************************/
/* */
/* The gettrans function evaluates the formula in the transformed */
/* and converts the formula into a generic form for repeated use in */
/* running of the script. */
/* */
/***********************************************************************/
gettrans = Function( { ColName,RawFormula,TheTarget},
{TheFormula, High, Low, TheTarget, TheMax, Themin, __value__},
TheFormula = getformula(ColName,RawFormula);
// The program uses successive approximations to determine the different
// parametrics. The way it works is that it calculates the needed parameter
// such as Mean, or Standard Deviation, and then by using successive
// approximations from the original column's values, and passing those
// values through the columns formula, when the approximation value matches
// the calculated value from the transformed column, the retransformed value
// has been found
// Set the extreem valuesH
High = 999999999999999999999999;
Low = -999999999999999999999999;
// Check to see if negative values fail
__value__= -1;
if(isMissing(try(eval(parse(theformula)),.))==1,Low=0;);
// Make a guess at the first value
__value__ = Mean( High, Low );
// Iterate the guessing for up to 100 times, adjusting by 1/2 on each loop
For( i = 1, i <= 100, i++,
TheResult = Eval( Parse( theformula ) );
If(
TheResult > TheTarget, High = __value__,
TheResult < TheTarget, Low = __value__,
Break()
);
If( High == Low, Break() );
__value__ = Mean( High, Low );
);
__value__; // Expose the return value
); // End of function gettrans
trans=gettrans(ColName,rawformula,Target);
show(column(dt,ColName)[1],trans);</GET>No soy consciente de eso. Lo que he usado en el pasado, es una pequeña pieza de JSL que usa una Búsqueda en el árbol B para hacer aproximaciones cercanas para determinar el resultado.