2017-07-04 104 views
0

我试图运行不平衡面板R中使用PLM包面板回归享乐数据面板回归。我正在使用'Hedonic'数据来运行相同的。使用使用PLM包中的R

我试图复制类似的是在下面的纸做了一些:http://ftp.uni-bayreuth.de/math/statlib/R/CRAN/doc/vignettes/plm/plmEN.pdf(第14页3.2.5非平衡面板)。

我的代码看起来是这样的:

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

不过,我正在上执行以下错误:

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

回溯()产生以下结果:

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) 

我是面板回归的新手,如果有人能帮我解决这个问题,我会很感激。

谢谢。

回答

1

该论文是十来岁,我不知道plm作品那样。最新的文档是在这里https://cran.r-project.org/web/packages/plm/vignettes/plm.pdf

你的问题的产生是因为,在文档:

PLM的当前版本能够与常规的 data.frame工作没有任何进一步的改造,前提是 个人和时间索引在前两列中,

Hedonic数据集在前两列中没有单独索引和时间索引。我不知道在哪里的个人和时间索引中的数据,但如果我的索引指定townid我至少可以得到一个运行的东西:

> 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 

因为当你不指定ID以及时间索引它会尝试使用前两列,并且在Hedonic中为id提供了唯一的数字,因此整个模型会分崩离析。

如果你看一下在help(plm)的例子,你可能会注意到,在所有数据集前两列定义的id和时间。

+0

是,'townid'是观测台的indentifiyer。数据中没有时间索引,但它是由数据顺序隐式给出的。当前版本的小插曲就是这个例子。 – Helix123