【问题标题】:Panel data: dealing with lagging and binary dependent variable with plm面板数据:使用 plm 处理滞后和二元因变量
【发布时间】:2011-03-22 05:28:56
【问题描述】:

我正在尝试使用面板数据和二元因变量运行合并逻辑回归。因为我想滞后一些变量,所以我使用 plm 包来创建它们。当我尝试以其他方式进行时,我遇到了问题。我不能使用 lag 或 embed,因为它是面板数据。

hybridsubsidies <-pdata.frame(reduced, c("state","year"))

lagee<-(lag(hybridsubsidies$eespending,1))
lagratio<-(lag(hybridsubsidies$ratio, 1))
laggopvote<-(lag(hybridsubsidies$gopvote, 1))
laggasoline<-(lag(hybridsubsidies$gasoline, 1))

我想在运行汇总分析之前将所有变量放入原始数据框(混合补贴)。我很确定我不需要,但我是一个视觉型的人,并且想在运行任何分析之前验证数据的格式是否合适。

从下面的输出中,看起来一切正常。

head(滞后(hybridsubsidies$eespending,1))

阿拉巴马-1999阿拉巴马-2000阿拉巴马-2001阿拉巴马-2002阿拉巴马-2003阿拉巴马-2004

     NA        58294        55378        26982        28264         2566 

头(混合补贴$eespending)

阿拉巴马-1999阿拉巴马-2000阿拉巴马-2001阿拉巴马-2002阿拉巴马-2003阿拉巴马-2004

  58294        55378        26982        28264         2566        26906 

我的问题是,当我尝试将此滞后变量分配为数据框中的向量时,这样,

hybridsubsidies$lagee<-(lag(hybridsubsidies$eespending,1))

确实如此(当我调用数据框中的名称时,它们被包含在内),但是我无法再查看数据框。 R 对我说:

edit.data.frame(get(subx, envir = parent), title = subx, ...) 中的错误: 只能处理向量和因子元素

如何解决这个问题,以便在运行分析之前查看数据框?我想看看它,因为看起来我将不得不使用 glm 而不是 plm(池)进行此分析,因为因变量是二进制变量,而 plm 不支持这些 d.v.

这已经给我带来了一段时间的问题。

col1 ST YR EELAG EE

[1,] 1 1 NA 58294

[2,] 1 2 58294 55378

[3,] 1 3 55378 26982

[4,] 1 4 26982 28264

[5,] 1 5 28264 2566

[6,] 1 6 2566 26906

[7,] 1 7 26906 29466

[8,] 2 1 NA 355

[9,] 2 2 355 259

[10,] 2 3 259 224

[11,] 2 4 224 217

[12,] 2 5 217 241

[13,] 2 6 241 231

[14,] 2 7 231 231

[15,] 3 1 不适用 5111

[16,] 3 2 5111 3753

[17,] 3 3 3753 2211

[18,] 3 4 2211 1452

[19,] 3 5 1452 2913

[20,] 3 6 2913 3128

[21,] 3 7 3128 7132

[22,] 4 1 NA 1597

[23,] 4 2 1597 905

【问题讨论】:

  • 我不认为滞后在做你想的那样——看看不同州或年份之间的边界。
  • Hadley,我检查了数据框,看起来它正在做我想做的事。请见上文。
  • 我认为如果我使用 plm 包中的 pdata.frame,那么数据框将转换为时间序列对象。由于它具有单位和时间 id,我认为 lag 正在做我需要它做的事情。

标签: r panel plm


【解决方案1】:

lag 返回一个时间序列对象。有没有

hybridsubsidies$lagee<-(as.vector(lag(hybridsubsidies$eespending,1)))

工作?

【讨论】:

  • 为什么会这样。我认为这与对象的类别有关,但无法弄清楚。真的很有帮助,谢谢!
  • 当您查看函数帮助时,请始终注意返回类型,并在必要时强制它们。 R 有时会自动强制,有时不会。注意:如果 v 是整数,我不确定为什么 class(lag(v,1)) 返回整数。我希望它返回 ts.也许有人比我能说的知识多。
  • 我只是查看了该命令返回的数据类型(命令中不包括 as.vector),它返回一个“double”,它是一个向量......所以我我不确定为什么我必须将滞后变量设置为向量。当我在命令中包含 as.vector 时检查对象的类型时,它仍然返回“double”。希望有人能解释一下
  • 如果你显示数据,你会发现它实际上不是一个向量。您还可以通过使用 is.vector() 看到这一点。您还应该注意 Hadley 的评论,即 lag 可能没有按照您的想法进行。
  • 好的,现在我明白了。时间序列对象只是一个向量,但添加了tsp 属性。我不确定为什么它没有添加class 的属性,但它没有。 lag 所做的只是修改tsp 属性。
猜你喜欢
  • 2022-09-26
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2011-02-17
  • 2017-11-12
  • 1970-01-01
相关资源
最近更新 更多