Fitting a specific set of multivariate regression models with order restrictions.
orlmSet(formula, data, set, direction = "increase", n = NULL, base = 1, control = orlmcontrol())
formula | an object of class "formula" (or one that can be coerced to that class): a symbolic description of the model to be fitted. |
---|---|
data | an optional data frame, list or environment (or object coercible by as.data.frame to a data frame) containing the variables in the model. If not found in data, the variables are taken from environment(formula), typically the environment from which lm is called. |
set | either a character string (see |
direction | direction of the order constraints |
n | a (possibly named) vector of sample sizes for each group |
base | column of the constraint matrix representing a control group |
control | a list of control arguments; see |
a list with orlm objects
This function is just a wrapper for repeated calls of orlm
with different constraint definitions. Predefined lists with constraint-sets can be constructed with function constrSet
.
######################## ## Artificial example ## ######################## n <- 10 m <- c(1,2,4,5,2,1) nm <- length(m) dat <- data.frame(grp=as.factor(rep(1:nm, each=n)), y=rnorm(n*nm, rep(m, each=n), 1)) (cs <- constrSet(table(dat$grp), set="sequence"))#> $`1<2` #> $`1<2`$constr #> 1 2 3 4 5 6 #> [1,] -1 1 0 0 0 0 #> #> $`1<2`$rhs #> [1] 0 #> #> $`1<2`$nec #> [1] FALSE #> #> #> $`1<2<3` #> $`1<2<3`$constr #> 1 2 3 4 5 6 #> [1,] -1 1 0 0 0 0 #> [2,] 0 -1 1 0 0 0 #> #> $`1<2<3`$rhs #> [1] 0 0 #> #> $`1<2<3`$nec #> [1] FALSE FALSE #> #> #> $`1<2<3<4` #> $`1<2<3<4`$constr #> 1 2 3 4 5 6 #> [1,] -1 1 0 0 0 0 #> [2,] 0 -1 1 0 0 0 #> [3,] 0 0 -1 1 0 0 #> #> $`1<2<3<4`$rhs #> [1] 0 0 0 #> #> $`1<2<3<4`$nec #> [1] FALSE FALSE FALSE #> #> #> $`1<2<3<4<5` #> $`1<2<3<4<5`$constr #> 1 2 3 4 5 6 #> [1,] -1 1 0 0 0 0 #> [2,] 0 -1 1 0 0 0 #> [3,] 0 0 -1 1 0 0 #> [4,] 0 0 0 -1 1 0 #> #> $`1<2<3<4<5`$rhs #> [1] 0 0 0 0 #> #> $`1<2<3<4<5`$nec #> [1] FALSE FALSE FALSE FALSE #> #> #> $`1<2<3<4<5<6` #> $`1<2<3<4<5<6`$constr #> 1 2 3 4 5 6 #> [1,] -1 1 0 0 0 0 #> [2,] 0 -1 1 0 0 0 #> [3,] 0 0 -1 1 0 0 #> [4,] 0 0 0 -1 1 0 #> [5,] 0 0 0 0 -1 1 #> #> $`1<2<3<4<5<6`$rhs #> [1] 0 0 0 0 0 #> #> $`1<2<3<4<5<6`$nec #> [1] FALSE FALSE FALSE FALSE FALSE #> #> #> $unconstrained #> $unconstrained$constr #> 1 2 3 4 5 6 #> [1,] 0 0 0 0 0 0 #> #> $unconstrained$rhs #> [1] 0 #> #> $unconstrained$nec #> [1] FALSE #> #>(oss <- orlmSet(y ~ grp-1, data=dat, set=cs))#> $`1<2` #> #> Call: #> orlm.formula(formula = formula, data = data, constr = s$constr, #> rhs = s$rhs, nec = s$nec, control = control) #> #> Coefficients: #> grp1 grp2 grp3 grp4 grp5 grp6 #> 1.212 2.413 4.576 4.683 1.993 1.414 #> #> #> $`1<2<3` #> #> Call: #> orlm.formula(formula = formula, data = data, constr = s$constr, #> rhs = s$rhs, nec = s$nec, control = control) #> #> Coefficients: #> grp1 grp2 grp3 grp4 grp5 grp6 #> 1.212 2.413 4.576 4.683 1.993 1.414 #> #> #> $`1<2<3<4` #> #> Call: #> orlm.formula(formula = formula, data = data, constr = s$constr, #> rhs = s$rhs, nec = s$nec, control = control) #> #> Coefficients: #> grp1 grp2 grp3 grp4 grp5 grp6 #> 1.212 2.413 4.576 4.683 1.993 1.414 #> #> #> $`1<2<3<4<5` #> #> Call: #> orlm.formula(formula = formula, data = data, constr = s$constr, #> rhs = s$rhs, nec = s$nec, control = control) #> #> Coefficients: #> grp1 grp2 grp3 grp4 grp5 grp6 #> 1.212 2.413 3.751 3.751 3.751 1.414 #> #> #> $`1<2<3<4<5<6` #> #> Call: #> orlm.formula(formula = formula, data = data, constr = s$constr, #> rhs = s$rhs, nec = s$nec, control = control) #> #> Coefficients: #> grp1 grp2 grp3 grp4 grp5 grp6 #> 1.212 2.413 3.167 3.167 3.167 3.167 #> #> #> $unconstrained #> #> Call: #> orlm.formula(formula = formula, data = data, constr = s$constr, #> rhs = s$rhs, nec = s$nec, control = control) #> #> Coefficients: #> grp1 grp2 grp3 grp4 grp5 grp6 #> 1.212 2.413 4.576 4.683 1.993 1.414 #> #> #> attr(,"class") #> [1] "list" "orlmlist"# the same as: oss <- orlmSet(y ~ grp-1, data=dat, set="sequence")