第一个sample1是没问题的,后面两个是错的,看看怎么写,我就是想分段回归下这些数据。
Sample 1
data;
input x mn @@; AL=4.7; AR=6.3;
cards;
4.7 0.309
4.9 0.222
5.1 0.102
5.3 0.0782
5.5 0.0509
5.7 0.0309
5.9 0.0155
6.1 0.00455
6.3 0.00364
;
proc nlin method=Marquardt maxiter=1000;
parms a1=5.1 a2=5.7 b1=2 b2=8 c=0; b3=0;
bounds AL < a1 < a2 < AR;
model mn=b1*min(max(AL,x),max(a1,x),a1)
+b2*min(max(a1,x),max(a2,x),a2)
+b3*min(max(a2,x),max(AR,x),AR)+c;
run;
Sample 2
data;
input x ca @@; AL=4.7; AR=7.1;
cards;
4.7 2.059
4.9 1.986
5.1 2.023
5.3 2.059
5.5 2.059
5.7 2.059
5.9 2.275
6.1 2.962
6.3 3.07
6.5 3.792
6.7 4.334
6.9 5.056
7.1 6.79
;
proc nlin method=Marquardt maxiter=1000;
parms a1=5.1 a2=5.7 b2=2 b3=8 c=0; b1=0;
bounds AL < a1 < a2 < AR;
model ca=b1*min(max(AL,x),max(a1,x),a1)
+b2*min(max(a1,x),max(a2,x),a2)
+b3*min(max(a2,x),max(AR,x),AR)+c;
run;
Sample 3
data;
input x p @@; AL=4.7; AR=7.1;
cards;
4.7 0.314
4.9 0.455
5.1 0.426
5.3 0.448
5.5 0.643
5.7 0.643
5.9 0.639
6.1 0.531
6.3 0.423
6.5 0.379
6.7 0.336
6.9 0.199
7.1 0.199;
proc nlin method=Marquardt maxiter=1000;
parms a1=5.1 a2=5.7 b1=2 b2=8; b3=0 c=0;
bounds AL < a1 < a2 < AR;
model p=b1*min(max(AL,x),max(a1,x),a1)
+b2*min(max(a1,x),max(a2,x),a2)
+b3*min(max(a2,x),max(AR,x),AR)+c;
run;