GLS_chol: GLS Estimate using Cholesky Factor

Description Usage Arguments Value Author(s) Examples

View source: R/help_functions.R

Description

Computes the GLS estimate using the formula:

μ_{GLS} = (X^\top Σ^{-1} X)^{-1}X^\top Σ^{-1} y.

The computation is done depending on the input class of the Cholesky factor R. It relies on the classical solve or on using forwardsolve and backsolve functions of package spam, see solve. This is much faster than computing the inverse of Σ, especially since we have to compute the Cholesky decomposition of Σ either way.

Usage

1
2
3
4
5
6
7
GLS_chol(R, X, y)

## S3 method for class 'spam.chol.NgPeyton'
GLS_chol(R, X, y)

## S3 method for class 'matrix'
GLS_chol(R, X, y)

Arguments

R

(spam.chol.NgPeyton or matrix(n, n))
Cholesky factor of the covariance matrix Σ. If covariance tapering and sparse matrices are used, then the input is of class spam.chol.NgPeyton. Otherwise, R is the output of a standard chol, i.e., a simple matrix

X

(matrix(n, p))
Data / design matrix.

y

(numeric(n))
Response vector

Value

A numeric(p) vector, i.e., the mean effects.

Author(s)

Jakob Dambon

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# generate data
n <- 10
X <- cbind(1, 20+1:n)
y <- rnorm(n)
A <- matrix(runif(n^2)*2-1, ncol=n)
Sigma <- t(A) %*% A
# two possibilities
## using standard Cholesky decomposition
R_mat <- chol(Sigma); str(R_mat)
mu_mat <- GLS_chol(R_mat, X, y)
## using spam
R_spam <- chol(as.spam(Sigma)); str(R_spam)
mu_spam <- GLS_chol(R_spam, X, y)
# should be identical to the following
mu <- solve(crossprod(X, solve(Sigma, X))) %*%
      crossprod(X, solve(Sigma, y))
## check
abs(mu - mu_mat)
abs(mu - mu_spam)

varycoef documentation built on June 3, 2021, 5:10 p.m.