Auto- and Cross- Covariance and Correlation Function Estimation for Panel Series
Auto- and Cross- Covariance and Correlation Function Estimation for Panel Series
psacf, pspacf and psccf compute (and by default plot) estimates of the auto-, partial auto- and cross- correlation or covariance functions for panel series. They are analogues to acf, pacf and ccf.
psacf(x,...)pspacf(x,...)psccf(x, y,...)## Default S3 method:psacf(x, g, t =NULL, lag.max =NULL, type = c("correlation","covariance","partial"), plot =TRUE, gscale =TRUE,...)## Default S3 method:pspacf(x, g, t =NULL, lag.max =NULL, plot =TRUE, gscale =TRUE,...)## Default S3 method:psccf(x, y, g, t =NULL, lag.max =NULL, type = c("correlation","covariance"), plot =TRUE, gscale =TRUE,...)## S3 method for class 'data.frame'psacf(x, by, t =NULL, cols = is.numeric, lag.max =NULL, type = c("correlation","covariance","partial"), plot =TRUE, gscale =TRUE,...)## S3 method for class 'data.frame'pspacf(x, by, t =NULL, cols = is.numeric, lag.max =NULL, plot =TRUE, gscale =TRUE,...)# Methods for indexed data / compatibility with plm:## S3 method for class 'pseries'psacf(x, lag.max =NULL, type = c("correlation","covariance","partial"), plot =TRUE, gscale =TRUE,...)## S3 method for class 'pseries'pspacf(x, lag.max =NULL, plot =TRUE, gscale =TRUE,...)## S3 method for class 'pseries'psccf(x, y, lag.max =NULL, type = c("correlation","covariance"), plot =TRUE, gscale =TRUE,...)## S3 method for class 'pdata.frame'psacf(x, cols = is.numeric, lag.max =NULL, type = c("correlation","covariance","partial"), plot =TRUE, gscale =TRUE,...)## S3 method for class 'pdata.frame'pspacf(x, cols = is.numeric, lag.max =NULL, plot =TRUE, gscale =TRUE,...)
Arguments
x, y: a numeric vector, 'indexed_series' ('pseries'), data frame or 'indexed_frame' ('pdata.frame').
g: a factor, GRP object, or atomic vector / list of vectors (internally grouped with group) used to group x.
by: data.frame method: Same input as g, but also allows one- or two-sided formulas using the variables in x, i.e. ~ idvar or var1 + var2 ~ idvar1 + idvar2.
t: a time vector or list of vectors. See flag.
cols: data.frame method: Select columns using a function, column names, indices or a logical vector. Note: cols is ignored if a two-sided formula is passed to by.
lag.max: integer. Maximum lag at which to calculate the acf. Default is 2*sqrt(length(x)/ng) where ng is the number of groups in the panel series / supplied to g.
type: character. String giving the type of acf to be computed. Allowed values are "correlation" (the default), "covariance" or "partial".
plot: logical. If TRUE (default) the acf is plotted.
gscale: logical. Do a groupwise scaling / standardization of x, y (using fscale and the groups supplied to g) before computing panel-autocovariances / correlations. See Details.
...: further arguments to be passed to plot.acf.
Details
If gscale = TRUE data are standardized within each group (using fscale) such that the group-mean is 0 and the group-standard deviation is 1. This is strongly recommended for most panels to get rid of individual-specific heterogeneity which would corrupt the ACF computations.
After scaling, psacf, pspacf and psccf compute the ACF/CCF by creating a matrix of panel-lags of the series using flag and then computing the covariance of this matrix with the series (x, y) using cov and pairwise-complete observations, and dividing by the variance (of x, y). Creating the lag matrix may require a lot of memory on large data, but passing a sequence of lags to flag and thus calling flag and cov one time is generally much faster than calling them lag.max times. The partial ACF is computed from the ACF using a Yule-Walker decomposition, in the same way as in pacf.
Returns
An object of class 'acf', see acf. The result is returned invisibly if plot = TRUE.
See Also
Time Series and Panel Series , Collapse Overview
Examples
## World Development Panel Datahead(wlddev)# See also help(wlddev)psacf(wlddev$PCGDP, wlddev$country, wlddev$year)# ACF of GDP per Capitapsacf(wlddev, PCGDP ~ country,~year)# Same using data.frame methodpsacf(wlddev$PCGDP, wlddev$country)# The Data is sorted, can omit tpspacf(wlddev$PCGDP, wlddev$country)# Partial ACFpsccf(wlddev$PCGDP, wlddev$LIFEEX, wlddev$country)# CCF with Life-Expectancy at Birthpsacf(wlddev, PCGDP + LIFEEX + ODA ~ country,~year)# ACF and CCF of GDP, LIFEEX and ODApsacf(wlddev,~ country,~year, c(9:10,12))# Same, using cols argumentpspacf(wlddev,~ country,~year, c(9:10,12))# Partial ACF## Using indexed data:wldi <- findex_by(wlddev, iso3c, year)# Creating a indexed framePCGDP <- wldi$PCGDP # Indexed Series of GDP per CapitaLIFEEX <- wldi$LIFEEX # Indexed Series of Life Expectancypsacf(PCGDP)# Same as above, more parsimoniouspspacf(PCGDP)psccf(PCGDP, LIFEEX)psacf(wldi[c(9:10,12)])pspacf(wldi[c(9:10,12)])