Thank you very much for the help!
Now, I have an additional question regarding transcending from Design to rms: Before, it was possible to plot interaction, and get lines with
   plot(ols2, gender=NA, marital.status=NA, xlab='gender',
   ylab='anxiety', conf.int=FALSE)
Now, I am lost how to do that. If model is:
   ols2 <- ols(anxiety ~ marital.status * gender)
Then, I need:
   p2 <- Predict(ols2, marital.status=., gender=.)
And plot(p2) does not give me lines, but points with conf.int. Also, axes are transposed as to what old plot(ols2) would give. In addition, if I try old function (plot(ols2), above), error message returns:
   Error in predictDesign(fit, adj, type = "x", non.slopes = non.slopes)
   could not find function "Varcov"

Best,
PM

Frank E Harrell Jr wrote:
Petar Milin wrote:
I would like to have a line on this plot, instead of two points:

x1 = rnorm(100, 10, 2.5)
x2 = rnorm(100, 26, 3.2)
x1 = as.data.frame(x1)
x2 = as.data.frame(x2)
colnames(x1) = 'anxiety'
colnames(x2) = 'anxiety'
x1$gender = 'male'
x2$gender = 'female'
dat = rbind(x1, x2)

require(Design)

attach(dat)
d=datadist(gender)
options(datadist="d")

ols1 <- ols(anxiety ~ gender, data=dat, x=T, y=T)

plot(ols1, gender=NA, xlab="gender", ylab="anxiety",
ylim=c(5,30), conf.int=FALSE)

detach(dat)

Your code has many problems and inefficiencies in it. Here are some suggested fixes and the commands needed using the new rms package:

require(rms)
n <- 100
anxiety <- c(rnorm(n, 10, 2.5), rnorm(n, 26, 3.2))
gender  <- c(rep('male', n), rep('female',n))
d <- datadist(gender); options(datadist='d')
f <- ols(anxiety ~ gender)
p <- Predict(f, gender=.)
# For this case could also do p <- Predict(f); plot(p) would give a
# vertical dot chart
p           # print estimates
plot(p)     # horizontal dot chart; preferred for categorical predictors
# To take control using lines:
with(p, plot(1:2, yhat, type='l', xlab='gender numeric'))

Frank


Thanks!
PM

Frank E Harrell Jr wrote:
Petar Milin wrote:
Hello ALL!
I have a problem to plot factor (lets say gender) as a line, or at least both line and point, from ols model:
ols1 <- ols(Y ~ gender, data=dat, x=T, y=T)
plot(ols1, gender=NA, xlab="gender", ylab="Y",
ylim=c(5,30), conf.int=FALSE)

If I convert gender into discrete numeric predictor, and use forceLines=TRUE, plot is not nice and true, since it shows values between 1 and 2.

Thanks!
PM


Petar,

forceLines seems to be doing what it was intended to do. I'm not clear on why you need a line, though. If you provide self-contained code and data that replicate your problem I may be able to help more, or you can try a new package I'm about to announce.

Frank




______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to