##
## Attaching package: 'netOP'
## The following objects are masked from 'package:base':
##
## colMeans, colSums, diag, mean, rowMeans, rowSums, sum
The methods address related but distinct tasks. Start from the scientific question and the assumed network model rather than treating their scores as interchangeable.
| Method | Primary role | Natural use |
|---|---|---|
| NETCROP | Model selection by overlapping-network subsampling | Select block-model community count, RDPG or LSM dimension, or a spectral regularizer |
| ECV | Model selection by holding out edges | Select block-model community count or RDPG dimension |
| NCV | Community-count selection by holding out nodes | Select an SBM or DCBM community count |
| DKEST | Spectral-regularizer selection | Tune regularization for spectral clustering |
| SONNET | Scalable clustering by combining overlapping subnetworks | Fit a large network when a full-network clustering fit is inconvenient |
NETCROP, ECV, and NCV are alternative validation strategies. Their loss values come from different holdout constructions and should not be compared as though they were measurements on a common scale. DKEST has the narrower purpose of regularizer tuning. SONNET is principally an estimator, not a substitute for a model-selection criterion; pair it with a justified community count or a selection workflow when that count is unknown.
Use the same deterministic network when comparing workflows conceptually. Generator metadata remains available without storing a dense probability matrix.
A <- generate_sbm(
n = 200,
K = 3,
alpha = 0.5,
beta = 0.08,
seed = 2026,
ncores = 1
)
truth <- get_generator_parameters(A)
table(truth$g_true)##
## 1 2 3
## 54 76 70
The generator returns sparse output by default where supported.
netOP re-exports Matrix-aware mean(),
sum(), diag(), rowMeans(),
rowSums(), colMeans(), and
colSums(), so ordinary summaries dispatch correctly after
library(netOP). Request dense output explicitly only when
another tool needs it.
For a block model with an unknown community count, a natural
introductory candidate set is 1:5:
netcrop_fit <- netcrop_blockmodel(
A, K_candidates = 1:5,
nrep = 1, ncores = 1, seed = 1, verbose = FALSE
)
ecv_fit <- ecv_stability_blockmodel(
A, max_K = 5,
nrep = 1, ncores = 1, seed = 1, verbose = FALSE
)
ncv_fit <- ncv_stability_blockmodel(
A, max_K = 5,
nrep = 1L, ncores = 1, seed = 1, verbose = FALSE
)ECV and NCV use maximum-size interfaces and evaluate the sequence through that maximum. NETCROP accepts an explicit candidate vector.
For an RDPG or LSM example with true dimension d = 3,
use candidate dimensions 1:5:
rdpg_fit <- netcrop_rdpg(
A, d_candidates = 1:5,
nrep = 1, ncores = 1, seed = 2, verbose = FALSE
)
ecv_rdpg_fit <- ecv_stability_rdpg(
A, max_d = 5,
nrep = 1, ncores = 1, seed = 2, verbose = FALSE
)
lsm_fit <- netcrop_lsm(
A, d_candidates = 1:5,
nrep = 1, ncores = 1, seed = 2, verbose = FALSE
)For regularized spectral clustering, compare NETCROP’s regularizer
selector with DKEST, using the same scientifically appropriate candidate
grid. For a known K = 3, SONNET provides scalable fitting
through sonnet(); its shared- and independent-overlap
variants are described on the SONNET help pages.
Pass seed to randomized generators and fitting or
selection routines. Examples use ncores = 1 to behave
consistently across operating systems and to keep article builds
lightweight. Production runs may use more workers where the function
supports them; the individual help page documents how its seed is
applied to parallel tasks. Record the package version, candidate set,
loss, repetition count, seed, and worker count with reported
results.
Use citation("netOP") for machine-readable citations.
The method help pages provide method-specific references and
implementation disclosures. In particular, netOP’s self-contained ECV
implementation is derived from CRAN randnet 1.0, but
randnet is not a netOP dependency. File-level licensing and
provenance are recorded in inst/COPYRIGHTS.