
Last chance! 50% off unlimited learning
Sale ends in
psacf
, pspacf
and psccf
compute (and by default plot) estimates of the auto-, partial auto- and cross- correlation or covariance functions for panel-vectors and plm::pseries
. They are analogues to stats::acf
, stats::pacf
and stats::ccf
.
psacf(x, …)
pspacf(x, …)
psccf(x, y, …)# S3 method for default
psacf(x, g, t = NULL, lag.max = NULL, type = c("correlation", "covariance","partial"),
plot = TRUE, gscale = TRUE, …)
# S3 method for default
pspacf(x, g, t = NULL, lag.max = NULL, plot = TRUE, gscale = TRUE, …)
# S3 method for default
psccf(x, y, g, t = NULL, lag.max = NULL, type = c("correlation", "covariance"),
plot = TRUE, gscale = TRUE, …)
# S3 method for pseries
psacf(x, lag.max = NULL, type = c("correlation", "covariance","partial"),
plot = TRUE, gscale = TRUE, …)
# S3 method for pseries
pspacf(x, lag.max = NULL, plot = TRUE, gscale = TRUE, …)
# S3 method for pseries
psccf(x, y, lag.max = NULL, type = c("correlation", "covariance"),
plot = TRUE, gscale = TRUE, …)
# S3 method for 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 data.frame
pspacf(x, by, t = NULL, cols = is.numeric, lag.max = NULL,
plot = TRUE, gscale = TRUE, …)
# S3 method for pdata.frame
psacf(x, cols = is.numeric, lag.max = NULL,
type = c("correlation", "covariance","partial"), plot = TRUE, gscale = TRUE, …)
# S3 method for pdata.frame
pspacf(x, cols = is.numeric, lag.max = NULL, plot = TRUE, gscale = TRUE, …)
a numeric vector, panel series (plm::pseries
), data frame or
panel data-frame (plm::pdata.frame
).
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
.
same input as g, to indicate the time-variable. For secure computations on unordered panel-vectors. Data frame method also allows one-sided formula i.e. ~time
.
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
.
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
.
character. String giving the type of acf to be computed. Allowed values are "correlation" (the default), "covariance" or "partial".
logical. If TRUE
(default) the acf is plotted.
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 stats:::plot.acf
.
An object of class 'acf', see ?stats::acf
. The result is returned invisibly if plot = TRUE
.
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 correlating this matrix with the series (x, y
) using stats::cor
and pairwise-complete observations. This may require a lot of memory on large data, but is done because passing a sequence of lags to flag
and thus calling flag
and stats::cor
one time is 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 stats::pacf
.
# NOT RUN {
## World Development Panel Data
head(wlddev) # See also help(wlddev)
psacf(wlddev$PCGDP, wlddev$country, wlddev$year) # ACF of GDP per Capita
psacf(wlddev, PCGDP ~ country, ~year) # Same using data.frame method
psacf(wlddev$PCGDP, wlddev$country) # The Data is sorted, can omit t
pspacf(wlddev$PCGDP, wlddev$country) # Partial ACF
psccf(wlddev$PCGDP, wlddev$LIFEEX, wlddev$country) # CCF with Life-Expectancy at Birth
psacf(wlddev, PCGDP + LIFEEX + ODA ~ country, ~year) # ACF and CCF of GDP, LIFEEX and ODA
psacf(wlddev, ~ country, ~year, c(9:10,12)) # Same, using cols argument
pspacf(wlddev, ~ country, ~year, c(9:10,12)) # Partial ACF
## Using plm:
pwlddev <- plm::pdata.frame(wlddev, index = c("country","year"))# Creating a Panel Data Frame
PCGDP <- pwlddev$PCGDP # Panel Series of GDP per Capita
LIFEEX <- pwlddev$LIFEEX # Panel Series of Life Expectancy
psacf(PCGDP) # Same as above, more parsimonious
pspacf(PCGDP)
psccf(PCGDP, LIFEEX)
psacf(pwlddev[c(9:10,12)])
pspacf(pwlddev[c(9:10,12)])
# }
Run the code above in your browser using DataLab