Statistical Applications    
         
 

Linear-Plateau Program

data one;

  input rep trt x  y;

cards;

proc nlin data = one best = 3;

parms b0=200 to 400 by 20 b1=-12 to -5 by 1 njoint=5 to 30 by 2;

            if x<njoint then do;

            model y = b0 + b1*x;

            der.b0=1;

            der.b1=x;

            der.njoint=0;

end;

            else do;

            model y=b0+b1*njoint;

            der.b0=1;

            der.b1=njoint;

            der.njoint=b1;

end;

            file print;

            if _obs_ =1 and _model_ =0 then do;

            plateau = b0 + b1*njoint;

            put plateau=;

end;

            plateau=b0+b1*njoint;

            id plateau;

            output out = new p = pry parms=b0 b1 njoint sse=sse;

run;

proc plot;

            plot y*x='+' pry*x='*'/overlay;

run;

proc means noprint;

            var y sse b0 b1 njoint plateau;

            output out = new2 n = tdf

            mean = y sse b0 b1 njoint plateau

           css=csst;

data new3; set new2;

            intercpt=b0; slope=b1; joint=njoint;

            rsq=(csst-sse)/csst;

            edf=tdf-3;

            ssr=csst-sse;

            msr=ssr/2;

            mse=sse/edf;

            f=msr/mse;

            probf=1-(probf(f,2,edf));

keep intercpt slope joint plateau rsq f probf;

proc print;

run;

 

Linear-Linear Program

data one;

  input rep trt x  y;

cards;

proc nlin data = one best = 2;

parms b0=50 to 100 by 10 b1=-0.5 to -0.1 by 0.01 joint=10 to 50 by 10

b2 = -.5 to .1 by 0.05;

if x<joint then do;

model y = b0 + b1*x;

der.b0=1;

der.b1=x;

der.joint=0;

der.b2=0;

end;

else do;

model y=b0+(b1-b2)*joint+b2*x;

der.b0=1;

der.b1=joint;

der.joint=b1-b2;

der.b2=x-joint;

end;

file print;

if _obs_ =1 and _model_ =0 then do;

joinlev = b0 + b1*joint;

put joinlev=;

end;

joinlev=b0+b1*joint;

id joinlev;

output out = new p = pry parms=b0 b1 joint b2 sse=sse;

run;

proc plot;

plot y*x='+' pry*x='*'/overlay;

run;

proc means noprint;

var y sse b0 b1 joint b2 joinlev;

output out = new2 n = tdf

mean = y sse b0 b1 joint b2 joinlev

           css=csst;

data new3; set new2;

intercpt=b0; slope=b1; joint=joint; slope2=b2; jresp=joinlev;

rsq=(csst-sse)/csst;

edf=tdf-4;

ssr=csst-sse;

msrg=ssr/3;

mse=sse/edf;

f=msrg/mse;

probf=1-(probf(f,2,edf));

keep intercpt slope joint slope2 joinlev rsq msrg mse edf f probf;

proc print;

run;

 

 

Surface Response Model

linear and quadratic relationships of x and y with z and a linear interaction term. 

Z = x x2 y y2 xy

libname lib2 'c:\temp';

data one;

input x y z;

filename grafout 'c:\temp\surf.gsf';

goptions nodisplay gsfmode=replace device=hpljs2

    GSFNAME=GRAFOUT gwait=15 fby=xswiss hby = 1.75 gouttype=dependent;

title f=xswiss 'Surface Model';

proc rsreg data = one out = two;

    model z = x y /predict;

proc g3grid data = two out = three;

    grid x*y=z/spline;

proc g3d data = three gout=new;

    plot x*y=z;

run;

 

Procedure for Determining Differences in Population Means

data one; input sample time $ ph P oc k;

cards;

1          A         6.17    21.47  0.924  150

2          A         6.27    18.69  0.939  139

3          B         6.16    21.20  1.042  142

4          B         5.65    41.74  1.054  144

proc ttest;

classes time;

var ph p k oc;

run;

 

Randomized Complete Block Randomization

Title ' RCBD 3 reps, 13 treatments';

proc plan seed = 37275;

factors blocks = 3 ordered trts = 13;

run;

 

Program to output Transposed Data

data one;

Input yr trt yield;

Cards;

88        1          1000

88        2          2000

88        3          2400

89        1          4000

89        2          3200

89        3          3500

data two; set one;

proc sort; by trt yr;

proc transpose data = two out = three prefix = y ;

id yr;

var yield;

by trt;

proc print;

run;

 

Contrast Program for Unequal Spacing

proc iml;

dens={0 100 600 1200}; **

p=orpol(dens);

t=nrow(p);

do i=1 to t;

  pr=abs(p[,i]);

  pr[rank(abs(p[,i]))]=abs(p[,i]);

  do j=t to 1 by -1;

    if pr[j] > 1.e-10 then scale=pr[j];

    if abs(p[j,i]) < 1.e-10 then p[j,i]=0;

  end;

  p[,i]=p[,i]/scale;

end;

print p;

run;

The only thing that needs to be changed is the trt values.

Output

Trt

P

lin

quad

cubic

0

1

-3.8

19.417

-11

100

1

-3

1

14.4

600

1

1

-40.67

-4.4

1200

1

5.8

20.25

1

 

Test of Differences in Slope and Intercept Components from Two Independent Regressions

data one;

input exp x y;

if exp = 1 then intc_dif = 0;

if exp = 2 then intc_dif = 1;

slop_dif = intc_dif*x;

cards;

1        3.31878  45.8971

1        3.31716  45.24701

1        3.31162  42.59693

2        3.26607  54.4

2        3.32216  40.7

2        3.31122  55.7

data two; set one;

proc sort; by exp;

proc reg;

model y = x intc_dif slop_dif;

run;

proc reg;

by rep;

model y = x;

run;

 

Experiment:  Influence of Nitrogen Rate and Mowing Height on Sensor Based Detection of Nutrient Stress

Treatment        N rate                       Mowing Height, in

                     lb N/1000 ft2/month     

__________________________________________

1                       0                                     0.5

2                       0.5                                  0.5

3                       1.0                                  0.5

4                       1.5                                  0.5

5                       0                                     1.5

6                       0.5                                  1.5

7                       1.0                                  1.5

8                       1.5                                  1.5

__________________________________________

Replications: 4

Experimental design: CRD

2 heights, 4 nrates (8 treatments)

CRD

CRD

RCBD

Source of variation

df

Source of variation

df

Source of variation

df

Total (4*8)-1

31

Total (4*8)-1

31

Total (4*8)-1

31

block

3

height

1

treatment

7

treatment

7

nrate

3

nrate*height

3

error

24

error

24

error

21

proc glm;

classes height nrate;

model yield = nrate height nrate*height;

contrast 'Nrate_lin' nrate           -3 -1 1 3;

contrast 'Nrate_quad' nrate      1 -1 -1 1;

contrast 'Nrate_cub' nrate         -1 3 -3 1;

contrast 'height*nrate_lin' height*nrate  -3 -1 1 3 3 1 -1 -3;

contrast 'height*nrate_quad' height*nrate 1 -1 -1 1 -1 1 1 -1;

means nrate height nrate*height;

run;

 

height

0.5

1.5

____________________________

_____________________________

nrate

0

0.5

1

1.5

0

0.5

1

1.5

height

0.5

1.5

1

-1

____________________________

_____________________________

nrate (linear)

0

0.5

1

1.5

0

0.5

1

1.5

-3

-1

1

3

-3

-1

1

3

interaction coefficients (height*nrate_lin)

-3

-1

1

3

3

1

-1

-3