【问题标题】:Periodic regression coefficient in a panel data r面板数据中的周期性回归系数 r
【发布时间】:2018-10-22 09:53:49
【问题描述】:

我有一个这样的面板数据框。其中return 是因变量,mkreturn 是自变量。

Firm date return mkreturn
A   Jan-07  7     12
A   Feb-07  8     14
A   Mar-07  2     16
A   Apr-07  4     18
A   May-07  2     20
A   Jun-07  5     15
A   Jul-07  3     17
A   Aug-07  4     13
A   Sep-07  2     19
A   Oct-07  5     20
A   Nov-07  4     21
A   Dec-07  6     13
A   Jan-08  7     21
A   Feb-08  7     33
A   Mar-08  5     12
A   Apr-08  5     12
A   May-08  5     15
A   Jun-08  4     17
A   Jul-08  4     13
A   Aug-08  4     12
A   Sep-08  2     12
A   Oct-08  3     17
A   Nov-08  4     15
A   Dec-08  7     10
B   Jan-07  12    12
B   Feb-07  4     14
B   Mar-07  10    16
B   Apr-07  9     18
B   May-07  9     20
B   Jun-07  13    15
B   Jul-07  7     17
B   Aug-07  14    13
B   Sep-07  21    19
B   Oct-07  13    20
B   Nov-07  12    21
B   Dec-07  18    13
B   Jan-08  13    21
B   Feb-08  16    33
B   Mar-08  14    12
B   Apr-08  5     12
B   May-08  21    15
B   Jun-08  12    17
B   Jul-08  16    13
B   Aug-08  11    12
B   Sep-08  11    12
B   Oct-08  10    17
B   Nov-08  15    15
B   Dec-08  9     10

现在我想像这样找出每年的回归系数。(但是,数据可能是每日的,预期的输出可能是每月的)

             mkreturn coeff
2007    A         ……
2008    A         ……
2007    B         ……
2008    B         ……

你能帮我解决这个问题吗?

【问题讨论】:

  • 我不知道“但是,数据可能是每日的,预期的输出可能是每月的”是什么意思,但看起来你需要交互lm(return~Firm*mkreturn)
  • 表示周期可能会改变。类似的输入可能是每日数据形式,预期输出可能是每个公司的月度系数。

标签: r regression panel periodicity


【解决方案1】:

年份列

test$Year <- format(test$date,format="%Y")

每年创建组-公司

test$id <- paste(test$Firm, test$Year, sep="_")

使用 lme4 包运行 GroupWise 回归。这里 id 是组列

library(lme4)
fits <- lmList(return ~ mkreturn | id, data=df)
coefficients(fits)

输出

       (Intercept)      mkreturn
A_2007   10.501558 -3.738318e-01
A_2008    2.967155  1.131965e-01
B_2007   11.833333 -6.869076e-16
B_2008    9.230499  2.234604e-01

【讨论】:

  • 你知道这里的元组代表的是随机效应而不是固定效应吗?
  • 对不起,我没有意识到。我想我需要更改元组的代码。应该是年公司组。你可以帮帮我吗?然后我可以编辑它。或者你可以编辑你的帖子
  • 帮不上忙,因为我仍然不明白您要做什么,但我仍然相信我的答案就是您要找的。​​span>
  • 我已经编辑了我的答案。现在好了。喜欢的可以看看
  • 这是一种错误的方法,您在 4 个单独的组上构建了 4 个不同的模型,这不是它的完成方式(您以这种方式丢失了信息)。在答案中向我们展示这些模型的输出。
【解决方案2】:

如果我理解正确(您的数据框的名称是 df)

#create new variable which is a combination of firm and date    
df$tuple=factor(paste0(df$Firm,substr(df$date,5,6))) 

#linear model with interatcions
lm(return~tuple*mkreturn,data=df) 

【讨论】:

  • 非常感谢您的努力。但很抱歉,这不是我想要的。如果你检查我的预期输出,你的结果不是那样的。相反,它产生了太多的输出。
  • 如果您在数据下提供的表格就是您所需要的,那么请查看编辑,只需将 * 更改为 +。这样,您将获得 mkreturn 的所有系数,以及所有常量。
  • 看到你正在使用元组作为独立变量,如 mkreturn。但是,元组应该是组,我们需要每个组的 mkreturn 系数。在我们的例子中,我们有四个组。所以每四个组有四个 mkreturn 系数。
  • 元组需要包含在模型中才能“分组”。我不知道你在哪里看到 16 个组,我只看到 4 个。列出所有你认为可以从这些组中组成的组。
  • 好吧,这意味着你说 tupleA-1 tupleB-0 tupleB-1 mkreturn (这四个系数从你的代码产生)是每组的 mkreturn 系数?
猜你喜欢
  • 2019-07-23
  • 2021-08-05
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
相关资源
最近更新 更多