zlm.wfit {complexlm}R Documentation

Least-Squares Linear Fitting for Complex Variables

Description

The function eventually called by lm(), lm.fit(), and/or lm.wfit() if fed complex data. Performs ordinary (least-squares) linear fitting on complex variable data. Like stats::lm.wfit(), which it is based off of, it uses qr decomposition for the matrix algebra. Unlike stats::lm.wfit() it also handles un-weighted regression, by setting the weights to 1 by default.

Usage

zlm.wfit(
  x,
  y,
  w = rep(1L, ifelse(is.vector(x), length(x), nrow(x))),
  offset = NULL,
  method = "qr",
  tol = 1e-07,
  singular.ok = TRUE,
  ...
)

Arguments

x

a complex design matrix, n rows by p columns.

y

a vector of observations/responses of length n, or a matrix with n rows.

w

a vector of weights to be used in the fitting process. The sum of w * r^2 is minimized, with r being the residuals. By default, w is a vector of length n with every element equal to 1, making this an unweighted fit.

offset

optional. A complex vector of length n that will be subtracted from y prior to fitting.

method

optional. a string that can be used to choose any method you would like. As long as it is "qr".

tol

tolerance for the qr decomposition. Default is 1e-7.

singular.ok

logical. If false, a singular model is an error.

...

currently disregarded.

Value

a list with components (for lm.fit and lm.wfit)

coefficients

p vector

residuals

n vector or matrix

fitted.values

n vector or matrix

effects

n vector of orthogonal single-df effects. The first rank of them correspond to non-aliased coefficients, and are named accordingly.

weights

n vector — only for the *wfit* functions.

rank

integer, giving the rank

df.residual

degrees of freedom of residuals

qr

the QR decomposition, see qr.

Fits without any columns or non-zero weights do not have the effects and qr components.

.lm.fit() returns a subset of the above, the qr part unwrapped, plus a logical component pivoted indicating if the underlying QR algorithm did pivot.

Examples

set.seed(4242)
n <- 6
p <- 2
slop <- complex(real = 4.23, imaginary = 2.323)
slop2 = complex(real = 2.1, imaginary = -3.9)
interc <- complex(real = 1.4, imaginary = 1.804)
e <- complex(real=rnorm(n)/6, imaginary=rnorm(n)/6)
desmat <- matrix(c(complex(real = rnorm(n * p), imaginary = rnorm(n * p)), rep(1, n)), n, p + 1)
y = desmat %*% c(slop, slop2, interc) + e
lm.fit(desmat, y)

[Package complexlm version 1.1.2 Index]