@Ahmed Mohamed
Je suis d'accord avec Jim.Je ne sais pas si la plate-forme non linéaire JMP peut effectuer une analyse de crête. Il est facile de mettre des bornes sur les estimations des paramètres, mais je ne connais pas la formule de perte. Je sais que JSL est plus facile pour la plupart des étapes de données SAS.
Le JSL ci-dessous montre certaines des premières étapes pour la saisie et l'exécution d'un ajustement linéaire simple et non linéaire simple.
//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 nlmixedVotre demande est une demande non triviale.Il faudrait de nombreuses heures de travail à une personne qualifiée en SAS, JMP et en statistiques pour accomplir cette tâche.Je suggère que vous vous mettiez en contact avec une maison de contrat pour les payer pour faire la conversion.
Je suppose que vous avez besoin de convertir le code car vous n'avez pas accès à SAS et/ou vous n'êtes pas familier avec SAS.
Si le problème est de ne pas avoir accès à SAS, on peut accéder à SAS University Edition et, avec des modifications mineures, faire en sorte que le programme s'exécute avec succès.