Исправлены регрессии эффектов с помощью plm - PullRequest
1 голос
/ 19 марта 2020

Приведенный ниже код запускает регрессию временного ряда «extrar ~ mkt_rf» с помощью biglm, поскольку функция lm не работает с моим реальным набором данных.

Теперь я хотел бы перейти с biglm на plm для учета фиксированные эффекты. К сожалению, plm не работает.

Кто-нибудь знает, что я могу изменить эту работу plm? Заранее спасибо!

library(biglm)
library(plm)
library(data.table)

union_with_factors = data.table(
  t = c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5),
  excessr  = c(10,23,13,53,43,76,34,12,45,13,42,31,4,53,64),
  FundId = c("x","x","x","x","x","y","y","y","y","y","z","z","z","z","z"),
  mkt_rf = c(1,1,2,1,3,1,1,2,1,3,1,1,2,1,3)
)

sp <- split(union_with_factors, union_with_factors$FundId)
beta <- sapply(sp, function(tmp){
  fit <- plm(excessr ~ mkt_rf, data = tmp)
  coef(fit)
})

1 Ответ

1 голос
/ 19 марта 2020

Предположим, что идентификатор личности задан FundId, а идентификатор времени - t, вот как можно применить регрессию с фиксированными эффектами:

library(biglm)
library(data.table)
library(plm)

union_with_factors = data.table(
  t = c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5),
  excessr  = c(10,23,13,53,43,76,34,12,45,13,42,31,4,53,64),
  FundId = c("x","x","x","x","x","y","y","y","y","y","z","z","z","z","z"),
  mkt_rf = c(1,1,2,1,3,1,1,2,1,3,1,1,2,1,3)
)
fit <- plm(excessr ~ mkt_rf, 
             data = union_with_factors, 
             index = c("FundId", "t"), 
             model = "within")
summary(fit)
fixef(fit)

См. здесь и в документации plm (?plm в консоли) для более подробной информации

Редактировать: после этой записи и этой статьи , похоже, что вы можете сделать регрессию Фама-МакБет с помощью pmg (также в пакете plm):

fama_macbeth <- pmg(excessr ~ mkt_rf, 
                   data = union_with_factors, 
                   index = c("FundId", "t"))
summary(fama_macbeth)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...