Margins is a macro, not a procedure, so it does not make use of ODS. As stated in the macro documentation, the _Margins data set is created automatically when margins= is specified. The _MEffect data is created automatically when effect= is specified. _MEffect will not be created by your macro calls. If you want to combine the data sets from multiple macro calls, use PROC APPEND after each call.
Note that roptions= is ignored since the EVENT= option in GENMOD is only used for binomial models (or multinomial, but the macro does not support those). EVENT= has no logical meaning with a continuous response distribution.
The macro provides margin estimates for one variable or variable combination. If two or more variables are specified, it provides estimates for all of the unique combinations of the levels of those variables. It does not estimate the margins for the levels of the first variable and then estimate margins for the levels of the second variable, and so on. If that is desired, use the macro multiple times specifying each variable in turn. If a continuous variable is specified (either alone or in combination with others), and if that continuous variable has a large number of levels, the number of estimates will be very large. If all pairwise differences are also requested, the number of them will be enormous. The data set that must be created to compute those estimates will be extremely large. Margin estimates for a continuous variable are typically computed for specified values of the variable. This can be done either using margwhere= if the values are in the data, or with margindata= if not. Or, if margin estimates for one variable are desired at specific levels of one or more other variables, then use either at= and atwhere= if the values are in the data or at= and atdata= if not.
Similarly, only one variable may be specified in effect= if marginal effects are desired.
... View more