solve_se | R Documentation |
Solve the MDYPL state evolution equations with or without intercept, with signal strength or contaminated signal strength
solve_se(
kappa,
ss,
alpha,
intercept = NULL,
start,
corrupted = FALSE,
gh = NULL,
prox_tol = 1e-10,
transform = TRUE,
init_method = "Nelder-Mead",
init_iter = 50,
...
)
kappa |
asymptotic ratio of columns/rows of the design
matrix. |
ss |
signal strength or corrupted signal strength, depending
on whether |
alpha |
the shrinkage parameter of the MDYPL
estimator. |
intercept |
if |
start |
a vector with starting values for |
corrupted |
if |
gh |
A list with the Gauss-Hermite quadrature nodes and
weights, as returned from |
prox_tol |
tolerance for the computation of the proximal
operator; default is |
transform |
if |
init_method |
The method to be passed to |
init_iter |
how many iterations of |
... |
further arguments to be passed to |
init_iter
iterations of optim()
with method = init_method
are
used towards minimizing sum(se)^2
, where se
is a vector of the
state evolution functions. The solution is then passed to
nleqslv::nleqslv()
for a more aggressive iteration. The state
evolution equations are given in expressions (8) (model without
intercept) and expression (15) (model with intercept) in Sterzinger
& Kosmidis (2024).
If corrupted = FALSE
(default), then ss
is the square root of
the signal strength, which is the limit \gamma^2
of
var(X \beta)
. If corrupted = TRUE
, then ss
is the square
root of the corrupted signal strength which is the limit
\nu^2
of var(X hat(beta)(\alpha))
, where
hat(\beta)(\alpha)
is the maximum Diaconis-Ylvisaker prior
penalized likelihood (MDYPL) estimator as computed by mdyplFit()
with shrinkage parameter alpha
.
If intercept = NULL
, then the state evolution equations are
solved for the model without intercept. If intercept
is a real
number, then the state evolution equations for the model with
intercept are solved (i.e. with predictor \eta_i = \theta +
x_i^T \beta
). In that case, what intercept
represents depends on
the value of corrupted
. If corrupted = FALSE
, intercept
represents the oracle value of \theta
, otherwise it represents
the limit iota
of the MDYPL estimator of \theta
as computed by
mdyplFit()
with shrinkage parameter alpha
.
Note that start
is always for mu
, b
,sigma
, as is the
result, regardless whether transform = TRUE
or
not. Transformations during optimization are done internally.
If intercept = NULL
, a vector with the values of mu
,
b
,sigma
. Otherwise, a vector with the values of mu
,
b
,sigma
, and iota
, if corrupted = FALSE
, or the value of
the intercept otherwise. The vector has attributes the state
evolution functions at the solution ("funcs"
), the number of
iterations used by the last optimization method ("iter"
), any
messages from the last optimization method ("message"
), and
information on the optimization methods used
("optimization-chain"
).
Ioannis Kosmidis [aut, cre]
ioannis.kosmidis@warwick.ac.uk, Federico Boiocchi [ctb]
federico.boiocchi@gmail.com, Philipp Sterzinger [ctb, earlier Julia code by]
P.Sterzinger@lse.ac.uk
Zhao Q, Sur P, Cand\'es E J (2022). The asymptotic distribution of the MLE in high-dimensional logistic models: Arbitrary covariance. Bernoulli, 28, 1835–1861. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.3150/21-BEJ1401")}.
Sterzinger P, Kosmidis I (2024). Diaconis-Ylvisaker prior
penalized likelihood for p/n \to \kappa \in (0,1)
logistic
regression. arXiv:2311.07419v2, https://arxiv.org/abs/2311.07419.
## Reproducing Table 13 of Zhao et al. (2022, DOI: 10.3150/21-BEJ1401)
## Not run:
thetas <- c(0, 0.5, 1, 2, 2.5)
gamma0 <- 5
pars3 <- matrix(NA, length(thetas), 3)
pars4 <- matrix(NA, length(thetas), 4)
colnames(pars4) <- c("I_mu", "I_b", "I_sigma", "I_iota")
colnames(pars3) <- c("II_mu", "II_b", "II_sigma")
for (i in seq_along(thetas)) {
start3 <- c(0.5, 1, 1)
pars3[i, ] <- solve_se(kappa = 0.2, ss = sqrt(5 + thetas[i]^2),
alpha = 1, start = start3, init_iter = 0)
start4 <- c(pars3[i, ], thetas[i])
pars4[i, ] <- solve_se(kappa = 0.2, ss = sqrt(5), intercept = thetas[i],
alpha = 1, start = start4, init_iter = 0)
}
cbind(pars3, pars4)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.