*Note: The tstools package needs to be installed to run this example. If you're using the class server, it's already installed.*

For this example, we assume you want to estimate the model \[y_{t} = \beta_{0} + \beta_{1} y_{t-1} + \beta_{2} x_{t-1} + \beta_{3} x_{t-2} + \varepsilon_{t}.\] Let's generate 100 observations of \(y\) and \(x\) to use to estimate the regression.

```
library(tstools)
y <- ts(rnorm(100))
x <- ts(rnorm(100))
fit <- tsreg(y, ts.combine(lags(y, 1), lags(x, 1:2)))
```

The first argument to `tsreg`

is the left hand side variable in the regression. The second is an `mts`

object holding the regressors. `lags(y, 1)`

returns \(y_{t-1}\). `lags(x, 1:2)`

returns \(x_{t-1}\) and \(x_{t-2}\). `ts.combine`

will align all observations so that dates match up, and then drop any incomplete observations.

There's nothing to stop you from doing this estimation using the `lm`

function. Note that the `lm`

function was not designed for estimating models with time series data, which means:

- You have to align observations and drop missing observations yourself.
- Time series properties are stripped. Among other things, your residual series will be a vector of numbers, with no attached dates.

The `tsreg`

function was created to handle both of those issues for you. You can also specify options `start`

and `end`

for the sample start and end dates, if desired. Note that if you specify values for `start`

or `end`

that are not binding (for example, if the sample starts after `start`

) they will have no effect.

`fit`

can be treated as the output of a regular regression estimated by `lm`

:

`summary(fit)`

But it contains additional information. To plot the residuals as a time series:

`plot(fit$resids)`

Index Home