【问题标题】:Using the panel regression on Hedonic data using plm package in R使用 R 中的 plm 包对 Hedonic 数据进行面板回归
【发布时间】:2017-12-07 09:33:55
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: r regression plm


    【解决方案1】:

    那篇论文已有 10 年历史了,我不确定 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 和 time 索引时,它将尝试使用前两列,并且在 Hedonic 中为 id 提供唯一编号,因此整个模型崩溃了。

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

    【讨论】:

    • 是的,townid 是观测单位的标识符。数据中没有时间索引,但它由数据顺序隐含给出。当前版本的小插图正是这个例子。
    猜你喜欢
    • 1970-01-01
    • 2021-05-21
    • 2021-09-01
    • 2018-05-06
    • 2019-01-19
    • 2017-08-15
    • 2021-08-05
    • 1970-01-01
    • 2017-04-24
    相关资源
    最近更新 更多