Hi everyone,
I'm having some difficulty getting "simple effects" for the ols()
function in the rms package. The example below illustrates my
difficulty -- I'll be grateful for any help.
#make up some data
exD <- structure(list(Gender = structure(c(1L, 2L, 1L, 2L, 1L, 1L, 1L,
2L, 1L, 2L, 2L, 2L, 1L, 2L), .Label = c("F", "M"), class =
"factor"),
UCS = c(3.11111111111111, 3.5, 3.77777777777778, 2.875, 3.55555555555556,
2.44444444444444, 2.57142857142857, 3.11111111111111, 3.28571428571429,
3.11111111111111, 2.77777777777778, 2.77777777777778, 3.22222222222222,
2.77777777777778), GPA = c(3.4, 3.1, 2.9, 2.6, 2.7, 3.2,
3.1, 3.7, 2.8, 3, 2.2, 3.3, 3.4, 3.9)), .Names = c("Gender",
"UCS", "GPA"), class = "data.frame", row.names =
c(NA, -14L))
## here is how I usually get simple effects with lm()
contrasts(exD$Gender) # check which is the reference group (reference group = F)
m.lm.f <- lm(GPA ~ Gender*UCS, data=exD) # run the model. UCS
coefficient is for females
summary(m.lm.f)
contrasts(exD$Gender) <- contr.treatment(2, base=2) # set reference
group to male
m.lm.m <- lm(GPA ~ Gender*UCS, data=exD) # run the model. UCS
coefficient is for males
summary(m.lm.m)
## try to do the eqivelent with ols ##
library(rms)
dd <- datadist(exD)
options(datadist="dd")
dd$limits["Adjust to", "Gender"] <- "F"
(m.ols.f <- ols(GPA ~ Gender*UCS, data=exD)) # run the model with
gender adjusted to f
dd$limits["Adjust to", "Gender"] <- "M"
(m.ols.m <- ols(GPA ~ Gender*UCS, data=exD)) # run the model with
gender adjusted to m. UCS coefficient is the same.
# Summary gives me results consistent with the lm results, but I want
the actual coefficients
summary(m.ols.f)
summary(m.ols.m)
#OK, so I could do
(m.ols.f1 <- ols(GPA ~ UCS, data=exD, subset=Gender=="F")) #but
this
uses df=5 instead of df=10.
Question: How can I find simple effects of UCS for males and for females?
Thanks,
Ista
--
Ista Zahn
Graduate student
University of Rochester
Department of Clinical and Social Psychology
http://yourpsyche.org
Frank E Harrell Jr
2010-Jan-21 18:13 UTC
[R] Simple effects with Design / rms ols() function
Ista Zahn wrote:> Hi everyone, > I'm having some difficulty getting "simple effects" for the ols() > function in the rms package. The example below illustrates my > difficulty -- I'll be grateful for any help. > > #make up some data > exD <- structure(list(Gender = structure(c(1L, 2L, 1L, 2L, 1L, 1L, 1L, > 2L, 1L, 2L, 2L, 2L, 1L, 2L), .Label = c("F", "M"), class = "factor"), > UCS = c(3.11111111111111, 3.5, 3.77777777777778, 2.875, 3.55555555555556, > 2.44444444444444, 2.57142857142857, 3.11111111111111, 3.28571428571429, > 3.11111111111111, 2.77777777777778, 2.77777777777778, 3.22222222222222, > 2.77777777777778), GPA = c(3.4, 3.1, 2.9, 2.6, 2.7, 3.2, > 3.1, 3.7, 2.8, 3, 2.2, 3.3, 3.4, 3.9)), .Names = c("Gender", > "UCS", "GPA"), class = "data.frame", row.names = c(NA, -14L)) > > ## here is how I usually get simple effects with lm() > > contrasts(exD$Gender) # check which is the reference group (reference group = F) > > m.lm.f <- lm(GPA ~ Gender*UCS, data=exD) # run the model. UCS > coefficient is for females > summary(m.lm.f) > > contrasts(exD$Gender) <- contr.treatment(2, base=2) # set reference > group to male > > m.lm.m <- lm(GPA ~ Gender*UCS, data=exD) # run the model. UCS > coefficient is for males > summary(m.lm.m) > > ## try to do the eqivelent with ols ## > > library(rms) > dd <- datadist(exD) > options(datadist="dd") > > dd$limits["Adjust to", "Gender"] <- "F" > (m.ols.f <- ols(GPA ~ Gender*UCS, data=exD)) # run the model with > gender adjusted to f > > dd$limits["Adjust to", "Gender"] <- "M" > (m.ols.m <- ols(GPA ~ Gender*UCS, data=exD)) # run the model with > gender adjusted to m. UCS coefficient is the same. > > # Summary gives me results consistent with the lm results, but I want > the actual coefficients > summary(m.ols.f) > summary(m.ols.m) > > #OK, so I could do > (m.ols.f1 <- ols(GPA ~ UCS, data=exD, subset=Gender=="F")) #but this > uses df=5 instead of df=10. > > Question: How can I find simple effects of UCS for males and for females? > > Thanks, > Ista > >Don't use contrasts and don't change reference cells. Just use summary.rms or contrast.rms with ols. The latter gives you the most flexibility and is completely independent of coding of variables. Frank -- Frank E Harrell Jr Professor and Chairman School of Medicine Department of Biostatistics Vanderbilt University