Hi all,
I'm trying to analyze if there are differences in Cover Averages of native plants between 4 different treatments over time. My data is organized as follows:
MONTH | BLOCK/TREATMENT | TREATMENT | COVER AVERAGE |
1 | 1/1 | 1 | 0.234 |
2 | 1/1 | 1 | 0.2105 |
3 | 1/1 | 1 | 0.1675 |
4 | 1/1 | 1 | 0.0775 |
5 | 1/1 | 1 | 0 |
6 | 1/1 | 1 | 0.0255 |
7 | 1/1 | 1 | 0.1505 |
8 | 1/1 | 1 | 0.141 |
9 | 1/1 | 1 | 0.141 |
1 | 2/1 | 1 | 0.053 |
2 | 2/1 | 1 | 0.0325 |
3 | 2/1 | 1 | 0.015 |
4 | 2/1 | 1 | 0 |
5 | 2/1 | 1 | 0 |
6 | 2/1 | 1 | 0.001 |
7 | 2/1 | 1 | 0.0075 |
8 | 2/1 | 1 | 0.015 |
9 | 2/1 | 1 | 0.0155 |
PROC GENMOD DATA=WORK.IMPORT DESCENDING;
CLASS BLOCK_TREATMENT TREATMENT COVER_AVERAGE MONTH;
MODEL COVER_AVERAGE = BLOCK_TREATMENT TREATMENT MONTH;
REPEATED SUBJECT = BLOCK_TREATMENT / type=IND;
RUN;
Show us the output. Explain what parts don't make sense.
My apologies, the output is attached.
I asked you to provide two pieces of information. You only provided one piece of information... I need the other piece of information.
First off, the response values should not be modeled with a multinomial distribution. That implies levels, and nothing will ever converge with only one observation per level. So, remove cover_average from the CLASS statement. Then you may want to consider what distribution to use to model this variable. I would suggest a beta distribution, but it only has support on the open interval (0, 1), and I see you have some zeroes in your responses. Consider adding a very small bit to the zeroes (say 1e-6) and try fitting this code:
PROC GENMOD DATA=WORK.IMPORTMODIFIED ;
CLASS BLOCK_TREATMENT TREATMENT COVER_AVERAGE MONTH;
MODEL COVER_AVERAGE = BLOCK_TREATMENT TREATMENT MONTH/ dist=beta;
REPEATED SUBJECT = BLOCK_TREATMENT / type=IND;
RUN;
Perhaps a better approach would be to use PROC GLIMMIX, so that a covariance structure could be applied to the repeated measure MONTH.
PROC glimmix DATA=WORK.IMPORTMODIFIED ;
CLASS BLOCK_TREATMENT TREATMENT COVER_AVERAGE MONTH;
MODEL COVER_AVERAGE = BLOCK_TREATMENT TREATMENT MONTH treatment*month/ dist=beta;
random block_treatment;
random month/ SUBJECT = BLOCK_TREATMENT type=AR(1);
RUN;
My changes are all in lower case.
SteveDenham
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.
Find more tutorials on the SAS Users YouTube channel.