在 R 中使用 plm 包对享乐数据使用面板回归

  • 本文关键字:数据 回归 plm r regression plm
  • 更新时间 :
  • 英文 :


我正在尝试使用 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]

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)

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

谢谢。

那篇论文已经有十年的历史了,我不确定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和时间索引时,它将尝试使用前两列,而在享乐中,它为id提供了唯一的数字,所以整个模型就分崩离析了。

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

最新更新