summary.mdyplFit | R Documentation |
"mdyplFit"
objectsSummary method for "mdyplFit"
objects
## S3 method for class 'mdyplFit'
summary(
object,
hd_correction = FALSE,
se_start,
gh = NULL,
prox_tol = 1e-10,
transform = TRUE,
init_iter = 50,
init_method = "Nelder-Mead",
...
)
## S3 method for class 'summary.mdyplFit'
print(
x,
digits = max(3L, getOption("digits") - 3L),
symbolic.cor = x$symbolic.cor,
signif.stars = getOption("show.signif.stars"),
...
)
object |
an object of class |
hd_correction |
if |
se_start |
a vector of starting values for the state evolution
equations. See the |
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_iter |
how many iterations of |
init_method |
The method to be passed to |
... |
further arguments to be passed to |
x |
an object of class |
digits |
the number of significant digits to use when printing. |
symbolic.cor |
logical. If |
signif.stars |
logical. If |
If hd_correction = TRUE
, the sloe()
estimator of the square
root of the corrupted signal strength is estimated from object
,
as are the conditional variances of each covariate given the others
(excluding the intercept). The latter are estimated using residual
sums of squares from the linear regression of each covariate on all
the others, as proposed in Zhao et al (2021, Section 5.1). Then the
appropriate state evolution equations are solved using solve_se()
with corrupted = TRUE
, and the obtained constants are used to
rescale the estimates, and adjust estimated standard errors and
z-statistics as in Sterzinger & Kosmidis (2024).
The key assumptions under which the rescaled estimates and corrected standard errors and z-statistics are asymptotically valid are that the covariates have sub-Gaussian distributions, and that the signal strength, which is the limit
\gamma^2
of var(X \beta)
is finite as p / n \to \kappa \in (0, 1)
, with \kappa \in
(0, 1)
. See Sterzinger & Kosmidis (2024).
If hd_correction = TRUE
, and the model has an intercept, then the
result provides only a corrected estimate of the intercept with no
accompanying standard error, z-statistic, and p-value. Also,
vcov(summary(object, hd_correction = TRUE))
is always
NULL
. Populating those objects with appropriate estimates is the
subject of current work.
A list with objects as in the result of stats::summary.glm()
,
with extra component se_parameters
, which is the vector of the
solution to the state evolution equations with extra attributes
(see solve_se()
).
Ioannis Kosmidis [aut, cre]
ioannis.kosmidis@warwick.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.
mdyplFit()
, solve_se()
## Not run:
set.seed(123)
n <- 2000
p <- 400
set.seed(123)
betas <- c(rnorm(p / 2, mean = 7, sd = 1), rep(0, p / 2))
X <- matrix(rnorm(n * p, 0, 1/sqrt(n)), nrow = n, ncol = p)
probs <- plogis(drop(X %*% betas))
y <- rbinom(n, 1, probs)
fit_mdypl <- glm(y ~ -1 + X, family = binomial(), method = "mdyplFit")
st_summary <- summary(fit_mdypl)
hd_summary <- summary(fit_mdypl, hd_correction = TRUE)
cols <- hcl.colors(3, alpha = 0.2)
par(mfrow = c(1, 2))
plot(betas, type = "l", ylim = c(-3, 14),
main = "MDYPL estimates",
xlab = "Parameter index", ylab = NA)
points(coef(st_summary)[, "Estimate"], col = NA, bg = cols[1], pch = 21)
plot(betas, type = "l", ylim = c(-3, 14),
main = "rescaled MDYPL estimates",
xlab = "Parameter index", ylab = NA)
points(coef(hd_summary)[, "Estimate"], col = NA, bg = cols[2], pch = 21)
## z-statistics
z_mdypl <- coef(st_summary)[betas == 0, "z value"]
qqnorm(z_mdypl, col = NA, bg = cols[1], pch = 21, main = "z value")
abline(0, 1, lty = 2)
z_c_mdypl <- coef(hd_summary)[betas == 0, "z value"]
qqnorm(z_c_mdypl, col = NA, bg = cols[2], pch = 21, main = "corrected z value")
abline(0, 1, lty = 2)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.