Patrizio Frederic
2008-May-29 10:53 UTC
[R] Troubles plotting lrm output in Design Library
Dear R-helpers, I'm having a problem in using plot.design in Design Library. Tho following example code produce the error:> n <- 1000 # define sample size > set.seed(17) # so can reproduce the results > age <- rnorm(n, 50, 10) > blood.pressure <- rnorm(n, 120, 15) > cholesterol <- rnorm(n, 200, 25) > sex <- factor(sample(c('female','male'), n,TRUE)) > label(age) <- 'Age' # label is in Hmisc > label(cholesterol) <- 'Total Cholesterol' > label(blood.pressure) <- 'Systolic Blood Pressure' > label(sex) <- 'Sex' > units(cholesterol) <- 'mg/dl' # uses units.default in Hmisc > units(blood.pressure) <- 'mmHg' > > # Specify population model for log odds that Y=1 > L <- .4*(sex=='male') + .045*(age-50) ++ (log(cholesterol - 10)-5.2)*(-2*(sex=='female') + 2*(sex=='male'))> # Simulate binary y to have Prob(y=1) = 1/[1+exp(-L)] > y <- ifelse(runif(n) < plogis(L), 1, 0) > > ddist <- datadist(age, blood.pressure, cholesterol, sex) > options(datadist='ddist') > > fit <- lrm(y ~ blood.pressure + sex * (age + rcs(cholesterol,4)),+ x=TRUE, y=TRUE)> > par(mfrow=c(2,2)) > plot(fit) # Plot effects of all 4 predictorsError in value.chk(at, ix, xseq, if (plot.type == "curves") 100 else 40, : variable blood.pressure does not have limits defined by datadist I guess somthing goes wrong with function datadist> version_ platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 2 minor 7.0 year 2008 month 04 day 22 svn rev 45424 language R version.string R version 2.7.0 (2008-04-22) thank you in advance, Patrizio Frederic ------------------------------------------------- | Patrizio Frederic | Research associate in Statistics, | Department of Economics, | University of Modena and Reggio Emilia, | Via Berengario 51, | 41100 Modena, Italy | | tel: +39 059 205 6727 | fax: +39 059 205 6947 | mail: patrizio.frederic at unimore.it +-------------------------------------------------
Frank E Harrell Jr
2008-May-29 12:53 UTC
[R] Troubles plotting lrm output in Design Library
Patrizio Frederic wrote:> Dear R-helpers, > I'm having a problem in using plot.design in Design Library. Tho > following example code produce the error: > >> n <- 1000 # define sample size >> set.seed(17) # so can reproduce the results >> age <- rnorm(n, 50, 10) >> blood.pressure <- rnorm(n, 120, 15) >> cholesterol <- rnorm(n, 200, 25) >> sex <- factor(sample(c('female','male'), n,TRUE)) >> label(age) <- 'Age' # label is in Hmisc >> label(cholesterol) <- 'Total Cholesterol' >> label(blood.pressure) <- 'Systolic Blood Pressure' >> label(sex) <- 'Sex' >> units(cholesterol) <- 'mg/dl' # uses units.default in Hmisc >> units(blood.pressure) <- 'mmHg' >> >> # Specify population model for log odds that Y=1 >> L <- .4*(sex=='male') + .045*(age-50) + > + (log(cholesterol - 10)-5.2)*(-2*(sex=='female') + 2*(sex=='male')) >> # Simulate binary y to have Prob(y=1) = 1/[1+exp(-L)] >> y <- ifelse(runif(n) < plogis(L), 1, 0) >> >> ddist <- datadist(age, blood.pressure, cholesterol, sex) >> options(datadist='ddist') >> >> fit <- lrm(y ~ blood.pressure + sex * (age + rcs(cholesterol,4)), > + x=TRUE, y=TRUE) >> par(mfrow=c(2,2)) >> plot(fit) # Plot effects of all 4 predictors > Error in value.chk(at, ix, xseq, if (plot.type == "curves") 100 else 40, : > variable blood.pressure does not have limits defined by datadist > > I guess somthing goes wrong with function datadist > >> version > _ > platform i386-pc-mingw32 > arch i386 > os mingw32 > system i386, mingw32 > status > major 2 > minor 7.0 > year 2008 > month 04 > day 22 > svn rev 45424 > language R > version.string R version 2.7.0 (2008-04-22) > > thank you in advance, > > Patrizio FredericThis is the example run by example(plot.Design) which works for me, using the version of Design from CRAN. You don't need to include code that is already in an example in a help file, and if you do please make the code copy and paste-able instead of putting something at the start of each line. Frank Frank> > ------------------------------------------------- > | Patrizio Frederic > | Research associate in Statistics, > | Department of Economics, > | University of Modena and Reggio Emilia, > | Via Berengario 51, > | 41100 Modena, Italy > | > | tel: +39 059 205 6727 > | fax: +39 059 205 6947 > | mail: patrizio.frederic at unimore.it > +------------------------------------------------- > > ______________________________________________ > R-help at 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. >-- Frank E Harrell Jr Professor and Chair School of Medicine Department of Biostatistics Vanderbilt University
Frank E Harrell Jr
2008-May-30 16:54 UTC
[R] Troubles plotting lrm output in Design Library
Patrizio Frederic wrote:> 2008/5/29 Frank E Harrell Jr <f.harrell at vanderbilt.edu>: >> Patrizio Frederic wrote: >>> dear Harrell, >>> thank you for quick reply and suggestions. I still have the problem: >>> >>> library(Design) >>> x = rnorm(100) >>> y = runif(100)<(exp(x)/(1+exp(x))) >>> y = 0*y+1*y >>> d = datadist(x,y) >>> options(datadist="d") >>> fit = lrm(y~x) >>> # works fine, but >>> plot(fit) #produce the error message >> I cannot reproduce the error on Linux R 2.7.0 using the same version of the >> packages you are using. >> >> Frank >> > > just for the records, I solved the problem: in Windows R 2.7.0 one has to set: > > d = datadist(x,y) > .Options$datadist="d" > > done that functions summary.Design, and plot.Design work fine. > > PF >Thanks for the solution. But I wish someone would tell us why the solution makes sense. If you have changed your R environment in any way from the defaults please let us know. Frank -- Frank E Harrell Jr Professor and Chair School of Medicine Department of Biostatistics Vanderbilt University