- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Convert sas code to JSL
I need to convert this code to JSL
the code reference " Pharmaceutical Statistics Using SAS®: A Practical Guide "
Thanks in advance
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Convert sas code to JSL
Your request is a non trivial request. It would take many hours of work for an individual skilled in SAS, JMP and statistics to accomplish the task. I suggest that you get in touch with a contract house to pay them to have the conversion done.
I assume you need the code converted because you do not have access to SAS, and/or you are not familiar with SAS.
If the issue is one of not having access to SAS, one can access SAS University Edition, and with minor change, can get the program to successfully execute.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Convert sas code to JSL
I agree with Jim. I am not sure if the JMP nonlinear platform can perform ridge analysis. It is easy to put bounds on the parameter estimates, but I am not familiar with the Loss formula. I do know that JSL is easier for most of the SAS data steps.
The JSL below shows some of the first steps for input and executing a simple linear and simple non-linear fit.
//conversion
Names Default to Here(1);
dt_cs = Open("$Downloads/elisa_cs.csv");
dt_cs << select where(! (:plate=="A" & :series==1));
dt_cs << delete Rows(); //only keep A 1
dt_calib = Data Table( "elisa_cs" ) << Stack(
columns( :rep1, :rep2, :rep3 ),
Source Label Column( "Label" ),
Stacked Data Column( "signal" ),
Output Table Name("calib")
);
dt_calib << New Column("w", numeric, continuous, << Set each value(1/:signal^1.3));
report1 = dt_calib << Fit Model(
Weight( :w ),
Y( :signal ),
Effects( :concentration ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run
);
report1 << Save Columns( {"Prediction Formula"}); //predictions are saved to the data table
lin_est = report1 << get estimates; //vector
show(lin_est);
gb = dt_calib << Graph Builder(
Size( 522, 456 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :concentration ),
Y( :signal ),
Y( :Pred Formula signal, Position( 1 ), Side( "Right" ) )
),
Elements( Points( X, Y( 1 ), Legend( 6 ) ), Line( X, Y( 2 ), Legend( 11 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Fit of the Linear Model" ), Image Export Display( Normal )}
),
Dispatch(
{},
"concentration",
ScaleBox,
{Scale( "Log" ), Format( "Best", 6 ), Min( 1 ), Max( 1000 ), Inc( 1 ),
Minor Ticks( 0 )}
),
Dispatch(
{},
"signal",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 0 ), Max( 4 ), Inc( 1 ),
Minor Ticks( 1 ), Label Row(
{Show Major Grid( 1 ), Show Minor Grid( 1 )}
)}
),
Dispatch(
{},
"Pred Formula signal",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 0 ), Max( 4 ), Inc( 1 ),
Minor Ticks( 1 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
11,
Properties(
0,
{Line Color( 19 ), Line Width( 3 )},
Item ID( "Mean(Pred Formula signal)", 1 )
)
)}
)
)
);
//Note since this is a simple weighted regression the analysis and plot can be created with Bivariate
//here the predicteds are saved, not the formula
report1_biv = dt_calib << Bivariate(
Y( :signal ),
X( :concentration ),
Weight( :w ),
Fit Line( {Confid Shaded Fit( 1 ), Line Color( {212, 73, 88} ), Save Predicteds} ),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Scale( "Log" ), Min( 1 ), Max( 1000 ), Inc( 1 ), Minor Ticks( 0 )}
),
Dispatch(
{},
"2",
ScaleBox,
{Min( 0 ), Max( 4 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Grid Line Order( 2 ), Reference Line Order( 3 )}
)
)
);
//=========================================================================================
//NonLinear fit
nlmod = dt_calib << New Column( "NonLin Model",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Parameter(
{top = 3, bottom = 0.2, c50 = 250, slope = 1},
top + (bottom - top) / (1 + (:concentration / c50) ^ slope)
)
)
);
report2_nlin = dt_calib << Nonlinear(
Y( :signal ),
X( :NonLin Model ),
Weight( :w ),
Newton,
Finish,
SendToReport(
Dispatch(
{"Plot"},
"1",
ScaleBox,
{Scale( "Log" ), Format( "Best", 6 ), Min( 1 ), Max( 1000 ), Inc( 1 ),
Minor Ticks( 0 )}
),
Dispatch(
{"Plot"},
"2",
ScaleBox,
{Min( 0 ), Max( 4 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
)
)
);
report2 _nlin << Confidence Limits;
report2 _nlin << Save Estimates; //updates the column nlmod
nlin_est = report2_nlin << get estimates; //vector
show(nlin_est);
//==== up to proc nlmixed
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Convert sas code to JSL
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Convert sas code to JSL
I apply this code in sas but I have a problem in the last part of code