Auxiliary for Controlling ERGM Fitting
Auxiliary function as user interface for fine-tuning 'ergm' fitting.
control.ergm( drop = TRUE, init = NULL, init.method = NULL, main.method = c("MCMLE", "Robbins-Monro", "Stochastic-Approximation", "Stepping"), force.main = FALSE, main.hessian = TRUE, checkpoint = NULL, resume = NULL, MPLE.max.dyad.types = 1e+06, MPLE.samplesize = .Machine$integer.max, init.MPLE.samplesize = function(d, e) max(sqrt(d), e, 40) * 8, MPLE.type = c("glm", "penalized"), MPLE.nonident = c("warning", "message", "error"), MPLE.nonident.tol = 1e-10, MCMC.prop.weights = "default", MCMC.prop.args = list(), MCMC.interval = 1024, MCMC.burnin = MCMC.interval * 16, MCMC.samplesize = 1024, MCMC.effectiveSize = NULL, MCMC.effectiveSize.damp = 10, MCMC.effectiveSize.maxruns = 1000, MCMC.effectiveSize.base = 1/2, MCMC.effectiveSize.points = 5, MCMC.effectiveSize.order = 1, MCMC.return.stats = TRUE, MCMC.runtime.traceplot = FALSE, MCMC.init.maxedges = 20000, MCMC.max.maxedges = Inf, MCMC.addto.se = TRUE, MCMC.compress = FALSE, MCMC.packagenames = c(), SAN.maxit = 4, SAN.nsteps.times = 8, SAN.control = control.san(term.options = term.options, SAN.maxit = SAN.maxit, SAN.prop.weights = MCMC.prop.weights, SAN.prop.args = MCMC.prop.args, SAN.init.maxedges = MCMC.init.maxedges, SAN.max.maxedges = MCMC.max.maxedges, SAN.nsteps = MCMC.burnin * SAN.nsteps.times, SAN.samplesize = MCMC.samplesize, SAN.packagenames = MCMC.packagenames, parallel = parallel, parallel.type = parallel.type, parallel.version.check = parallel.version.check), MCMLE.termination = c("Hummel", "Hotelling", "precision", "none"), MCMLE.maxit = 20, MCMLE.conv.min.pval = 0.5, MCMLE.NR.maxit = 100, MCMLE.NR.reltol = sqrt(.Machine$double.eps), obs.MCMC.samplesize = MCMC.samplesize, obs.MCMC.interval = MCMC.interval, obs.MCMC.burnin = MCMC.burnin, obs.MCMC.burnin.min = obs.MCMC.burnin/10, obs.MCMC.prop.weights = MCMC.prop.weights, obs.MCMC.prop.args = MCMC.prop.args, obs.MCMC.impute.min_informative = function(nw) network.size(nw)/4, obs.MCMC.impute.default_density = function(nw) 2/network.size(nw), MCMLE.MCMC.precision = 0.005, MCMLE.MCMC.max.ESS.frac = 0.1, MCMLE.metric = c("lognormal", "logtaylor", "Median.Likelihood", "EF.Likelihood", "naive"), MCMLE.method = c("BFGS", "Nelder-Mead"), MCMLE.trustregion = 20, MCMLE.dampening = FALSE, MCMLE.dampening.min.ess = 20, MCMLE.dampening.level = 0.1, MCMLE.steplength.margin = 0.05, MCMLE.steplength = NVL2(MCMLE.steplength.margin, 1, 0.5), MCMLE.steplength.parallel = c("observational", "always", "never"), MCMLE.adaptive.trustregion = 3, MCMLE.sequential = TRUE, MCMLE.density.guard.min = 10000, MCMLE.density.guard = exp(3), MCMLE.effectiveSize = NULL, MCMLE.last.boost = 4, MCMLE.steplength.esteq = TRUE, MCMLE.steplength.miss.sample = 100, MCMLE.steplength.maxit = 25, MCMLE.steplength.min = 1e-04, MCMLE.effectiveSize.interval_drop = 2, MCMLE.save_intermediates = NULL, MCMLE.nonident = c("warning", "message", "error"), MCMLE.nonident.tol = 1e-10, SA.phase1_n = NULL, SA.initial_gain = NULL, SA.nsubphases = 4, SA.niterations = NULL, SA.phase3_n = NULL, SA.trustregion = 0.5, RM.phase1n_base = 7, RM.phase2n_base = 100, RM.phase2sub = 7, RM.init_gain = 0.5, RM.phase3n = 500, Step.MCMC.samplesize = 100, Step.maxit = 50, Step.gridsize = 100, CD.nsteps = 8, CD.multiplicity = 1, CD.nsteps.obs = 128, CD.multiplicity.obs = 1, CD.maxit = 60, CD.conv.min.pval = 0.5, CD.NR.maxit = 100, CD.NR.reltol = sqrt(.Machine$double.eps), CD.metric = c("naive", "lognormal", "logtaylor", "Median.Likelihood", "EF.Likelihood"), CD.method = c("BFGS", "Nelder-Mead"), CD.trustregion = 20, CD.dampening = FALSE, CD.dampening.min.ess = 20, CD.dampening.level = 0.1, CD.steplength.margin = 0.5, CD.steplength = 1, CD.adaptive.trustregion = 3, CD.adaptive.epsilon = 0.01, CD.steplength.esteq = TRUE, CD.steplength.miss.sample = 100, CD.steplength.maxit = 25, CD.steplength.min = 1e-04, CD.steplength.parallel = c("observational", "always", "never"), loglik.control = control.logLik.ergm(), term.options = NULL, seed = NULL, parallel = 0, parallel.type = NULL, parallel.version.check = TRUE, ... )
drop |
Logical: If TRUE, terms whose observed statistic values are at the extremes of their possible ranges are dropped from the fit and their corresponding parameter estimates are set to plus or minus infinity, as appropriate. This is done because maximum likelihood estimates cannot exist when the vector of observed statistic lies on the boundary of the convex hull of possible statistic values. |
init |
numeric or
Passing |
init.method |
A chatacter vector or Valid initial methods for a given reference are set by the |
main.method |
One of "MCMLE" (default),"Robbins-Monro",
"Stochastic-Approximation", or "Stepping". Chooses the estimation method
used to find the MLE. Note that in recent versions of ERGM, the enhancements of |
force.main |
Logical: If TRUE, then force MCMC-based estimation method, even if the exact MLE can be computed via maximum pseudolikelihood estimation. |
main.hessian |
Logical: If TRUE, then an approximate Hessian matrix is used in the MCMC-based estimation method. |
checkpoint |
At the start of every iteration, save the state
of the optimizer in a way that will allow it to be resumed. The
name is passed through |
resume |
If given a file name of an |
MPLE.samplesize, init.MPLE.samplesize, MPLE.max.dyad.types |
These parameters control the maximum number of dyads (potential ties) that will be used by the MPLE to construct the predictor matrix for its logistic regression. In general, the algorithm visits dyads in a systematic sample that, if it does not hit one of these limits, will visit every informative dyad. If a limit is exceeded, case-control approximation to the likelihood, comprising all edges and those non-edges that have been visited by the algorithm before the limit was exceeded will be used.
|
MPLE.type |
One of |
MPLE.nonident, MPLE.nonident.tol, MCMLE.nonident, MCMLE.nonident.tol |
A rudimentary nonidentifiability/multicollinearity diagnostic. If
|
MCMC.prop.weights |
Specifies the proposal
distribution used in the MCMC Metropolis-Hastings algorithm. Possible
choices depending on selected The |
MCMC.prop.args |
An alternative, direct way of specifying additional arguments to proposal. |
MCMC.interval |
Number of proposals between sampled statistics. Increasing interval will reduces the autocorrelation in the sample, and may increase the precision in estimates by reducing MCMC error, at the expense of time. Set the interval higher for larger networks. |
MCMC.burnin |
Number of proposals before any MCMC sampling is done. It typically is set to a fairly large number. |
MCMC.samplesize |
Number of network statistics, randomly drawn from a given distribution on the set of all networks, returned by the Metropolis-Hastings algorithm. Increasing sample size may increase the precision in the estimates by reducing MCMC error, at the expense of time. Set it higher for larger networks, or when using parallel functionality. |
MCMC.return.stats |
Logical: If TRUE, return the matrix of MCMC-sampled
network statistics. This matrix should have |
MCMC.runtime.traceplot |
Logical: If |
MCMC.init.maxedges, MCMC.max.maxedges |
These parameters
control how much space is allocated for storing edgelists for
return at the end of MCMC sampling. Allocating more than needed
wastes memory, so |
MCMC.addto.se |
Whether to add the standard errors induced by the MCMC algorithm to the estimates' standard errors. |
MCMC.compress |
Logical: If TRUE, the matrix of sample statistics returned is compressed to the set of unique statistics with a column of frequencies post-pended. |
MCMC.packagenames |
Names of packages in which to look for change statistic functions in addition to those autodetected. This argument should not be needed outside of very strange setups. |
SAN.maxit |
When |
SAN.nsteps.times |
Multiplier for |
SAN.control |
Control arguments to |
MCMLE.termination |
The criterion used for terminating MCMLE estimation:
Note that this criterion is incompatible with
Note that this criterion is incompatible with \code{MCMLE.steplength}\ne 1 or \code{MCMLE.steplength.margin}=\code{NULL}.
|
MCMLE.maxit |
Maximum number of times the parameter for the MCMC should be updated by maximizing the MCMC likelihood. At each step the parameter is changed to the values that maximizes the MCMC likelihood based on the current sample. |
MCMLE.conv.min.pval |
The P-value used in the Hotelling test for early termination. |
MCMLE.NR.maxit, MCMLE.NR.reltol |
The method, maximum number of
iterations and relative tolerance to use within the |
obs.MCMC.prop.weights, obs.MCMC.prop.args, obs.MCMC.samplesize, obs.MCMC.burnin, obs.MCMC.interval, obs.MCMC.burnin.min |
Corresponding MCMC parameters and settings used for the constrained sample when unobserved data are present in the estimation routine. |
obs.MCMC.impute.min_informative, obs.MCMC.impute.default_density |
Controls for imputation of missing dyads for initializing MCMC
sampling. If numeric, |
MCMLE.MCMC.precision, MCMLE.MCMC.max.ESS.frac |
If effective sample size is used (see |
MCMLE.metric |
Method to calculate the loglikelihood approximation. See Hummel et al (2010) for an explanation of "lognormal" and "naive". |
MCMLE.method |
Deprecated. By default, ergm uses |
MCMLE.trustregion |
Maximum increase the algorithm will allow for the approximated likelihood at a given iteration. See Snijders (2002) for details. Note that not all metrics abide by it. |
MCMLE.dampening |
(logical) Should likelihood dampening be used? |
MCMLE.dampening.min.ess |
The effective sample size below which dampening is used. |
MCMLE.dampening.level |
The proportional distance from boundary of the convex hull move. |
MCMLE.steplength.margin |
The extra margin required for a Hummel step
to count as being inside the convex hull of the sample. Set this to 0 if
the step length gets stuck at the same value over several iteraions. Set it
to |
MCMLE.steplength |
Multiplier for step length, which may (for values
less than one) make fitting more stable at the cost of computational
efficiency. Can be set to "adaptive"; see
If |
MCMLE.steplength.parallel |
Whether parallel multisection
search (as opposed to a bisection search) for the Hummel step
length should be used if running in multiple threads. Possible
values (partially matched) are |
MCMLE.adaptive.trustregion |
Maximum increase the algorithm will allow
for the approximated loglikelihood at a given iteration when
|
MCMLE.sequential |
Logical: If TRUE, the next iteration of the fit uses
the last network sampled as the starting network. If FALSE, always use the
initially passed network. The results should be similar (stochastically),
but the TRUE option may help if the |
MCMLE.density.guard.min, MCMLE.density.guard |
A simple heuristic to
stop optimization if it finds itself in an overly dense region, which
usually indicates ERGM degeneracy: if the sampler encounters a network
configuration that has more than |
MCMLE.effectiveSize, MCMLE.effectiveSize.interval_drop, MCMC.effectiveSize, MCMC.effectiveSize.damp, MCMC.effectiveSize.maxruns, MCMC.effectiveSize.base, MCMC.effectiveSize.points, MCMC.effectiveSize.order |
Set |
MCMLE.last.boost |
For the Hummel termination criterion, increase the MCMC sample size of the last iteration by this factor. |
MCMLE.steplength.esteq |
For curved ERGMs, should the estimating function values be used to compute the Hummel step length? This allows the Hummel stepping algorithm converge when some sufficient statistics are at 0. |
MCMLE.steplength.miss.sample |
In fitting the missing data MLE, the rules for step length become more complicated. In short, it is necessary for all points in the constrained sample to be in the convex hull of the unconstrained (though they may be on the border); and it is necessary for their centroid to be in its interior. This requires checking a large number of points against whether they are in the convex hull, so to speed up the procedure, a sample is taken of the points most likely to be outside it. This parameter specifies the sample size. |
MCMLE.steplength.maxit |
Maximum number of iterations in searching for the best step length. |
MCMLE.steplength.min |
Stops MCMLE estimation when the step length gets stuck below this minimum value. |
MCMLE.save_intermediates |
Every iteration, after MCMC
sampling, save the MCMC sample and some miscellaneous information
to a file with this name. This is mainly useful for diagnostics
and debugging. The name is passed through |
SA.phase1_n |
Number of MCMC samples to draw in Phase 1 of the stochastic approximation algorithm. Defaults to 7 plus 3 times the number of terms in the model. See Snijders (2002) for details. |
SA.initial_gain |
Initial gain to Phase 2 of the stochastic approximation algorithm. See Snijders (2002) for details. |
SA.nsubphases |
Number of sub-phases in Phase 2 of the stochastic
approximation algorithm. Defaults to |
SA.niterations |
Number of MCMC samples to draw in Phase 2 of the stochastic approximation algorithm. Defaults to 7 plus the number of terms in the model. See Snijders (2002) for details. |
SA.phase3_n |
Sample size for the MCMC sample in Phase 3 of the stochastic approximation algorithm. See Snijders (2002) for details. |
SA.trustregion |
The trust region parameter for the likelihood functions, used in the stochastic approximation algorithm. |
RM.phase1n_base, RM.phase2n_base, RM.phase2sub, RM.init_gain, RM.phase3n |
The Robbins-Monro control parameters are not yet documented. |
Step.MCMC.samplesize |
MCMC sample size for the preliminary steps of
the "Stepping" method of optimization. This is usually chosen to be smaller
than the final MCMC sample size (which equals |
Step.maxit |
Maximum number of iterations (steps) allowed by the "Stepping" method. |
Step.gridsize |
Integer N such that the "Stepping" style of optimization chooses a step length equal to the largest possible multiple of 1/N. See Hummel et al. (2012) for details. |
CD.nsteps, CD.multiplicity |
Main settings for contrastive divergence to
obtain initial values for the estimation: respectively, the number of
Metropolis–Hastings steps to take before reverting to the starting value
and the number of tentative proposals per step. Computational experiments
indicate that increasing In practice, MPLE, when available, usually outperforms CD for even a very
high The default values have been set experimentally, providing a reasonably stable, if not great, starting values. |
CD.nsteps.obs, CD.multiplicity.obs |
When there are missing dyads,
|
CD.maxit, CD.conv.min.pval, CD.NR.maxit, CD.NR.reltol, CD.metric, CD.method, CD.trustregion, CD.dampening, CD.dampening.min.ess, CD.dampening.level, CD.steplength.margin, CD.steplength, CD.steplength.parallel, CD.adaptive.trustregion, CD.adaptive.epsilon, CD.steplength.esteq, CD.steplength.miss.sample, CD.steplength.maxit, CD.steplength.min |
Miscellaneous tuning parameters of the CD sampler and
optimizer. These have the same meaning as their Note that only the Hotelling's stopping criterion is implemented for CD. |
loglik.control |
|
term.options |
A list of additional arguments to be passed to term initializers. It can also be set globally via |
seed |
Seed value (integer) for the random number generator. See
|
parallel |
Number of threads in which to run the sampling. Defaults to 0 (no parallelism). See the entry on parallel processing for details and troubleshooting. |
parallel.type |
API to use for parallel processing. Supported values
are |
parallel.version.check |
Logical: If TRUE, check that the version of
|
... |
Additional arguments, passed to other functions This argument is helpful because it collects any control parameters that have been deprecated; a warning message is printed in case of deprecated arguments. |
A list with arguments as components.
Snijders, T.A.B. (2002), Markov Chain Monte Carlo Estimation of Exponential Random Graph Models. Journal of Social Structure. Available from https://www.cmu.edu/joss/content/articles/volume3/Snijders.pdf.
Firth (1993), Bias Reduction in Maximum Likelihood Estimates. Biometrika, 80: 27-38.
Hunter, D. R. and M. S. Handcock (2006), Inference in curved exponential family models for networks. Journal of Computational and Graphical Statistics, 15: 565-583.
Hummel, R. M., Hunter, D. R., and Handcock, M. S. (2012), Improving Simulation-Based Algorithms for Fitting ERGMs, Journal of Computational and Graphical Statistics, 21: 920-939.
Kristoffer Sahlin. Estimating convergence of Markov chain Monte Carlo simulations. Master's Thesis. Stockholm University, 2011. https://www2.math.su.se/matstat/reports/master/2011/rep2/report.pdf
ergm()
. The control.simulate
function
performs a similar function for simulate.ergm
;
control.gof
performs a similar function for gof
.
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.