% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/get_B.R
\name{.get_B_gee_woodbury}
\alias{.get_B_gee_woodbury}
\title{Path 1a-Woodbury: Gaussian GEE with Woodbury Acceleration}
\usage{
.get_B_gee_woodbury(
  X,
  y,
  K,
  p_expansions,
  VhalfInv_perm,
  order_list,
  A,
  R_constraints,
  constraint_value_vectors,
  family,
  return_G_getB,
  quadprog,
  qp_Amat,
  qp_bvec,
  qp_meq,
  qp_score_function,
  observation_weights,
  wb_decomp,
  wb_sqrt,
  parallel_aga,
  parallel_matmult,
  cl,
  chunk_size,
  num_chunks,
  rem_chunks,
  qp_global,
  ...
)
}
\arguments{
\item{X, y}{Lists of partition-specific design matrices and responses.}

\item{K, p_expansions}{Integer dimensions.}

\item{VhalfInv_perm}{\eqn{\mathbf{V}^{-1/2}} permuted to partition
ordering.}

\item{order_list}{Partition-to-data index mapping.}

\item{A}{Constraint matrix (\eqn{P \times R}).}

\item{R_constraints}{Number of columns of A.}

\item{constraint_value_vectors}{Constraint RHS list.}

\item{family}{GLM family object.}

\item{return_G_getB}{Logical; return covariance components.}

\item{quadprog}{Logical; apply QP refinement.}

\item{qp_Amat, qp_bvec, qp_meq}{QP constraint specification.}

\item{qp_score_function}{Score function for QP step.}

\item{observation_weights}{Observation weights.}

\item{wb_decomp}{Output of \code{.woodbury_decompose_V}.}

\item{wb_sqrt}{Output of \code{.woodbury_halfsqrt_components}.}

\item{parallel_aga, parallel_matmult}{Logical flags.}

\item{cl, chunk_size, num_chunks, rem_chunks}{Parallel parameters.}

\item{qp_global}{Logical; forced TRUE for GEE but passed for
interface consistency.}

\item{...}{Passed to sub-functions.}
}
\value{
Same structure as \code{.get_B_gee_gaussian}.
}
\description{
Gaussian correlated solve using the Woodbury factorization from the
supplement. This replaces the dense GEE path when
\eqn{\mathbf{G}_{\mathrm{off}}^{-1} = \mathbf{E}\mathbf{J}\mathbf{E}^{\top}}
has low rank and computes the constrained estimate through the same
transformed OLS projection as the independent case, with
\eqn{\mathbf{G}^{1/2} =
\mathbf{G}_{\mathrm{on}}^{1/2}\mathbf{F}^{1/2}}.
}
\details{
This function is standalone for the Gaussian Woodbury path: it takes the
decomposition from \code{.woodbury_decompose_V()}, the square-root state
from \code{.woodbury_halfsqrt_components()}, performs the constrained
solve, and returns the same object structure as the dense Gaussian GEE
solver.

Cost is \eqn{O(Kp^3 + Pr^2)} compared to \eqn{O(P^3)} for the dense
Path 1a.
}
\keyword{internal}
