使用 R 中的 plm 包对 Hedonic 数据进行面板回归

Using the panel regression on Hedonic data using plm package in R

我正在尝试 运行 使用 plm 包对 R 中的不平衡面板进行面板回归。我正在使用 'Hedonic' 数据与 运行 相同。

我试图复制在以下论文中完成的类似内容: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]

traceback() 产生以下结果:

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)

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

谢谢。

那篇论文已有 10 年历史了,我不确定 plm 是否像那样工作。最新文档在这里 https://cran.r-project.org/web/packages/plm/vignettes/plm.pdf

你的问题出现是因为,在文档中:

the current version of plm is capable of working with a regular data.frame without any further transformation, provided that the individual and time indexes are in the first two columns,

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 和 time 索引时,它会尝试使用前两列,而在 Hedonic 中,它为 id 提供了唯一的数字,所以整个模型会崩溃。

如果您查看 help(plm) 中的示例,您可能会注意到所有数据集中的前两列定义了 ID 和时间。