2017-07-04 6 views
0

J'essaie d'exécuter la régression de panel pour le panneau non équilibré dans R en utilisant le package plm. J'utilise les données 'Hedonic' pour exécuter le même.Utilisation de la régression par panel sur les données Hedonic à l'aide du package plm dans R

J'essayais de reproduire quelque chose de similaire qui est fait dans le document suivant: http://ftp.uni-bayreuth.de/math/statlib/R/CRAN/doc/vignettes/plm/plmEN.pdf (page 14, 3.2.5 Panneau asymétrique).

Mon code ressemble à ceci:

form = mv ~ crim + zn + indus + chas + nox + rm + age + dis + rad + tax + ptratio + blacks + lstat 
ba = plm(form, data = Hedonic) 

Cependant, je reçois l'erreur suivante lors de l'exécution:

Error in names(y) <- namesy : 
    'names' attribute [506] must be the same length as the vector [0] 

retraçage() donne le résultat suivant:

4: pmodel.response.pFormula(formula, data, model = model, effect = effect, 
     theta = theta) 
3: pmodel.response(formula, data, model = model, effect = effect, 
     theta = theta) 
2: plm.fit(formula, data, model, effect, random.method, random.dfcor, 
     inst.method) 
1: plm(form, data = Hedonic) 

Je suis nouveau à la régression de panel et serais vraiment reconnaissant si quelqu'un peut m'aider avec ce problème.

Merci.

Répondre

1

Ce papier a dix ans et je ne suis pas sûr que plm fonctionne comme ça. Les derniers documents sont ici https://cran.r-project.org/web/packages/plm/vignettes/plm.pdf

Votre problème se pose parce que, dans les docs:

la version actuelle de plm est capable de travailler avec une data.frame régulière sans aucune transformation, à condition que le indices individuels et le temps sont les deux premières colonnes,

L'ensemble de données Hedonic n'a pas d'index individuels et de temps dans les deux premières colonnes. Je ne sais pas où les indices individuels et le temps sont dans les données, mais si je précise townid pour l'indice I au moins obtenir quelque chose qui fonctionne:

> p <- plm(mv~crim,data=Hedonic) 
Error in names(y) <- namesy : 
    'names' attribute [506] must be the same length as the vector [0] 

> p <- plm(mv~crim,data=Hedonic, index="townid") 
> p 

Model Formula: mv ~ crim 

Coefficients: 
     crim 
-0.0097455 

parce que quand vous ne spécifiez pas d'index id et temps il va essayer d'utiliser les deux premières colonnes, et dans Hedonic qui donne des nombres uniques pour l'identifiant, ainsi le modèle entier s'effondre.

Si vous regardez les exemples dans help(plm), vous remarquerez peut-être que les deux premières colonnes dans tous les ensembles de données définissent l'ID et l'heure.

+0

Oui, 'townid' est l'identificateur des unités d'observation. Il n'y a pas d'index temporel dans les données mais il est donné implicitement par l'ordre des données. La version actuelle de la vignette a exactement cet exemple. – Helix123