@ahmedmohamed
짐과 동의합니다.JMP 비선형 플랫폼이 능선 분석을 수행할 수 있는지 잘 모르겠습니다. 매개변수 추정치에 한계를 두는 것은 쉽지만 손실 공식에 익숙하지 않습니다. 대부분의 SAS 데이터 단계에서 JSL이 더 쉽다는 것을 알고 있습니다.
아래의 JSL은 단순 선형 및 단순 비선형 적합을 입력하고 실행하기 위한 첫 번째 단계 중 일부를 보여줍니다.
//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귀하의 요청은 사소하지 않은 요청입니다.SAS, JMP 및 통계에 능숙한 개인이 작업을 수행하려면 많은 시간이 소요됩니다.계약업체에 연락하여 비용을 지불하고 전환을 완료하는 것이 좋습니다.
SAS에 액세스할 수 없거나 SAS에 익숙하지 않기 때문에 변환된 코드가 필요하다고 가정합니다.
문제가 SAS에 액세스할 수 없는 경우 SAS University Edition에 액세스할 수 있으며 약간의 변경으로 프로그램을 성공적으로 실행할 수 있습니다.