View source: R/prais_winsten.R
| prais_winsten | R Documentation |
The Prais-Winsten estimator takes into account AR(1) serial correlation of the errors in a linear regression model. The procedure recursively estimates the coefficients and the error autocorrelation of the specified model until sufficient convergence of the AR(1) coefficient is reached. All estimates are obtained by OLS.
prais_winsten(
formula,
data,
index,
max_iter = 50L,
tol = 1e-06,
twostep = FALSE,
panelwise = FALSE,
rhoweight = c("none", "T", "T1"),
...
)
## S3 method for class 'prais'
print(x, digits = max(3L, getOption("digits") - 3L), ...)
formula |
an object of class |
data |
a data frame containing the variables in the model. If panel data is used, it must also contain the ID and time variables. |
index |
a character vector specifying the ID and time variables. If only one variable
is provided, it is assumed to be the time variable and the data will be reordered
accordingly. The specified variables must not contain |
max_iter |
integer specifying the maximum number of allowed iterations. Default is 50. |
tol |
numeric specifying the maximum absolute difference between the estimator of |
twostep |
logical. If |
panelwise |
logical. If |
rhoweight |
character specifying how |
... |
arguments passed to |
x |
an object of class "prais", usually, a result of a call to |
digits |
the number of significant digits to use when printing. |
Observations with missing values in the variables of formula are
dropped before estimation, as in lm. Since the Prais-Winsten
transformation uses the previous observation of a panel, the observations that
surround a dropped one are treated as if they were consecutive.
Estimates of \rho are bounded to the interval [-1, 1], because the
transformation of the first observation of a panel requires
(1 - \rho^2)^{(1 / 2)} to be real. If \rho attains one of those bounds,
the first observation of each panel becomes zero and does not contribute to the
estimates, so that the estimator effectively becomes the Cochrane-Orcutt estimator.
The time variable is only used to order the observations. If it is not equally spaced, a warning is issued, because the observations that surround a gap are treated as if they were consecutive.
If panelwise = TRUE, twostep = FALSE and rhoweight = "none",
each individual estimate of rho is re-estimated until convergence is achieved for all coefficients.
If panelwise = TRUE, the calculation of \rho can be further specified in argument
rhoweight. If rhoweight = "none", \rho is assumed to be panel-specific. If
rhoweight = "T", \rho is calculated as a weighted mean of panel-specific estimates, where
the number of available observations per panel, i.e. T_i, is used as weight. If rhoweight = "T1",
\rho is calculated as a weighted mean of panel-specific estimates, where the number of available
observations per panel minus one, i.e. T_i - 1, is used as weight.
A list of class "prais" containing the following components:
coefficients |
a named vector of coefficients. |
rho |
the values of the AR(1) coefficient |
residuals |
the residuals, that is the response minus the fitted values. |
fitted.values |
the fitted mean values. |
rank |
the numeric rank of the fitted linear model. |
df.residual |
the residual degrees of freedom. |
call |
the matched call. |
terms |
the terms object used. |
model |
the original model frame, i.e., before the Prais-Winsten transformation. |
xlevels |
a record of the levels of the factors used in fitting. |
contrasts |
the contrasts used, if the model contains factors. |
index |
a character specifying the ID and time variables. Only added if panel data were used. |
Beck, N. L. and Katz, J. N. (1995): What to do (and not to do) with time-series cross-section data. American Political Science Review 89, 634-647.
Prais, S. J. and Winsten, C. B. (1954): Trend Estimators and Serial Correlation. Cowles Commission Discussion Paper, 383 (Chicago).
Wooldridge, J. M. (2013): Introductory Econometrics. A Modern Approach. 5th ed. Mason, OH: South-Western Cengage Learning.
# Generate an artificial sample
set.seed(1234567)
n <- 100
x <- sample(20:40, n, replace = TRUE)
rho <- .5
# AR(1) errors
u <- rnorm(n, 0, 5)
for (i in 2:n) {
u[i] <- u[i] + rho * u[i - 1]
}
pw_sample <- data.frame("x" = x, "y" = 10 + 1.5 * x + u, "time" = 1:n)
# Estimate
pw <- prais_winsten(y ~ x, data = pw_sample, index = "time")
summary(pw)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.