A class for panel series for which several useful computations and data transformations are available.
## S3 method for class 'pseries'print(x,...)## S3 method for class 'pseries'as.matrix(x, idbyrow =TRUE,...)## S3 method for class 'pseries'plot( x, plot = c("lattice","superposed"), scale =FALSE, transparency =TRUE, col ="blue", lwd =1,...)## S3 method for class 'pseries'summary(object,...)## S3 method for class 'summary.pseries'plot(x,...)## S3 method for class 'summary.pseries'print(x,...)Sum(x,...)## Default S3 method:Sum(x, effect,...)## S3 method for class 'pseries'Sum(x, effect = c("individual","time","group"),...)## S3 method for class 'matrix'Sum(x, effect,...)Between(x,...)## Default S3 method:Between(x, effect,...)## S3 method for class 'pseries'Between(x, effect = c("individual","time","group"),...)## S3 method for class 'matrix'Between(x, effect,...)between(x,...)## Default S3 method:between(x, effect,...)## S3 method for class 'pseries'between(x, effect = c("individual","time","group"),...)## S3 method for class 'matrix'between(x, effect,...)Within(x,...)## Default S3 method:Within(x, effect,...)## S3 method for class 'pseries'Within(x, effect = c("individual","time","group","twoways"),...)## S3 method for class 'matrix'Within(x, effect,...)
Arguments
x, object: a pseries or a matrix; or a summary.pseries object,
...: further arguments, e. g., na.rm = TRUE for transformation functions like between, see Details
and Examples .
idbyrow: if TRUE in the as.matrix method, the lines of the matrix are the individuals,
effect: for the pseries methods: character string indicating the "individual", "time", or "group" effect, for Within
"twoways" additionally; for non-pseries methods, effect is a factor specifying the dimension ("twoways" is not possible),
Returns
All these functions return an object of class pseries or a matrix, except:
between, which returns a numeric vector or a matrix; as.matrix, which returns a matrix.
Details
The functions between, Between, Within, and Sum perform specific data transformations, i. e., the between, within, and sum transformation, respectively.
between returns a vector/matrix containing the individual means (over time) with the length of the vector equal to the number of individuals (if effect = "individual" (default); if effect = "time", it returns the time means (over individuals)). Between
duplicates the values and returns a vector/matrix which length/number of rows is the number of total observations. Within returns a vector/matrix containing the values in deviation from the individual means (if effect = "individual", from time means if effect = "time"), the so called demeaned data. Sum returns a vector/matrix with sum per individual (over time) or the sum per time period (over individuals) with effect = "individual" or effect = "time", respectively, and has length/ number of rows of the total observations (like Between).
For between, Between, Within, and Sum in presence of NA values it can be useful to supply na.rm = TRUE as an additional argument to keep as many observations as possible in the resulting transformation. na.rm is passed on to the mean()/sum() function used by these transformations (i.e., it does not remove NAs prior to any processing!), see also Examples .
Examples
# First, create a pdata.framedata("EmplUK", package ="plm")Em <- pdata.frame(EmplUK)# Then extract a series, which becomes additionally a pseriesz <- Em$output
class(z)# obtain the matrix representationas.matrix(z)# compute the between and within transformationsbetween(z)Within(z)# Between and Sum replicate the values for each time observationBetween(z)Sum(z)# between, Between, Within, and Sum transformations on other dimensionbetween(z, effect ="time")Between(z, effect ="time")Within(z, effect ="time")Sum(z, effect ="time")# NA treatment for between, Between, Within, and Sumz2 <- z
z2[length(z2)]<-NA# set last value to NAbetween(z2, na.rm =TRUE)# non-NA value for last individualBetween(z2, na.rm =TRUE)# only the NA observation is lostWithin(z2, na.rm =TRUE)# only the NA observation is lostSum(z2, na.rm =TRUE)# only the NA observation is lostsum(is.na(Between(z2)))# 9 observations lost due to one NA valuesum(is.na(Between(z2, na.rm =TRUE)))# only the NA observation is lostsum(is.na(Within(z2)))# 9 observations lost due to one NA valuesum(is.na(Within(z2, na.rm =TRUE)))# only the NA observation is lostsum(is.na(Sum(z2)))# 9 observations lost due to one NA valuesum(is.na(Sum(z2, na.rm =TRUE)))# only the NA observation is lost
See Also
is.pseries() to check if an object is a pseries. For more functions on class 'pseries' see lag(), lead(), diff() for lagging values, leading values (negative lags) and differencing.