H.als.b: Adaptive Least Squares

Description Usage Arguments Value Examples

View source: R/H.als.b.R

Description

Adaptive Least Squares expecially for large spacio-temporal data

Usage

1
H.als.b(Z, Hs, Ht, Hst.ls, rho, reg, b.lag = -1, Hs0 = NULL, Ht0 = NULL, Hst0.ls = NULL)

Arguments

Z

Space-time data. A τ x n numeric matrix.

Hs

Spacial covariates (of supporting sites). An n x p_s numeric matrix.

Ht

Temporal covariates (of supporting sites). A τ x p_t numeric matrix.

Hst.ls

Space-time covariates (of supporting sites). A list of length τ, each element should be a n x p_st numeric matrix.

rho

ALS signal-to-noise ratio (SNR). A non-negative scalar.

reg

ALS regularizer. A non-negative scalar.

b.lag

ALS lag. A scalar integer, typically -1 (a-prior), or 0 (a-posteriori).

Hs0

Spacial covariates (of interpolation sites). An n* x p_s matrix, or NULL.

Ht0

Temporal covariates (of interpolation sites). A τ x p_t matrix, or NULL. If not NULL, I cannot imagine a scenario where this shouldn't be Ht.

Hst0.ls

Space-time covariates (of interpolation sites). A list of length τ, each element should be a numeric n x p_st matrix.

Value

A named list.

Z.hat

A τ x n matrix, the ith row of which is the ALS prediction of the supporting sites at time i.

B

A τ x (p_s+p_t+p_st) matrix, the ith row of which is the ALS state (partial slopes) prediction at time i.

Z0.hat

A τ x n* matrix, the ith row of which is the ALS prediction of the interpolation sites at time i.

inv.LHH

A (p_s+p_t+p_st) x (p_s+p_t+p_st) matrix. This is the (ALS predicted) covariate precision matrix at time τ.

ALS.g

The ALS gain at time τ.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
set.seed(99999)

library(SSsimple)

tau <- 70
n.all <- 14

Hs.all <- matrix(rnorm(n.all), nrow=n.all)
Ht <- matrix(rnorm(tau*2), nrow=tau)
Hst.ls.all <- list()
for(i in 1:tau) { Hst.ls.all[[i]] <- matrix(rnorm(n.all*2), nrow=n.all) }

Hst.combined <- list()
for(i in 1:tau) { 
    Hst.combined[[i]] <- cbind( Hs.all, matrix(Ht[i, ], nrow=n.all, ncol=ncol(Ht), 
    byrow=TRUE), Hst.ls.all[[i]] ) 
}

######## use SSsimple to simulate
sssim.obj <- SS.sim.tv( 0.999, Hst.combined, 0.01, diag(1, n.all), tau )


ndx.support <- 1:10
ndx.interp <- 11:14

Z.all <- sssim.obj$Z
Z <- Z.all[ , ndx.support]
Z0 <- Z.all[ , ndx.interp]

Hst.ls <- subsetsites.Hst.ls(Hst.ls.all, ndx.support)
Hst0.ls <- subsetsites.Hst.ls(Hst.ls.all, ndx.interp)

Hs <- Hs.all[ ndx.support, , drop=FALSE]
Hs0 <- Hs.all[ ndx.interp, , drop=FALSE]

xrho <- 1/10
xreg <- 1/10
xALS <- H.als.b(Z=Z, Hs=Hs, Ht=Ht, Hst.ls=Hst.ls, rho=xrho, reg=xreg, b.lag=-1, 
Hs0=Hs0, Ht0=Ht, Hst0.ls=Hst0.ls) 



test.rng <- 20:tau

errs.sq <- (Z0 - xALS$Z0.hat)^2
sqrt( mean(errs.sq[test.rng, ]) )


################ calculate the 'effective standard errors' (actually 'effective prediction
################ errors') of the ALS partial slopes
rmse <- sqrt(mean((Z[test.rng, ] - xALS$Z.hat[test.rng, ])^2))
rmse
als.se <- rmse * sqrt(xALS$ALS.g) * sqrt(diag(xALS$inv.LHH))
cbind(xALS$B[tau, ], als.se, xALS$B[tau, ]/als.se)

widals documentation built on Dec. 8, 2019, 1:07 a.m.