spher.reg: Spherical-Spherical regression

View source: R/spher.reg.R

Spherical-spherical regressionR Documentation

Spherical-Spherical regression

Description

Regression when both the dependent and independent variables are spherical.

Usage

spher.reg(y, x, rads = FALSE, xnew = NULL)

Arguments

y

The dependent variable; a matrix with either two columns, latitude and longitude, either in radians or in degrees. Alternatively it is a matrix with three columns, unit vectors.

x

The dependent variable; a matrix with either two columns, latitude and longitude, either in radians or in degrees. Alternatively it is a matrix with three columns, unit vectors. The two matrices must agree in the scale and dimensions.

rads

If the data are expressed in latitude and longitude then it matter to know if they are in radians or degrees. If they are in radians, then this should be TRUE and FALSE otherwise. If the previous argument, euclidean, is TRUE, this one does not matter what its value is.

xnew

The new values of some spherical independent variable(s) whose spherical response values you want to predict. If you have no new x values, leave it NULL (default).

Details

Spherical regression as proposed by Chang (1986) is implemented. If the estimated rotation matrix has a determinant equal to -1, singular value decomposition is performed and the third unit vector is multiplied by -1.

Value

A list including:

A

The estimated rotation matrix.

est

The fitted values in unit vectors, if the argument xnew is not NULL.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr and Giorgos Athineou <gioathineou@gmail.com>.

References

Ted Chang (1986). Spherical Regression. Annals of Statistics, 14(3): 907–924.

See Also

hspher.reg, spher.cor, spml.reg

Examples

mx <- rnorm(3)
mx <- mx/sqrt( sum(mx^2) )
my <- rnorm(3)
my <- my/sqrt( sum(my^2) )
x <- rvmf(100, mx, 15)
A <- rotation(mx, my)
y <- x %*% t(A)
mod <- spher.reg(y, x)
A
mod$A ## exact match, no noise
y <- x %*% t(A)
y <- y + rvmf(100, colMeans(y), 40)
mod <- spher.reg(y, x)
A
mod$A ## noise added, more relistic example

Directional documentation built on April 3, 2025, 7:59 p.m.