Skip to contents

The estimated s gives information about the consistency between the z scores and LD matrix. A larger \(s\) means there is a strong inconsistency between z scores and LD matrix. The “null-mle” method obtains mle of \(s\) under \(z | R ~ N(0,(1-s)R + s I)\), \(0 < s < 1\). The “null-partialmle” method obtains mle of \(s\) under \(U^T z | R ~ N(0,s I)\), in which \(U\) is a matrix containing the of eigenvectors that span the null space of R; that is, the eigenvectors corresponding to zero eigenvalues of R. The estimated \(s\) from “null-partialmle” could be greater than 1. The “null-pseudomle” method obtains mle of \(s\) under pseudolikelihood \(L(s) = \prod_{j=1}^{p} p(z_j | z_{-j}, s, R)\), \(0 < s < 1\).

Usage

estimate_s_rss(z, R, n, r_tol = 1e-08, method = "null-mle")

Arguments

z

A p-vector of z scores.

R

A p by p symmetric, positive semidefinite correlation matrix.

n

The sample size. (Optional, but highly recommended.)

r_tol

Tolerance level for eigenvalue check of positive semidefinite matrix of R.

method

a string specifies the method to estimate \(s\).

Value

A number between 0 and 1.

Examples

set.seed(1)
n <- 500
p <- 1000
beta <- rep(0, p)
beta[1:4] <- 0.01
X <- matrix(rnorm(n * p), nrow = n, ncol = p)
X <- scale(X, center = TRUE, scale = TRUE)
y <- drop(X %*% beta + rnorm(n))
input_ss <- compute_suff_stat(X, y, standardize = TRUE)
ss <- univariate_regression(X, y)
R <- cor(X)
attr(R, "eigen") <- eigen(R, symmetric = TRUE)
zhat <- with(ss, betahat / sebetahat)

# Estimate s using the unadjusted z-scores.
s0 <- estimate_s_rss(zhat, R)
#> WARNING: Providing the sample size (n), or even a rough estimate of n, is highly recommended. Without n, the implicit assumption is n is large (Inf) and the effect sizes are small (close to zero).

# Estimate s using the adjusted z-scores.
s1 <- estimate_s_rss(zhat, R, n)