Subscribe Bookmark RSS Feed

Nonlinear Path Parametric Degradation with one global parameter and one to be Fit by System ID

galactus3000

Contributor

Joined:

Nov 9, 2016

I am gearing up to run a nonlinear path parametric degradation analysis.

I have one parameter, n, that I want to fit Globally, but another parameter b0 I want to Fit by System ID

So I want the second part of this (the global fit to n):

 

Capture1.JPG

but the first parameter b0, fit like this:

 

Capture2.JPG

 

I've mocked up what I'd ideally be able to do:

 

Capture3.JPG

where the parameter b0 is indexed by DUT but the parameter n is not.

 

Any help here would be vastly appreciated.

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
galactus3000

Contributor

Joined:

Nov 9, 2016

Solution

Good idea ... unfortunately, some of the data being fit contains negative values.

I actually did figure out though, that what I need to do was compare the script for the both b0 and n global parameters against the script with both b0 and n FIT by System ID.  Then I tried melding the two scripts ... and it worked! (see below)

the red is where I made changes ... first removing the [DUT] index from n, and then simply reducing the lists to hit all 8 DUTs worth of b0 and only a single instance of n.

 

Degradation(
Y( :shift ), Time( :duration ),Label( :DUT ), Upper Spec Limit( 20 ), Lower Spec Limit( -20 ),
Application( Repeated Measures Degradation ), Connect Data Markers( 1 ), Show Fitted Lines( 0 ), Show Spec Limits( 1 ),
Show Median Curves( 0 ), Show Legend( 0 ), No Tab List( 0 ), Set Upper Spec Limit( 20 ), Set Lower Spec Limit( -20 ), Set Censoring Time( . ),
Show Residual Plot( 1 ), Show Inverse Prediction Plot( 1 ), Inverse Prediction Interval( No Interval ), Inverse Prediction Alpha( 0.05 ),
Path Specifications(
Simple Linear(
Add Custom X Scale(
{{"Linear", Function( {x}, x ), Function( {x}, x )}}),
Add Custom Y Scale({{"Linear", Function( {x}, x ), Function( {x}, x )}}),
Slope( Different ),Intercept( Different ),Select X Scale( "Linear" ),Select Y Scale( "Linear" )),
Nonlinear Path(Add Formula(
Formula Name( "ShiftModel" ),Formula(
Parameter({b0 = 1, n = 0.6},
duration ^ n * b0[DUT] )),
Initial Values([0.009, 0.017, 0.026, 0.007, 0.015, 0.025, 0.019, 0.008, 0.600]),
Lower([-0.016, -0.009, -0.002, -0.017, -0.011, -0.004, -0.008, -0.015, -12.797]),
Upper([0.035, 0.043, 0.054, 0.033, 0.041, 0.054, 0.047, 0.032, 13.998]),
Fitting Method( QuasiNewton BFGS ),
Fixed([0, 0, 0, 0, 0, 0, 0, 0, 0])),
Select Formula( "ShiftModel" ))),
Nonlinear Path( 1 ),Mean Path( 1 ),
SendToReport(Dispatch({"Overlay", "Model Specification"},"ShiftModel",TextEditBox,{Fixed Size( 1, 102, 16 )})))

2 REPLIES
markbailey

Staff

Joined:

Jun 23, 2011

I understand your first statement and picture of a non-linear degradation path. I do not understand your second example but that is OK.

What if you use a log transformations? Then your model: Duration^n * b0(DUT) becomes linear as: log( b0(DUT) ) + n * Log( Duration ). Use a different intercept and a common slope option for the linear path. Then back transform if you like.

Learn it once, use it forever!
galactus3000

Contributor

Joined:

Nov 9, 2016

Solution

Good idea ... unfortunately, some of the data being fit contains negative values.

I actually did figure out though, that what I need to do was compare the script for the both b0 and n global parameters against the script with both b0 and n FIT by System ID.  Then I tried melding the two scripts ... and it worked! (see below)

the red is where I made changes ... first removing the [DUT] index from n, and then simply reducing the lists to hit all 8 DUTs worth of b0 and only a single instance of n.

 

Degradation(
Y( :shift ), Time( :duration ),Label( :DUT ), Upper Spec Limit( 20 ), Lower Spec Limit( -20 ),
Application( Repeated Measures Degradation ), Connect Data Markers( 1 ), Show Fitted Lines( 0 ), Show Spec Limits( 1 ),
Show Median Curves( 0 ), Show Legend( 0 ), No Tab List( 0 ), Set Upper Spec Limit( 20 ), Set Lower Spec Limit( -20 ), Set Censoring Time( . ),
Show Residual Plot( 1 ), Show Inverse Prediction Plot( 1 ), Inverse Prediction Interval( No Interval ), Inverse Prediction Alpha( 0.05 ),
Path Specifications(
Simple Linear(
Add Custom X Scale(
{{"Linear", Function( {x}, x ), Function( {x}, x )}}),
Add Custom Y Scale({{"Linear", Function( {x}, x ), Function( {x}, x )}}),
Slope( Different ),Intercept( Different ),Select X Scale( "Linear" ),Select Y Scale( "Linear" )),
Nonlinear Path(Add Formula(
Formula Name( "ShiftModel" ),Formula(
Parameter({b0 = 1, n = 0.6},
duration ^ n * b0[DUT] )),
Initial Values([0.009, 0.017, 0.026, 0.007, 0.015, 0.025, 0.019, 0.008, 0.600]),
Lower([-0.016, -0.009, -0.002, -0.017, -0.011, -0.004, -0.008, -0.015, -12.797]),
Upper([0.035, 0.043, 0.054, 0.033, 0.041, 0.054, 0.047, 0.032, 13.998]),
Fitting Method( QuasiNewton BFGS ),
Fixed([0, 0, 0, 0, 0, 0, 0, 0, 0])),
Select Formula( "ShiftModel" ))),
Nonlinear Path( 1 ),Mean Path( 1 ),
SendToReport(Dispatch({"Overlay", "Model Specification"},"ShiftModel",TextEditBox,{Fixed Size( 1, 102, 16 )})))