# In SAS
=work.mycsv;
proc glm data
class drug;= drug pre / solution;
model post 'C vs A' drug -1 1 0;
estimate 'E vs CA' drug -1 -1 2;
estimate run;
R vs SAS Linear Models
Matching Contrasts: R and SAS
It is recommended to use the emmeans
package when attempting to match contrasts between R and SAS. In SAS, all contrasts must be manually defined, whereas in R, we have many ways to use pre-existing contrast definitions. The emmeans
package makes simplifies this process, and provides syntax that is similar to the syntax of SAS.
This is how we would define a contrast in SAS.
And this is how we would define the same contrast in R, using the emmeans
package.
lm(formula = post ~ pre + drug, data = df_trial) %>%
emmeans("drug") %>%
contrast(method = list(
"C vs A" = c(-1, 1, 0),
"E vs CA" = c(-1, -1, 2)
))
Note, however, that there are some cases where the scale of the parameter estimates between SAS and R is off, though the test statistics and p-values are identical. In these cases, we can adjust the SAS code to include a divisor. As far as we can tell, this difference only occurs when using the predefined Base R contrast methods like contr.helmert
.
=work.mycsv;
proc glm data
class drug;= drug pre / solution;
model post 'C vs A' drug -1 1 0 / divisor = 2;
estimate 'E vs CA' drug -1 -1 2 / divisor = 6;
estimate run;