Learn R Programming

SpatioTemporal (version 1.1.9.1)

calc.FXtF2: Compute Quadratic Form Bewteen Temporal Trends and Sigma B

Description

Computes the quadratic form between a sparse matrix F containing the temporal trends and the covariance matrix for the beta fields (Sigma_B). Or possibly the product between two different F's and a cross-covariance matrix.

See the examples for details.

Usage

calc.FXtF2(F, mat, loc.ind, F2 = F, loc.ind2 = loc.ind)

Arguments

F, F2

(number of obs.) - by - (number of temporal trends) matrices containing the temporal trends. Usually mesa.model$F, where mesa.model is obtained from createSTmodel.

mat

A block diagonal, with equal size blocks. The number of blocks need to equal dim(F)[2]

loc.ind, loc.ind2

A vector indicating which location each row in F corresponds to, usually mesa.model$obs$idx.

Value

Returns a square matrix with side dim(F)[1]

See Also

Other block matrix functions: blockMult, calc.FX, calc.mu.B, calc.tFXF, calc.tFX, makeCholBlock, makeSigmaB, makeSigmaNu

Other temporal trend functions: calc.FX, calc.tFXF, calc.tFX, expandF

Examples

Run this code
# NOT RUN {
require(Matrix)

##create a trend
trend <- cbind(1:5,sin(1:5))
##an index of locations
idx <- c(rep(1:3,3),1:2,2:3)
idx2 <- c(rep(1:2,3),2,2)
##a list of time points for each location/observation
T <- c(rep(1:3,each=3),4,4,5,5)
T2 <- c(rep(1:3,each=2),4,5)

##expand the F matrix to match the locations/times in idx/T.
F <- trend[T,]
F2 <- trend[T2,]

##first column gives time and second location for each observation
cbind(T, idx)
##...and for the second set
cbind(T2, idx2)

##create a cross covariance matrix
C <- makeSigmaB(list(c(1,1),c(1,.5)), crossDist(1:max(idx),1:max(idx2)))

##compute F %*% X %*% F2'
FXtF2 <- calc.FXtF2(F, C, loc.ind=idx, F2=F2, loc.ind2=idx2)

##which is equivalent to
FXtF2.alt <- expandF(F, idx) %*% C %*% t( expandF(F2, idx2) )

range(FXtF2 - FXtF2.alt)
# }

Run the code above in your browser using DataLab