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;