Sto cercando di ottenere la funzione Inverse of the Glog. C'è modo di esportare la formula per questo?
Ecco un piccolo script che crea che restituirà un valore non trasformato da una formula trasformata salvata. Dimmi se questa è una cosa che pensi sia utile
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>Non ne sono a conoscenza. Quello che ho usato in passato, è un piccolo frammento di JSL che usa una B Tree Lookup per fare approssimazioni ravvicinate per determinare il risultato.