# model.frame.pdata.frame

##### model.frame and model.matrix for panel data

Methods to create model frame and model matrix for panel data.

- Keywords
- classes

##### Usage

```
# S3 method for pdata.frame
model.frame(
formula,
data = NULL,
...,
lhs = NULL,
rhs = NULL,
dot = "previous"
)
```# S3 method for pdata.frame
formula(x, ...)

# S3 method for plm
model.matrix(object, ...)

# S3 method for pdata.frame
model.matrix(
object,
model = c("pooling", "within", "Between", "Sum", "between", "mean", "random", "fd"),
effect = c("individual", "time", "twoways", "nested"),
rhs = 1,
theta = NULL,
cstcovar.rm = NULL,
...
)

##### Arguments

- data
a

`formula`

, see**Details**,- …
further arguments.

- lhs
inherited from package

`Formula::Formula()`

(see there),- rhs
inherited from package

`Formula::Formula()`

(see there),- dot
inherited from package

`Formula::Formula()`

(see there),- x
a

`model.frame`

- object, formula
an object of class

`"pdata.frame"`

or an estimated model object of class`"plm"`

,- model
one of

`"pooling"`

,`"within"`

,`"Sum"`

,`"Between"`

,`"between"`

,`"random",`

`"fd"`

and`"ht"`

,- effect
the effects introduced in the model, one of

`"individual"`

,`"time"`

,`"twoways"`

or`"nested"`

,- theta
the parameter for the transformation if

`model = "random"`

,- cstcovar.rm
remove the constant columns, one of

`"none", "intercept", "covariates", "all")`

,

##### Details

The `lhs`

and `rhs`

arguments are inherited from `Formula`

, see
there for more details. The `model.frame`

methods return a
`pdata.frame`

object suitable as an input to plm's
`model.matrix`

. The `model.matrix`

methods builds a model matrix
with transformations performed as specified by the `model`

and
`effect`

arguments (and `theta`

if `model = "random"`

is
requested), in this case the supplied `data`

argument should be a
model frame created by plm's `model.frame`

method. If not, it is
tried to construct the model frame from the data. Constructing the
model frame first ensures proper NA handling, see **Examples**.

##### Value

The `model.frame`

methods return a `pdata.frame`

. The
`model.matrix`

methods return a `matrix`

.

##### See Also

`pmodel.response()`

for (transformed) response
variable. `Formula::Formula()`

from package `Formula`

,
especially for the `lhs`

and `rhs`

arguments.

##### Examples

```
# NOT RUN {
# First, make a pdata.frame
data("Grunfeld", package = "plm")
pGrunfeld <- pdata.frame(Grunfeld)
# then make a model frame from a pFormula and a pdata.frame
#pform <- pFormula(inv ~ value + capital)
#mf <- model.frame(pform, data = pGrunfeld)
form <- inv ~ value
mf <- model.frame(pGrunfeld, form)
# then construct the (transformed) model matrix (design matrix)
# from formula and model frame
#modmat <- model.matrix(pform, data = mf, model = "within")
modmat <- model.matrix(mf, model = "within")
## retrieve model frame and model matrix from an estimated plm object
#fe_model <- plm(pform, data = pGrunfeld, model = "within")
fe_model <- plm(form, data = pGrunfeld, model = "within")
model.frame(fe_model)
model.matrix(fe_model)
# same as constructed before
all.equal(mf, model.frame(fe_model), check.attributes = FALSE) # TRUE
all.equal(modmat, model.matrix(fe_model), check.attributes = FALSE) # TRUE
# }
```

*Documentation reproduced from package plm, version 2.2-5, License: GPL (>= 2)*