【问题标题】:I need a function to create a new variable, say Y_(i,t) by demeaning X_(i,t) variable in a panel data set where time, T =18 and countries, n = 48我需要一个函数来创建一个新变量,比如 Y_(i,t),方法是在面板数据集中贬低 X_(i,t) 变量,其中时间 T = 18 和国家/地区 n = 48
【发布时间】:2020-12-16 16:26:17
【问题描述】:

我是 R 应用程序的新手。我需要一个函数来创建一个新变量,例如 Y_(i,t),方法是在具有时间 T =18 和国家/地区 n = 48 的面板数据中贬低 X_(i,t) 变量。即 Y_(i,t ) = X_(i,t) - x_bar(i) 其中 x_bar(i) 是特定国家/地区的平均值。从 2001 年到 2018 年的相应国家值 X 中减去每个国家的平均值。

下面的数据框是模仿上面实际数据描述的删节版本。

pdat <- data.frame( year = rep(c(2001,2002,2003,2004,2005),5),
                  code = rep(c('GHY', 'DRF', 'JYU','HYU','POI'),each=5), 
                  X = c(60,70,400,300,15,20,200,150,61,71,401,301,400,300,61,71,401,67,145,678,123,456,456,875,246))

pdat <- plm::pdata.frame(pdat, index=c("code", "year"))

pdat

【问题讨论】:

    标签: r for-loop panel-data parallel-foreach


    【解决方案1】:

    您已经在使用的包plm 提供了一个函数来执行您所描述的内容,一个内部转换(使用例如固定效应面板模型估计)。

    继续你的例子,你可以简单地做:

    Within(pdat$X)
    

    【讨论】:

    • 谢谢 Helix123。此变量 pdat$X 与固定效应模型中的虚拟变量相互作用。 plm 是自动进行贬低,还是必须在输入 plm::plm() 规范之前手动完成。
    • 请参阅plm 广泛的文档,尤其是。小插曲。对于面板模型估计,你不需要自己使用Within(),它都包裹在plm中。
    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 2014-09-02
    • 2015-03-21
    • 2023-03-13
    • 1970-01-01
    • 2017-11-12
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多