| NEWS | R Documentation |
ergm package Infrastructure
has been added for fitting valued ERGMs of Krivitsky (2012). The
“user interface” is subject to change, however. (The
implementation of reference measures for counts can be found in R package
ergm.count)
ergm itself now includes
rudimentary implementations for discrtete uniform and continuous
uniform reference measures. See help('ergm-references').
A large number of ERGM terms for counts have been
implemented and documented. See help('ergm-terms').
A number of new binary ERGM terms have been
implemented as well. Particularly, degrange,
odegrange, idegrange,
b1degrange, and b2degrange, which
generalize degree and concurrent by
allowing the user to specify contiguous ranges of degree values.
A rudimentary “degeneracy” heuristic has been
implemented and enabled by default, immediately stopping MC MLE
optimization if simulating from a parameter configuration of
interest encounters produces networks with too many edges. See
MCMLE.density.guard argument in control.ergm
documentation for details. Note that this is intended mainly to
keep the fitting from bogging down on bad models, and it should
not be used as a formal degeneracy diagnostic.
ergm now keeps track of of when
it is and when it's not possible to evaluate the likelihood of the
null model (a model with no terms), and takes into account whether
a model is constrained, has missing dyads, etc.. This can also
improve the MPLE.
A new generic, logLikNull has been added that
returns the null model likelihood.
For models where this is not possible, the null likelihood (and deviance, etc.) is defined to be 0.
A new constraint, blockdiag has been added, for
modeling networks with only within-block ties allowed. This is
useful for, e.g., fitting an ERGM to several networks jointly. See
? 'ergm-constraints' for available constraints.
The implementation of dynamic network models has been moved to a
new package, tergm.
Sample space constraints degrees,
idegrees, odegrees,
b1degrees, b2degrees have
been reimplemented or fixed.
Certain functions are now only exported if they haven't
already be defined (e.g., by
latentnet).
Documentation and citation information have been cleaned up
and reorganized. In particular, see ? 'ergm-constraints',
? 'ergm-terms' for an article on terms, and ?
'ergm-references' for reference measures implemented.
ergm now exports header and
stub files for the LinkingTo: API, and package
ergm.userterms now uses it. Please see
inst/include/README before using it, however.
Dynamic network modeling code has been moved to
tergm package.
Function statnet.edit has been removed.
Some bugs introduced by the developers relying on a certain
behavior of the .C API which had changed have been
fixed.
Some undocumented terms have been fixed and documented,
including odegreepopularity,
idegreepopularity, degreepopularity,
and smalldiff.
Facilities for fitting and simulating Separable Temporal
ERGMs (STERGMs) of Krivitsky (2009) and, Krivitsky and Handcock
(2010) have been added. See stergm and
simulate.
ergm MCMLE will now test if the optimization
has converged to the MLE and stop if it detects convergence.
ergm Now checks if a constraint specified in
the constraints argument fixes any statistics in the
model (e.g., ergm(y~edges, constraints=~edges)). It issues a
warning, and fixes their parameters at 0.
simulate functions now take an argument
monitor, a one-sided formula for additional statistics to
be returned. This allows one to easily simulate from an
ergm or stergm fit statistics that
were not in the fitted model.
ergm can now optionally detect when a burn-in
is insufficient and retry it until it is sufficient. See
control.ergm argument MCMC.burnin.retries for
details.
ergm MCMLE now stores “history” of
θ and simulated statistics.
ergm extreme statistics detection (if
control.ergm(drop=TRUE)) can now detect both extremely high
and extremely low values, setting the coefficients to +Inf and
-Inf respectively. Direction of “dropping” is returned.
An initial method "zeros" has been, to use a vector
of zeros as starting parameters.
A number of new ERGM terms have been added.
ergm, simulate,
and other functions now enforce a conceptual separation between
what to fit, which is controlled by arguments to the
function and how to fit it, which is controlled by the
control lists, generated by control.ergm and
control.simulate, respectively. (Old arguments for
ergm and simulate still work with a warning, and
they may be removed later.)
The data structure returned by
simulate is now a list of networks
with attr-style attributes describing how it was
generated. The list has print and summary methods, and it can be
used in the left-hand side of a
summary formula.
Matrices of sample statistics returned by ergm
are mcmc objects (or
mcmc.list objects, for parallel computing).
Arguments theta have been renamed to
coef. Arguments meanstats have been renamed to
target.stats. Many control parameters have also been
renamed and reorganized. (Old parameters still work with a
warning, and they may be removed later.)
A number of arguments to control.ergm,
control.simulate, and others, have been renamed.
ergm now uses bridge sampling evaluate the
log-likelihood by default. (Before, the default was to not
evaluate it.)
mcmc.diagnostics has been
rewritten:
Raftery-Lewis diagnostic has been replaced with several others, including tests of (non)convergence.
For fits with missing data, diagnostics for both the constrained and the unconstrained sample are printed and plotted.
Plots now use lattice graphics, if available.
Handling of networks with many edges has been improved somewhat.
gof.ergm and gof.formula now set
the statistics used to diagnose the fit adaptively, depending on
the directedness of the network being modeled.
The following control parameters have been removed or
renamed:
maxedges, prop.weights, prop.args,
packagename, summarizestats, nr.maxit,
nr.reltol, maxNumDyadTypes,
steplength, initialfit, style,
obs.MCMCsamplesize, obs.interval, obs.burnin,
compress, metric, force.mcmc,
adaptive.trustregion, adaptive.epsilon,
mcmc.precision, method, MPLEtype,
check.degeneracy, maxMPLEsamplesize,
MPLEsamplesize, phase1_n, nsubphases,
RobMon.phase1n_base, RobMon.phase2n_base,
RobMon.phase2sub, RobMon.init_gain,
RobMon.phase3n, trustregion, stepMCMCsize,
steppingmaxit, gridsize, sequential,
returnMCMCstats, calc.mcmc.se, hessian,
prop.weights, prop.args, and packagenames.
The following arguments to functions have been moved to the
corresponding control functions, removed or renamed:
burnin, MCMCsamplesize, interval,
maxit, seed, and theta0.
Fixed some errors in log-likelihood calculation, especially in models with missing data and/or offset terms.
Parallel processing has been made more robust. In
particular, ergm now checks to make
sure that the version it finds on slave nodes is the same as the
version on the master. Also, although ergm will
start its own cluster as needed, it will also detect if an MPI
cluster has already been started and use that.
Several bugs relating to handling models with with offset terms have been fixed.
The bounded degree (bd) ERGM would sometimes tabulate
degrees incorrectly. This has been fixed.
Miscellaneous robustification and bug fixes.
The “news” feature has been implemented. Type
news(package="ergm") to see the version's updates.
A function ergm.allstats was added to
calculate all possible network statistics for a given ERGM and
network. The number of possible networks grows on the order of 2^{n^2}, so this should only be used for small networks. Related function ergm.exact calculates exact log-likelihood for a particular canonical parameter and a particular ergm.
A cutoff argument has been added to specify maximum shared partner
count or degree to be evaluated to the following model terms:
gwb1degree, gwb2degree, gwdegree, gwdsp, gwesp, gwidegree, gwnsp,
gwodegree. This significantly speeds up fitting
curved ERGMs on large, sparse networks.
The logLik method for
ergm objects, with the attendant AIC
and BIC methods, has been implemented.
Calculation of loglikelihoods for MCMC-based ergm fits has
been reengineered to use bridge sampling for dyad-dependent
models. (See logLik.ergm,
ergm.bridge.llr, and
ergm.bridge.dindstart.llk.)
A generic function is.dyad.independent to test
whether an ERGM fit or formula is dyad-independent has been added.
A generic function fix.curved to convert
curved exponential family models to variants in which the curved
parameters are fixed has been added. See the function
documentation for usage scenarios.
A generic function enformulate function to
work around a current limitation in the ergm
function to substitute curved parameters from a model fit into the
model formula, allowing them to be used as initial values (the
theta0 argument). See the function documentation for usage
scenarios.
The following new models terms have been added:
degcrossprod and degcor.
Tests for change statistics have been added.
A new dataset has been added: kapferer, the well-known
tailor shop network dataset of Kapferer (1972).
The package has been “standardized” to represent
directed ties as (tail,head).
Log-likelihood calculation for dyad-dependent models has been fixed.
Some errors in estimating parameters in curved exponential family models have been fixed.
gof now automatically selects the
right goodness-of-fit statistics for the network type (directed
vs. undirected) given.
Bug in is.inCH in 2.4-2 fixed in 2.4-3.
as.directed function has been removed.
All model terms included in the package have been
reimplemented using the new InitErgmTerm framework.