| NEWS | R Documentation |
ergm packageDeprecated term argument warnings are now only printed once per session.
mcparallel antiwarnings are now printed less frequently.
ergm version 3.10.1 inadvertently depended on R 3.6. The dependence has been reverted to 3.5.
In all gw* terms, the cutoff= argument can now be controlled by a gw.cutoff term option.
nobs method has now been implemented for ergm objects.
simulate.ergm now takes a basis= argument (defaulting to NULL) that it passes to simulate.formula().
ergm.godfather now takes an additional changes.only= argument, to return statistics relative to initial network.
san's internals have been singificantly updated. In particular,
SAN now performs true simulated annealing, and arguments are interpreted somewhat differently.
SAN's weighting of the statistics is now determined adaptively, in approximate proportion to the standard deviation of proposal distribution of these statistics.
fix.curved and enformulate.curved now handle the dgw*sp terms.
simulate.ergm and others now have an output= argument to provide finer control over the return format. It is to be preferred over the statsonly= argument.
A number of terms (see terms help) now use the new nodal attributes UI.
Hummel steplength search can now be run in parallel.
Terms node*cov and b*cov can now take multiple quantitative attributes or a function that returns a quantitative attribute matrix and produce a statistic for each.
Terms b1sociality and b2sociality have been added.
MCMLE estimation method can now checkpoint and resume optimization. See control.ergm's MCMLE.checkpoint= and MCMLE.resume= arguments.
A variety of documentation expansions, cleanup, and other improvements.
The default method of ergm.stopCluster had not
been exported.
summary.ergm fixed for CD estimation.
diff term with sign.action="abs" no longer produces a warning on bipartite undirected networks. Thanks to Damien Georges for pointing out that this warning is unnecessary.
More robust searching for initialization functions.
Some spurious warnings fixed.
ergm version is now stored in the fitted object; this should produce sensible warnings when, say, trying to compute a summary.ergm on a object produced by an earlier version.
Disambiguation help pages have been added for concepts (such as edges and hamming) that have multiple roles (such as as an ERGM term and as an ERGM sample space constraint), removing duplication of aliases.
Miscellaneous term and example documentation fixes. (Thanks to Christian Loehle and others.)
Low-level function ergm_SAN_slave has now been split out of san like ergm_MCMC_slave.
Lower-level simulate.ergm_model and san.ergm_model have been split out of simulate.formula and san.formula.
gof.ergm now uses a longer MCMC.interval by default.
Parallel processing “API” now handles cluster starting and stopping more intelligently. In particular, ergm.getCluster now automatically sets up the calling function to stop the cluster when the calling function terminantes, as well as keeping track of which packages have already been loaded on the slave nodes.
The vignette no longer tests egocentric code.
Failure to allocate memory in the C routines now produces sensible errors.
A semi-internal pending_udpate_network API can be used to carry around network information between .C calls without having to reconstruct the network.
control.ergm's init.method= argument now overrides the candidate list when selecting initialization methods.
network.update is deprecated in favor of an update.network method.
standardize.network has been deprecated, rendered obsolite by improvements to the network package method.
simulate.ergm now defaults to starting the simulation from the $newnetwork element of the fit object. Thanks to Saeid Ghafouri for raising the issue and Sam Jenness, Steven Goodreau, and Martina Morris for suggesting a solution.
simulate methods now attach an attr(,"monitored") to the returned statistics, indicating which statistics were generated from the monitor= argument.
pending_update_network “API” is more formalized now, including methods overriding those of network.
control$init.method now overrides the candidate list when selecting initialization methods.
The main vignette no longer contains egocentric inference code. Refer to the ergm.ego package.
Improvements to plot.gof for large networks.
logLik.ergm(warn.dyads=) control parameter has been replaced by options(ergm.loglik.warn_dyads=) option.
A number of previously deprecated functions are now defunct; a number of previously defunct functions have been removed.
SAN's documentation has been augmented with examples.
sociality term's arguments attrname and levels have been deprecated.
Most parallel calls are now a little bit more fault-tolerant, retrying on error.
Chad Klumb has been added as a contributor to the package.
Some changes to the Metropolis-Hastings proposal API.
Network initialization functions now return a pointer, and destroying functions free it.
Miscellaneous improvements to low-level C code. In particular, more of the code now runs deterministically.
Improvements to encapsulation of Network structures.
A new API allows arbitrary combinations of dyad-level sample space constraints.
Most terms that take categorical nodal attributes now have a levels= argument, which can be used to control the set and the ordering of the attribute levels.
More informative error messages for term initialization.
ergm.godfather has been reimplemented in the
ergm package, along with its valued counterpart.
New terms have been added or improved:
mm for a more flexible specification
for mixing matrix and marginal effects;
valued versions of sender, receiver,
sociality terms;
ininterval now allows interval openness to be
specified as a character string.
A new term.options control parameter allows additional
arguments to be passed to term initializers.
A numerical instability in penalised pseudolikelihood calculation identified by Kevin Reuning has been fixed.
An error in runtime traceplotting for models with offset terms reported by Kevin Reuning has been fixed.
An error when trying to run the Robbins-Monro algorithm with parallel processing enabled, reported by George G. Vega Yon has been fixed.
A bug in the meandeg term for directed
networks has been fixed.
Miscellaneous bugs in the gof family of functions have
been fixed.
The coefficient names associated with terms enclosed in
offset() are now also enclosed in offset().
summary method for ergm now
uses uses z-tests rather than t-tests, since there
is no “dispersion” parameter. In addition, it no longer
takes a digits= argument.
Handling of missing relations has been improved.
Estimation progress when verbose=TRUE is now a bit less
verbose; use verbose=2 and up to get more information.
The default value of the eval.loglik= argument to ergm is now
controlled by options option ergm.eval.loglik=.
plot.network.ergm has been deprecated.
Some of the unofficial APIs have been changed for consistency and ease of use:
A new set of helper functions has been added to improve handling of nodal attributes. See node-attr-api for details.
summary method for ergm
now exports a $coefficients element (like
summary.lm) and $devtable is a proper table.
New generics nparam and
param_names can be used to query the number
and the names of the parameters in a model.
ergm_model (replacing
ergm.getmodel) is now a full-fledged S3 class,
representing initialized ergm models. See its help for the
major methods. In particular, ergm.getglobalstats has
been repalced with summary.ergm_model.
simulate.formula functions now take an
ergm_model as an argument to monitor=.
Constraint initializers have been renamed from
InitConstraint to InitErgmConstraint. The
constraint implications table has been replaced with
implies and impliedby constraint lists.
Proposal initializers have been renamed from
InitMHP (and InitWtMHP) to
InitErgmProposal (and
InitWtErgmProposal). ergm.MHP.table has been renamed
to ergm_proposal_table.
Reference initializers have been renamed from
InitReference to InitErgmReference. Return
format has also been changed, replacing
ergm.init.methods.
ergm.Clist.* functions have been refined and
specialized. In particular, those that specifically return
numeric vectors (not lists of numeric vectors) for passing
to C code are now methods of the
to_ergm_Cdouble generic.
ergm.getMCMCsample and ergm.mcmcslave have
been renamed to ergm_MCMC_sample and
ergm_MCMC_slave respectively, and the arguments of
ergm_MCMC_sample have been made more user-friendly.
Development of ergm and associated packages is now hosted
on GitHub.
Some terms, particularly dyadcov have been improved.
Bug fixes to contrastive divergence code.
ddsp and dnsp terms now work
correctly for 0 shared partners. (Thanks to Wouter Spekkink for
reporting this bug.)
Miscellaneous bug fixes, typo corrections, and robustifications.
Terms degreepopularity, idegreepopularity, and
odegreepopularity have been renamed to degree1.5,
idegree1.5, and odegree1.5 respectively.
Progress reports for ERGM fits and simulations are now printed
using message, so they can be suppressed with
suppressMessages.
A number of functions deprecated in 2015 have been removed. See
help('ergm-defunct') for the list.
Reverted a non-portable use of C function
alloca(). (Thanks to Prof. Brian Ripley for pointing out
the problem.)
New term diff, a directed analogue to
absdiff has been added, allowing for different
ways to handle differences in nodal attributes.
By default, gof now checks goodness-of-fit
with respect to the estimated model in addition to the specified
terms. This can be used to diagnose convergence.
Terms concurrent, degree,
degrange, and concurrentties
“byarg” argument has been corrected to
“by”.
The bug in the Contrastive Divergence code that caused ERGM
fits with bd constraint to hang has been fixed.
Documentation for the curved ERGM terms has been clarified in a number of places.
Miscellaneous fixes and robustifications in the step-length code.
The geometric decay parameter in gw*sp and
dgw*sp terms has been renamed from alpha to
decay, for consistency with gw*degree terms.
It is now explicitly an error to pass a control=
parameter to the function directly. (Previously, such
parameters were silently ignored.)
The implementation of the bounded degree
(bd) constraint had a bug that
distorted somewhat the distribution of networks simulated (and
therefore estimated) away from the boundary of the constraint.
Vertex labels in the sampson and
samplike datasets have been corrected. (Thanks to
Dr. Linda Tan Siew Li for pointing this error out.)
Use of the deprecated unix.time has been
changed to system.time.
Miscellaneous fixes to the documentation and robustifications.
A new suite of geometrically-weighted family of terms has been added that allow the user to specify what directions of shared partnerships are of interest. The new terms are,
(Directed) geometrically weighted dyadwise shared partners (dgwdsp)
(Directed) geometrically weighted edgewise shared partners (dgwesp)
(Directed) geometrically weighted non-edgewise shared
partners (dgwnsp)
In addition, terms for specific shared partner counts
(ddsp, desp, and dnsp)
have been implemented. See ergm-terms for help.
New terms (binary and valued) b1cov and b2cov have
been implemented, analogous to nodecov,
nodeicov, and nodeocov but for
bipatite networks.
New valued terms atleast,
equalto, and smallerthan have
been implemented. A number of terms that were binary-only before
have been implemented for valued ERGMs.
ergm package now works when loaded (e.g., using
requireNamespace) but not attached (e.g., using
library).
A number of implementation bugs in the valued ERGM terms have been fixed.
Parallel processing when using ergm.userterms and similar was
accidentaly broken in the previous release.
Calculation of Hummel et. al. (2010) steplength for missing data MLE was incorrect; a slower but more accurate algorithm is now used.
Miscellaneous bugfixes and robustifications.
gof.formula and others now work with missing
data.
Miscelaneous cleanups and bug fixes.
robust.inverse has been deprecated in favor
of ginv.
simulate.formula now does parallel processing
more efficiently.
Added a new generic, is.curved that tests if a
given ERGM or model is curved.
Block-diagonal sampler now handles bipartite networks.
Code for parallel calculation has been optimized to provide a bigger gain from multiple cores/processors/nodes.
Bridge sampling to evaluate the log-likelihood at the MLE now prints out a brief progress report by default.
MPLE is no longer used if the model is curved and target statistics are passed, as that caused problems.
MCMC standard error calculation, "dropping" of extreme terms, main MC MLE loop, and other places have been made more robust to weird combinations of estimating problems (e.g., curved terms + target statistics + offset terms + poor starting value).
threepath has been deprecated in
favor of threetrail to more accurately reflect what is
being computed.
The "naive" log-likelihood ratio metric now handles offsets more robustly.
The null log-likelihood calculation prints messages instead of throwing warnings.
The closed-form solution (see Hummel et al., 2010) for the "lognormal" metric had been inadvertantly disabled. It has been reenabled.
Many documentation fixes and clarifications.
Skye Bender-deMoll has been added as a contributor to the package.
Hummel et al.'s convex hull calculation and MCMC SE calculation have been robustified against highly correlated sample statistics by using PCA to rotate them into an orthogonal configuration.
Some functions, particularly ERRVL,
append.rhs.formula, vectors.namesmatch,
term.list.formula, and ergm.update.formula have been
moved to the statnet.common package.
The as.edgelist family of functions have been moved
to the network package.
mcmc.diagnostics.ergm now takes the
esteq= argument. If TRUE, the diagnostics are
performed on the simulated values of the estimating functions. If
FALSE, they are performed on simulated values of canonical
statistics. This obviates and replaces the the curved=
argument.
san when used with curved models now requires
canonical statistics as targets.
Added message to notify when ergm MCMLE does not converge after max iterations.
Copied the combined Sampson monks dataset to ergm. See ?sampson.
ergm simulation, bridge, and logLik functions now "inherit" the parallel setting from the ergm object and generally pass it along when possible.
A new estimate type and source for initial values, contrastive divergence, has been added. It is intended primarily for obtaining initial values for MCMLE for valued ERGMs and ERGMs with complex (e.g., degree and edge-count) constraints. For binary networks with dyad-independent constraints, MPLE still generally works better and remains the default.
To obtain the contrastive divergence estimate, call
ergm with estimate="CD".
Fixed issue where constraints was not appropriately compared to older version
Fixed bug where the deviance of dyad-independence models was incorrectly computed/reported for all models
Removed Rglpk package dependency; replaced it with lpSolve package dependency. See man page for is.inCH for details
Fixed integer overflow bug in sample size reporting
Fixed bug in saving target.stats vector. Offset terms in target.stats output are now NA instead of the SAN network stats. (issue #1049)
Fixed ergm segfault when unknown node attributes are used in ergm formulas. Modified get.node.attr function so that it will check if specified attribute exists. (previous code only checked if network was bipartite). (issue #1140, reported by Philip Leifeld)
Implemented solution to MCMLE steplength getting stuck at 0 for some models where initial networks are very far from target stats. If the Hummel step length is < control$MCMLE.steplength.min, stop with an informative error message, reporting that the the starting value is poor. If using target stats, try increasing SAN parameters, or your configuration may be impossible or unlikely. (This suggests a poor model for the observed data.) MCMLE.steplength.min=0.0001 by default. Estimation will stop with an error message when steplen is smaller than the min for 2 iterations. (issue #1089)
Replaced the integer function abs() by floating point function fabs() in MHproposals_degree.c.
Various documentation corrections and fixes
ergm with estimate="MPLE" will now
refuse to estimate the MPLE for valued ERGMs, curved ERGMs, and ERGMs with
certain complex constraints, as true MPLE
for these is not yet implemented.
CRAN-requested code structure changes (generally not visable to user):
require and library calls changed to requireNamespace and namespace prefixes added to calls from other packages,
S3 methods explicitly registered in NAMESPACE.
packageDescription is no longer used in package citation methods.
Many formerly 'internal' functions have been documented in a semi-stable API for use by developers of other ergm-related packages.
Many formerly undocumented 'internal' functions have been made internal by the NAMESPACE. As far as we know, this avoids functions in use by reverse-Depending packages. These currently appear as commented items in the NAMESPACE file.
Many undocumented 'internal' functions that do not appear to be used have been deprecated and will likely be removed in the next release. See ?ergm_deprecated for a list. If called, these functions will give a Deprecation warning and suggest an alternate function where appropriate.
ergm MCMLE estimation, by default, uses the stepping algorithm by Hummel et al (2012) to determine step length, and terminates estimation when the step length = 1 for two consecutive iterations. The old method (from version 3.1) is still available by setting control parameter MCMLE.termination="Hotelling".
As a result of using Hummel stepping algorithm, the final MCMC sample average may be different from the observed statistics. This is reflected in mcmc.diagnostics(): these plots can no longer be used to ensure that the mean statistics from the model match the observed network statistics. For that functionality, please use the GOF command: gof(object, GOF=~model).
Default ergm MCMC parameters changed to MCMC.interval=1024, MCMC.samplesize=1024, MCMC.burnin=MCMC.interval*16. The final sample size in the Hummel stepping algorithm is boosted by a factor of MCMLE.last.boost
Default values for a number of other control parameters have changed, see CHANGES below.
Parallel functionality: ergm can take user-created clusters as the parallel control parameter. This is the recommended method for using ergm on a high-performance computing cluster. See ergm-parallel. Functionality now implemented via the parallel package, direct dependence on snow package is removed
New helper function search.ergmTerms() function which through the ergm.terms help page and prints out a list of terms appropriate for the specified network's structural constraints, optionally restricting by additional categories and keyword matches.
The estimated covariance matrix of the ergm estimate can be extracted using vcov function.
New EXPERIMENTAL Effective Sample Size (ESS) feature to adaptively determine MCMC length needed to get the specified effective size. Set MCMC.effectiveSize to non-NULL to enable this functionality; 50 is a reasonable value. Includes new ergm.control parameters
MCMC.effectiveSize=NULL
MCMC.effectiveSize.damp=10
MCMC.effectiveSize.maxruns=1000
MCMC.effectiveSize.base=1/2
MCMC.effectiveSize.points=5
MCMC.effectiveSize.order=0.1
MCMLE.MCMC.max.ESS.frac
SAN.control now includes an MPLE.max.dyad.types parameter which defaults to the value of the ergm.control parameter of the same name.
Addition of the StdNormal reference distribution. See ?ergm.references
New ergm terms:
b1mindegree, b2mindegree Minimum degree for the designated mode in a bipartite network
b1nodematch, b2nodematch Nodal attribute-based homophily effect for the designated mode in a bipartite network.
Additional arguments added to the network.update function to control which attributes and properties are updated.
new esteq argument for simulate.formula and simulate.ergm: Default is FALSE. If TRUE, compute the sample estimating equations of an ERGM. If the model is linear, all non-offset statistics are passed. If the model is curved, the score estimating equations (3.1) by Hunter and Handcock (2006) are given instead.
New and expanded tests of the ergm functions for use with R CMD CHECK tools.
Addition of is.durational methods for models and formulas. These functions test whether the terms in an ERGM model or formula is duration dependent or not. If the formula or model does not include any terms that need information about the duration of existing ties, the ergm process can use more efficient internal data structures. This is mostly in support of tergm functionality.
New ergm constraint terms: fixallbut(free.dyads), fixedas(present,absent). The former one can specify the set of dyads (as an edgelist or a network object) to be fixed, the latter one can specify two sets of dyads (as edgelists or networks objects), to be fixed present and fixed absent respectively. See ?ergm.constraints
Potential speed/memory usage improvement: sampling algorithms in both R can C levels are optimized.
ergm now imports the network package via NAMESPACE to avoid internal namespace collisions when used with iGraph
MCMC control parameters changes in control.ergm
default for MCMC.interval increased from 100 to 1000
default for MCMC.burnin changed from 10000 to mcmc.interval*16
default for MCMC.samplesize decreased from 10000 to 1024
MCMLE control parameter changes in control.ergm
a new control argument MCMLE.termination has been added to specify the criterion used for terminating MCMLE estimation.
a new MCMLE.metric argument 'logtaylor' has been added
control parameter MCMCLE.steplength.margin has been added
default value for MCMLE.MCMC.precision has been increased from 0.05 to 0.005
default value for MCMLE.steplength has been changed from 0.5 to 1
ergm.control parameter SA.nsubphases default changed from MCMLE.maxit to 4
control.gof parameter MCMC.burnin default increased from 1000 to 10000
similarly, the default for the MCMC.burnin control parameter for control.simulate, control.simulate.formula and control.simulate.formula.ergm increased from 1000 to 10000
Networks where some statistics are at the lowest value, leading to some terms being -Inf, was not giving the correct estimated coefficients. Now fixed.
Bug fix in Penalized-likelihood MPLE estimation
Bug fix in MPLE estimation when ergm edgecov term has an attribute as a matrix.
Bug fix in ergm nodecov term when attributes are specified only for the second mode in a bipartite network
Various compatibility improvements to avoid warnings from R 3.1.2 and 3.1.3
control parameter MPLE.max.dyad.types is now passed to logLik.ergm() and ergm.bridge.dindstart.llk().
fixes issue reported by Sebastian Daza
Fixed a fencepost bug in ergm.bridge.dindstart.llk()'s construction of the offset coefficient vector in the dyad-independent submodel reported by Philip Leifeld
Adjusted package initialization code to avoid throwing error reported by Philip Leifeld when ergm imported by another package instead of attached to workspace.
Fixed a bug with ergm.pl not dropping the appropriate rows when there are Infs. When network stats are 0, the glm model should now be specified correctly. Reported by Kevin Lewis
Many other fixes...
The ergm control parameter MCMLE.method has been deprecated. By default, ergm uses trust, and falls back to optim with Nelder-Mead method when trust fails.
The ergm control parameter MCMLE.adaptive.epsilon has been removed.
The ergm control parameters MCMC.burnin.retries, MCMC.burnin.check.last and MCMC.burnin.check.alpha have been removed.
MCMLE.adaptive.epsilon parameter has been removed
The faux.high dataset was removed as it was identical to faux.mesa.high
The "iterations" output in an ergm object now returns the number of MCMLE iterations taken by the estimation.
New help page for ergm MetropolisHastings Proposal methods.
An array bounds issue was fixed in the C
code. It has not affected any previous output.
Some spurious convergence warnings are no longer printed by
summary.ergm.
Bugs in the valued Uniform and Discrete Uniform Metropolis-Hastings proposals for missing dyads have been fixed.
Term edgecov invoked with the network
attribute syntax now checks for the presence of the network
attribute in question.
Calling ergm, with estimate="MPLE" for
a curved exponential family model (e.g., gwesp with
fixed=FALSE) is now an error. (Previously, it treated the
curved term as fixed, which was misleading.)
ergmMPLE can now output an array of change
scores associated with each dyad. See the help page for more
details.
Some Metropolis-Hastings proposal functions would sometimes
return incorrect acceptance probabilities when combined with the
bd constraint. This has been
fixed.
In simulate.ergm and
simulate.formula, some combinations of
control$parallel, statsonly, and sequential
arguments would cause an error. This has been fixed. Note that the
current implementation of parallel simulation when
statsonly=FALSE or sequential=FALSE is very
inefficient.
A namespace bug in the likelihod calculation code, reported by Matthew Hoover, has been fixed.
MPLE for some degree-based constraints has been reenabled.
Argument fitmodel to ergmMPLE has been
deprecated in favor of output.
Default SAN.burnin control parameter has been
increased to 100,000.
Long-standing bugs in MCMC standard error calculation have been fixed. In particular, MCMC standard errors are now calculated for offset models, and they are no longer overestimated (by too much).
san now behaves sensibly when the network exceeds the
number of edges allocated.
degrange terms now initialize correctly for their
respective network types.
Some spurious warnings are no longer printed.
A variety of minor errors has been fixed.
ergm's implementation and tests now work with
network version 1.8. (In
particular, bipartite=0 is now treated as a network with no
actors.)
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 discrete 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 re-implemented 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.