# Estimate Time Series Factor Model

### Description

Estimate a TSFmodel .

### Usage

1 2 3 4 5 6 7 8 9 10 11 12 | ```
estTSF.R2M(y, p, diff.=TRUE,
rotation=if(p==1) "none" else "quartimin",
rotationArgs=NULL,
normalize=TRUE, eps=1e-5, maxit=1000, Tmat=diag(p),
BpermuteTarget=NULL,
factorNames=paste("factor", seq(p)))
estTSF.MCV(y, p, diff.=TRUE,
rotation=if(p==1) "none" else "oblimin",
rotationArgs=NULL,
normalize=TRUE, eps=1e-5, maxit=1000, Tmat=diag(p),
BpermuteTarget=NULL,
factorNames=paste("factor", seq(p)))
``` |

### Arguments

`y` |
a time series matrix. |

`p` |
integer indication number of factors to estimate. |

`diff.` |
logical indicating if model should be estimated with differenced data. |

`rotation` |
character vector indicating the factor rotation method (see GPArotation for options). |

`rotationArgs` |
list passed to GPFoblq, and then to the rotation method, specifying arguments for the rotation criteria. See GPFoblq. |

`normalize` |
Passed to GPFoblq. TRUE means do Kaiser normalization before rotation and then undo it after completing rotatation. FALSE means do no normalization. See GPFoblq for other possibilities. |

`eps` |
passed to GPFoblq |

`maxit` |
passed to GPFoblq |

`Tmat` |
passed to GPFoblq |

`BpermuteTarget` |
matrix of loadings. If supplied, this is used to permute the order of estimated factors and change signs in order to compare properly. |

`factorNames` |
vector of strings indicating names to be given to factor series. |

### Details

The function `estTSF.R2M`

estimates parameters using raw second moments.
THIS ALL NEEDS TO BE CHECKED.
The function `factanal`

with no rotation is used to find the initial
(orthogonal) solution. Rotation, if specified, is then done
with `GPFoblq`

.
`factanal`

always uses the correlation matrix, so standardizing does
not affect the solution.

If `diff.`

is `TRUE`

(the default) the indicator data is differenced
before it is passed to `factanal`

. This is necessary if the data is not
stationary. The resulting Bartlett predictor (rotated)
is applied to the undifferenced data. See Gilbert and Meijer (2005) for a
discussion of this approach.

If `rotation`

is `"none"`

the result of the `factanal`

estimation is not rotated. In this case, to avoid confusion with a rotated
solution, the factor covariance matrix `Phi`

is returned as `NULL`

.
Another possibility for its value would be the identity matrix, but this is
not calculated so `NULL`

avoids confusion.

The arguments `rotation`

, `methodArgs`

, `normalize`

,
`eps`

, `maxit`

, and `Tmat`

are passed to
`GPFoblq`

.

The estimated loadings, Bartlett predictor and predicted factor scores
are put in a `TSFmodel`

which is part of the returned object.
The Bartlett predictor can be calculated as

*
(B' Omega exp(-1) B) exp(-1) B' Omega exp(-1) x*

,

or equivalently as

*
(B' Sigma exp(-1) B) exp(-1) B' Sigma exp(-1) x*

,

The first is simpler because *Omega* is diagonal, but breaks down
with a Heywood case, because *Omega* is then singular (one or
more of its diagonal elements are zero). The second only requires
nonsingularity of *Sigma*. Typically, *Sigma* is not singular
even if *Omega* is singular.
*Sigma* is calculated from *B Phi B' + Omega*,
where *B, Phi,* and *Omega* are the
estimated values returned from factanal and rotated. The data covariance could
also be used for *Sigma*. (It returns the same result with this estimation
method.)

The returned `TSFestModel`

object is a list containing

- model
the estimated

`TSFmodel`

.- data
the indicator data used in the estimation.

- estimates
a list of

- estimation
a character string indicating the name of the estimation function.

- diff.
the setting of the argument

`diff.`

.- rotation
the setting of the argument

`rotation`

.- uniquenesses
the estimated

`uniquenesses`

.- BpermuteTarget
the setting of the argument

`BpermuteTarget`

.

### Value

A `TSFestModel`

object which is a list containing `TSFmodel`

,
the data, and some information about the estimation.

### Author(s)

Paul Gilbert and Erik Meijer

### References

Gilbert, Paul D. and Meijer, Erik (2005) Time Series Factor Analaysis with an Application to Measuring Money. Research Report 05F10, University of Groningen, SOM Research School. Available from http://som.eldoc.ub.rug.nl/reports/themeF/2005/05F10/.

Gilbert, Paul D. and Meijer, Erik (2006) Money and Credit Factors. Bank of Canada Working Paper 2006-3, available at http://www.bankofcanada.ca/2006/03/publications/research/working-paper-2006-3/.

Tom Wansbeek and Erik Meijer (2000) *Measurement Error and
Latent Variables in Econometrics*, Amsterdam: North-Holland.

### See Also

`TSFmodel`

,
`estTSF.ML`

,
`GPFoblq`

,
`rotations`

,
`factanal`

### 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 | ```
data("CanadianMoneyData.asof.28Jan2005", package="CDNmoney")
data("CanadianCreditData.asof.28Jan2005", package="CDNmoney")
cpi <- 100 * M1total / M1real
seriesNames(cpi) <- "CPI"
popm <- M1total / M1PerCapita
seriesNames(popm) <- "Population of Canada"
z <- tframed(tbind(
MB2001,
MB486 + MB452 + MB453 ,
NonbankCheq,
MB472 + MB473 + MB487p,
MB475,
NonbankNonCheq + MB454 + NonbankTerm + MB2046 + MB2047 + MB2048 +
MB2057 + MB2058 + MB482),
names=c("currency", "personal cheq.", "NonbankCheq",
"N-P demand & notice", "N-P term", "Investment" )
)
TotalMoney <- tframed(rowSums(z), tframe(z))
z <- tbind (z, ConsumerCredit, ResidentialMortgage,
ShortTermBusinessCredit, OtherBusinessCredit)
z <-tfwindow(z, start=c(1981,11), end=c(2004,11))
scale <- tfwindow(1e8 /(popm * cpi), tf=tframe(z))
MBandCredit <- sweep(z, 1, scale, "*")
c4withR2M <- estTSF.R2M(MBandCredit, 4)
tfplot(ytoypc(factors(c4withR2M)),
Title="Factors from 4 factor model (year-to-year growth rate)")
tfplot(c4withR2M, graphs.per.page=3)
summary(c4withR2M)
``` |