[R] problem with using transace

anne.piotet@urbanet.ch anne.piotet at urbanet.ch
Thu Dec 2 09:34:01 CET 2004

Frank, thank you very much for your answer, as it fixed up nicely my problem. I am really sorry to have asked a question which you already answered a long time ago, but I am a bit overwhelmed with the R, contributed packages and help list documentation....Anyway  thanks again


PS isn't it fun to use packages developped for biostats in metal industry applications? 

>anne.piotet at urbanet.ch wrote:
>>>I am trying to use the Hmisc function transace to transform predictors
>>>xtrans<-transace(x,binary=pressres',monotonic='flowstress', categorical='alloy')
>>>and I am getting the following message¨
>>>Error in ace(x[, -i], x[, i], monotone = im, categorical = ic) : 
>>>	unused argument(s) (monotone ...)
>>>Any idea?
>> thanks anne
>>>thank for your help
>The corrected version (below) will fix that problem but note that there 
>is a bug in ace causing it not to allow a monotonicity constraint when a 
>variable is on the left hand side.  This is inconsistent with the ace 
>documentation.  There are other problems in ace in which it checks 
>column numbers against the number of rows in the x matrix instead of the 
>number of columns.  The internal version of ace defined inside areg.boot 
>fixes the latter problem.  Note that I reported these problems a long 
>time ago.
>transace <- function(x, monotonic=NULL, categorical=NULL, binary=NULL, 
>pl=TRUE) {
>   if(.R.) require('acepack')  # provides ace, avas
>nam <- dimnames(x)[[2]]
>omit <- is.na(x %*% rep(1,ncol(x)))
>omitted <- (1:nrow(x))[omit]
>if(length(omitted)) x <- x[!omit,]
>p <- ncol(x)
>xt <- x  # binary variables retain original coding
>if(!length(nam)) stop("x must have column names")
>rsq <- rep(NA, p)
>names(rsq) <- nam
>for(i in (1:p)[!(nam %in% binary)])	{
>   lab <- nam[-i]
>   w <- 1:(p-1)
>   im <- w[lab %in% monotonic]
>   ic <- w[lab %in% categorical]
>   if(nam[i] %in% monotonic) im <- c(0, im)
>   if(nam[i] %in% categorical) ic <- c(0, ic)
>   m <- 10*(length(im)>0)+(length(ic)>0)
>   if(m==11) a <- ace(x[,-i], x[,i], mon=im, cat=ic)
>   else if (m==10) a <- ace(x[,-i], x[,i], mon=im)
>   else if(m==1) a <- ace(x[,-i], x[,i], cat=ic)
>   else a <- ace(x[,-i], x[,i])
>   xt[,i] <- a$ty
>   rsq[i] <- a$rsq
>   if(pl)plot(x[,i], xt[,i], xlab=nam[i], ylab=paste("Transformed",nam[i]))
>cat("R-squared achieved in predicting each variable:\n\n")
>attr(xt, "rsq") <- rsq
>attr(xt, "omitted") <- omitted
>> ______________________________________________
>> R-help at stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>Frank E Harrell Jr   Professor and Chair           School of Medicine
>                      Department of Biostatistics   Vanderbilt University

More information about the R-help mailing list