% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/api-reports.R
\name{mfrm_network_analysis}
\alias{mfrm_network_analysis}
\title{Analyze the MFRM design network}
\usage{
mfrm_network_analysis(
  fit,
  diagnostics = NULL,
  top_n_subsets = NULL,
  min_observations = 0,
  include_graph = FALSE
)
}
\arguments{
\item{fit}{Output from \code{\link[=fit_mfrm]{fit_mfrm()}}.}

\item{diagnostics}{Optional output from \code{\link[=diagnose_mfrm]{diagnose_mfrm()}}.}

\item{top_n_subsets}{Optional maximum number of connected-subset rows to
retain before constructing the graph.}

\item{min_observations}{Minimum observations required to keep a subset row.}

\item{include_graph}{Logical; if \code{TRUE}, include the underlying \code{igraph}
object in the returned bundle. Defaults to \code{FALSE} so outputs remain easy
to serialize.}
}
\value{
A bundle of class \code{mfrm_network_analysis} containing:
\itemize{
\item \code{summary}: graph-level connectedness and vulnerability metrics
\item \code{node_metrics}: node-level degree, strength, centrality, and cutpoint flags
\item \code{edge_metrics}: edge-level weights, betweenness, and bridge flags
\item \code{facet_summary}: facet-level aggregation of node/bridge indicators
\item \code{cut_nodes}: articulation-point rows from \code{node_metrics}
\item \code{bridge_edges}: bridge rows from \code{edge_metrics}
}
}
\description{
Analyze the MFRM design network
}
\details{
\code{mfrm_network_analysis()} treats the person/facet-level observation design as
an undirected weighted graph. Nodes are person or facet levels; edges connect
levels that co-occur in at least one observed rating; edge weights are
co-observation counts. The resulting network metrics are design diagnostics,
not psychometric measures of person ability or rater quality.
\code{plot(net, type = "centrality")}, \code{plot(net, type = "facet_summary")}, and
\code{plot(net, type = "network")} provide immediate visual checks; use
\code{draw = FALSE} to extract reusable plot data.

The most useful review columns are:
\itemize{
\item \code{Components}: more than one component means the design has disconnected
measurement subsets.
\item \code{IsArticulationPoint}: a node whose removal would increase disconnectedness.
\item \code{IsBridge}: an edge whose removal would increase disconnectedness.
\item \code{Betweenness}: a routing-dependence indicator; high values identify levels
that carry many shortest paths through the design graph.
}

In incomplete rater-mediated designs, these graph summaries help identify
fragile linking structures before interpreting facet measures or planning
additional data collection.
}
\section{References}{

\itemize{
\item McEwen, M. R. (2015). \emph{Development of a Software Prototype for Generating
and Classifying Incomplete Many-Facet-Rasch Model Rating Designs}.
Brigham Young University.
\item Csardi, G., Nepusz, T., Traag, V., Horvat, S., Zanini, F., Noom, D., &
Muller, K. (2026). \emph{igraph: Network Analysis and Visualization}.
}
}

\examples{
\donttest{
toy <- load_mfrmr_data("example_core")
fit <- fit_mfrm(toy, "Person", c("Rater", "Criterion"), "Score",
                method = "JML", maxit = 30)
if (requireNamespace("igraph", quietly = TRUE)) {
  net <- mfrm_network_analysis(fit)
  net$summary
  head(net$node_metrics)
  net$cut_nodes
  plot(net, type = "centrality", draw = FALSE)
}
}
}
\seealso{
\code{\link[=subset_connectivity_report]{subset_connectivity_report()}}, \code{\link[=diagnose_mfrm]{diagnose_mfrm()}},
\link{mfrmr_linking_and_dff}, \link{mfrmr_visual_diagnostics}
}
