plm Package in R - empty model when including only variables without variation over time per individual
Asked Answered
K

1

7

I have a dataframe ('math') like this (there are three different methods, although only one is shown) - dataframe

I am trying to create a multi-level growth model for MathScore, where VerbalScore is an independent, time invariant, random effect.

I believe the R code should be similar to this -

random <- plm(MathScore ~ VerbalScore + Method, data=math, index=c("id","Semester"), 
              model="random")

However, running this code results in the following error:

Error in plm.fit(object, data, model = "within", effect = effect) :
empty model

I believe it's an issue with the index, as the code will run if I use:

random <- plm(MathScore ~ VerbalScore + Method + Semester, data=math, index="id", 
              model="random")

I would be grateful for any advice on how to create a multi-level, random effect model as described.

Kraus answered 15/7, 2017 at 19:7 Comment(2)
Please see this link to learn how to make a reproducible example: #5963769Triforium
Try to create a pdata.frame first and use it the data argument. See the package's vingette for how to do this.Patricia
P
8

This is likely a problem with your data: As it seems, the variables VerbalScore and Method do not vary per individual. Thus, for the Swamy-Arora RE model (default) the within variance necessary cannot be computed. Affected variables drop out of the model which are here all RHS variables and you get the (not very specific) error message empty model.

You can check variation per individual with the command pvar().

If my assumption is true and still you want to estimate a random effects model, you will have to use a different random effect estimator which does not rely on the within variance, e.g. try the Wallace-Hussain estimator (random.method="walhus").

Patricia answered 16/7, 2017 at 9:42 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.