ivar function

Expand Individual-varying covariates in models

Expand Individual-varying covariates in models

Expands a vector of individual-varying values into a 2-d matrix of the appropriate size for use in MRA model formulas.

ivar(x, ns=attr(x,"ns"), drop.levels=attr(x,"drop.levels"))

Arguments

  • x: The vector of individual varying values to expand. This can be a factor (see as.factor). It is assumed that length(x) = number of individuals. If not, an error will occur in whatever routine called this function (e.g., F.3d.model.matrix).

  • ns: Number of sampling occasions. Default is to use the 'ns' attribute of x. If ns is not specified or is not an attribute of x, an error is thrown.

  • drop.levels: A vector of integers specifying which levels of a factor to drop. Only applicable if x is a factor. By default, the the 'drop.levels' attribute of x is used. If x does not have a 'drop.levels' attribute, the first level of the factor is dropped. drop.levels=length(levels(x))

    does the SAS thing and drops the last level of a factor. Specifying multiple levels to drop is acceptable. E.g., drop.levels=c(1,2,7) drops the 1st, 2nd, and 7th levels of the factor, whatever they are. First level of a factor is first element of levels(x). Second level of a factor is second element of levels(x), and so on. Setting drop.levels to 0, a negative number, or a number greater than the number of levels will not drop any levels (this is so-called cell mean coding). Keep in mind presence of the intercept.

Returns

A 2-d matrix of size length(x) x ns suitable for passing to the Fortran DLL of MRA for estimation. Values within rows are constant, values across rows vary according to x. If x is a factor, this matrix contains 0-1 indicator functions necessary to fit the factor.

If x is a factor, attributes of the returned matrix are "levels" = levels of the factor and "contr" = contrasts used in the coding (always contr.treatment). For other contrast coding of factors, make your own 2-d matrix with a call to the appropriate function (like contr.poly).

Author(s)

Trent McDonald, WEST-INC, tmcdonald@west-inc.com

See Also

F.cjs.estim, tvar

Examples

nan <- 30 ns <- 5 age <- as.factor(sample( c("J","S1","S2","Adult"), size=nan, replace=TRUE )) attr(age,"ns") <- ns # Note that levels get reordered (by R default, alphabetically) attr(age,"drop.levels") <- (1:length(levels(age)))[ levels(age) == "J" ] age.mat <- ivar(age) # level J is the reference age.mat <- ivar(age, drop=4) # level S2 is the reference # Look at 3-D matrix produced when called with a factor. dim(age.mat) <- c(nan,ns,length(levels(age))-1) print(age.mat) # each page is the 2-d matrix used in the fit. print(age.mat[1,,]) age.mat <- ivar(age, drop=c(3,4)) # level S1 and S2 are combined and are the reference # compare above to ivar( c(1,1,2,2,3,3), 5 )
  • Maintainer: Trent McDonald
  • License: GNU General Public License
  • Last published: 2018-01-05

Useful links