
Get the indices or values of a subset of non-eliminated coefficients selected via a Tk dialog or by pattern matching.
pickCoef(object, pattern = NULL, value = FALSE, ...)
If value = FALSE
(the default), a named vector of indices,
otherwise the values of the selected coefficients. If no coefficients
are selected the returned value will be NULL
.
a model object.
character string containing a regular expression or
(with fixed = TRUE
) a pattern to be matched exactly. If
NULL
, a Tk dialog will open for coefficient selection.
if FALSE
, a named vector of indices, otherwise
the value of the selected coefficients.
arguments to pass on to pickFrom if
pattern
is missing, otherwise grep
. In particular, fixed
= TRUE
specifies that pattern
is a string to be matched as is.
Heather Turner
set.seed(1)
### Extract indices for use with ofInterest
## fit the "UNIDIFF" mobility model across education levels
unidiff <- gnm(Freq ~ educ*orig + educ*dest +
Mult(Exp(educ), orig:dest),
family = poisson, data = yaish, subset = (dest != 7))
## set coefficients in first constituent multiplier as 'ofInterest'
## using regular expression
ofInterest(unidiff) <- pickCoef(unidiff, "[.]educ")
## summarise model, only showing coefficients of interest
summary(unidiff)
## get contrasts of these coefficients
getContrasts(unidiff, ofInterest(unidiff))
### Extract coefficients to use as starting values
## fit diagonal reference model with constant weights
set.seed(1)
## reconstruct counts voting Labour/non-Labour
count <- with(voting, percentage/100 * total)
yvar <- cbind(count, voting$total - count)
classMobility <- gnm(yvar ~ -1 + Dref(origin, destination),
family = binomial, data = voting)
## create factors indicating movement in and out of salariat (class 1)
upward <- with(voting, origin != 1 & destination == 1)
downward <- with(voting, origin == 1 & destination != 1)
## extract diagonal effects from first model to use as starting values
diagCoef <- pickCoef(classMobility, "Dref(., .)", fixed = TRUE,
value = TRUE)
## fit separate weights for the "socially mobile" groups
## -- there are now 3 parameters for each weight
socialMobility <- gnm(yvar ~ -1 + Dref(origin, destination,
delta = ~ 1 + downward + upward),
family = binomial, data = voting,
start = c(rep(NA, 6), diagCoef))
Run the code above in your browser using DataLab