Claus Dethlefsen wrote:
Thank you for the advice. I have now boiled my problem down to the
following:

How do I create fm2 from fm1 ?

fm1 <-  Y ~ 1 + tvar(x:A) + tvar(z) + u + tvar(B) + tvar(poly(v,3))
fm2 <-  Y ~ 1 + x:A + z + u + B + poly(v, 3)

Thus, how do I simply remove tvar( * ) from a formula? Do I have to write a
function to parse the string and then re-create the formula? Is there an
easy way of doing this?
 . . .

The Design package does manipulations of this sort to "understand" the model design to generate automatic tests of nonlinearity, pooled main effect + interaction tests, etc. Related to your first issue, Design interprets a formula to find the "innermost" variable which is used on axes when plotting predicted values, and for other purposes.

In Function.Design you will see code like

TL <- attr(terms(object),"term.labels")
#Get inner transformations
from <- c('asis(*)','pol(*)','lsp(*)','rcs(*)','catg(*)','scored(*)',
  'strat(*)','matrx(*)','I(*)')
to   <- rep('*',9)

trans <- paste("h(",sedit(TL[ac!=9], from, to),")",sep="")
#change wrapping function to h()
h <- function(x,...) deparse(substitute(x))
for(i in (1:pm)) trans[i] <- eval(parse(text=trans[i]))

This may indirectly give you an idea, or you might see if the Design package does what you need in general [it doesn't support orthogonal polynomials, which I no longer find useful; it supports regular polynomials and regression splines].

--
Frank E Harrell Jr   Professor and Chair           School of Medicine
                     Department of Biostatistics   Vanderbilt University

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to