Appendix C

SAS statements for analyses of RGR in 2000 and 2003 experiments.

Key to abbreviations:

communty: hardwood forest or pine barrens plant community type

gap: gap cut by removing trees or control (no trees cut)

site: local area experimental site within community type

blocks were established within plots in each gap or non-gap area

N: nitrogen added or control (no nitrogen)

Ca: Calcium added or control (no calcium)

Species (as in Table 1)

Shoot wt: dry weight of aboveground plant parts at end of experiment

Root wt: dry weight of belowground plant parts at end of experiment

Total wt: total dry weight of plant at end of experiment (aboveground plus belowground parts)

plantID: each plant was tagged with a unique number

est inimass: estimated initial dry mass

status: native or invasive

Note that the Proc univariate statement at the end allows examination of the residuals from the model to test model assumptions.

DATA 2000;

INPUT communty $ site $ gap $ plantID $ Block $ Plot $ inimass

N $ Ca $species $ finalshoot finaltot;

growth=finaltot/inimass;

rgr=(finaltot-inimass)/inimass;

lrgr=log(rgr+1.0);

lgrow=log(finaltot)-log(inimass);

lDW=log(finaltot);

if species = "acepla"then status="I";

if species = "acerub"then status="N";

if species = "ampbre"then status="I";

if species = "elaumb"then status="I";

if species = "pinrig"then status="N";

if species = "rosmul"then status="I";

if species = "vitnov"then status="N";

procmixed;

class communty site Block Plot gap N Ca species status site;

model lrgr = communty gap status N Ca communty*gap N*Ca

Ca*status Ca*communty Ca*gap status*Ca*gap

N*status N*communty N*gap status*N*gap

communty*status status*gap communty*N*status

communty*status*gap /htype=3DDFM=satterth

outpred=resid1;

random site(communty) Block(gap site communty) Plot(Block gap site communty)

species(status) N*species(status) communty*species(status)

Ca*species(status) communty*Ca*status*species(status)

Ca*site*Block(gap site communty) Ca*gap*site(communty) Ca*gap*species(status)

communty*N*status*species(status) communty*gap*status*species(communty)

site*Block(gap site communty) N*site*Block(gap site communty)

N*gap*site(communty) N*gap*species(status);

procunivariateplotnormal;

var Resid;

run;

DATA 2003;

INPUT communty $ site $ Gap $ block $ plot $ ID $ InitWt

species $ family $ status $ N $ Ca $ ShootWt RootWt TotalWt;

rgr=(TotalWt-InitWt)/InitWt;

lrgr=log(rgr+1.0);

procmixed;

class communty status gap N Ca site plot block family species;

model lrgr = communty gap N Ca status family N*status

communty*gap communty*N communty*Ca communty*status communty*family

gap*N gap*Ca gap*status N*Ca N*Ca*communty

Ca*family communty*status*Ca

communty*gap*N communty*gap*Ca communty*gap*status communty*gap*family

N*family*status Ca*family*status gap*status*communty

/DDFM=satterth htype=3 outpred=resid1;

random site(communty) site*gap(communty) species(status family)

Ca*block(gap site communty) N*block(gap site communty)

N*Ca*block(gap site communty)

gap*status*species(status family)

N*species(status family) Ca*species(status family)

N*gap*site(communty) Ca*gap*site(communty)

N*communty*block(communty gap site)

Ca*communty*block(communty gap site)

N*Ca*communty*block(communty gap site)

communty*gap*site(communty)

communty*status*species(status family)

gap*species(status family)

status*Ca*species(family status)

status*N*species(family status)

communty*status*gap*N*block(site communty)

communty*gap*site(communty)

communty*status*species(status family)

gap*species(status family)

status*Ca*species(family status)

status*N*species(family status)

communty*status*gap*N*block(site communty);

procunivariateplotnormal;

var Resid;

run;