Learn R Programming

OrthoPanels (version 0.9-1)

opm: Fitting orthogonal panel models

Description

opm is used to fit orthogonal panel models.

Usage

opm(x, ...)
"opm"(x, y, n.samp, add.time.indicators = FALSE, ...)
"opm"(x, data = environment(x), subset, index = 1:2, n.samp, ...)

Arguments

x
a formula (see description of parameter formula below) or an array of dimension time x variable x case of terms.
...
further arguments passed to other methods.
y
a matrix of dimensions time x case of responses.
n.samp
number of samples to use to estimate the parameters.
add.time.indicators
(logical) if TRUE, adds dummy variables for time.
data
an optional data frame, list, or environment containing the variables in the model. If not found in data, the variables are taken from environment(x), typically the environment from which opm is called.
subset
an optional vector specifying a subset of observations to be used in the fitting process.
index
a two-element vector containing the index of the case and time variables, respectively. Variable indices can be specifed by name or position. This argument is ignored if the model is not specified by the formula, because the index is implicit in the organization of the terms and response arrays.

Value

An object of class opm with the following elements:
samples
parameter samples used to estimate the model, as a list with following elements:
rho
a vector of n.samp samples of $\rho$.
v
a vector of n.samp samples of $\frac{1}{\sigma^2}$.
beta
an n.samp x variable matrix of samples of $\beta$.
call
the matched call
index
the index variables, when using the formula interface
time.indicators
TRUE if dummy time variables are used (see Notes), FALSE otherwise
terms
the terms object used

Details

The model can be either specified symbolically with the formula response ~ term1 + term2 ... or with the terms and response given as a pair of 3- and 2-dimensional arrays, x and y respectively. The arrays have to be in the format time x variable x case for terms and time x case for the response.

The lagged dependent variable does not need to be included in the formula or data, as it is included automatically.

Examples

Run this code
set.seed(123)
N <- 5
T <- 2
beta <- .5
rho <- .5
v <- 1

f <- runif(N, -2, 2)
K <- length(beta)
beta <- matrix(beta, K, 1)

## $x_i = 0.75 f + N(0, 1)$:
x <- array(.75*f, dim=c(N, K, (T+1))) + rnorm(N*K*(T+1))

## $y_{i,t} = \rho y_{i,t-1} + \beta x_{i,t} + f_i + N(0,1)$:
y <- matrix(0, N, T+1)
for (t in seq_len(T+1)) {
    yy <- if (t>1) y[,t-1] else 0
    y[,t] <- rho * yy + f  + x[,,t] %*% beta + rnorm(N, sd = sqrt(1/v))
}

d <- data.frame(i = rep(seq(N), T+1),
                t = rep(seq(T+1), each = N),
                as.data.frame(matrix(aperm(x, c(1, 3, 2)), N*(T+1), K,
                                     dimnames = list(NULL, paste0('x', seq(K))))),
                y = c(y))
opm(y~x1, d, n.samp = 10)

Run the code above in your browser using DataLab