Получите средние предельные эффекты для нескольких моделей, созданных в цикле - PullRequest
0 голосов
/ 29 мая 2020

Вот мой пример данных:

date = as.Date(c("2018-01-02", "2018-01-03", "2018-01-04", "2018-01-05",
                 "2018-01-08")),
X10026 = c(NA, -0.00998786767581905, 0.0138127158236847,
           -0.00955052427703185, 0.000741739716790146),
X10028 = c(NA, 0.0102061855670104, -0.0205122971731809,
           -0.0103146488851844, 0.0631645436361723),
X10032 = c(NA, 0.00130975769482644, 0.0122629169391759,
           0.00492650621870472, 0.0466929197138954),
X93436 = c(NA, -0.0102330515084391, -0.00828999211977932,
           0.00622970567668935, 0.0626382292829057),
mktrf = c(0.0085, 0.0059, 0.0042, 0.0066, 0.0019),
smb = c(0.0036, -0.0039, -0.0026, -0.0034, -0.0016),
hml = c(-0.0022, -0.0021, 0.0024, -0.0026, 7e-04)
)

Теперь я пытаюсь запустить линейную регрессию для нескольких переменных результата. Я хочу сделать это с помощью функции purr: map и пакета broom. Через некоторое время это сработало. Однако теперь я хочу получить средние предельные эффекты на основе сохраненных моделей с ggeffect. ggpredict работает, но ggeffect нет. ggpredict содержит контрольные переменные в их контрольной категории, я хочу, чтобы средние предельные эффекты сохраняли значения постоянными на их наблюдаемых значениях.

вот моя попытка:

# loop over outcomes; save predicted valies (at reference l)
# loop over outcome variables
sample_data <- sample_data %>% 
  gather(stock, return, starts_with("X")) %>% 
  group_nest(stock) %>% 
  mutate(model = map(data,
                     ~lm(formula = "return ~ mktrf + hml + smb",
                         data = .x,
                         na.action = na.exclude)),
        effects = map(model,ggeffect),
         tidy = map(model, broom::tidy),
    glance = map(model, broom::glance),
    augment = map(model, broom::augment)) %>%
  unnest(data)

И это сообщение об ошибке, которое я получаю:

Can't compute marginal effects, 'effects::Effect()' returned an error.

Reason: object '.x' not found
You may try 'ggpredict()' or 'ggemmeans()'.

ggeffects работает за пределами l oop, поэтому он должен имеют какое-то отношение к функции карты. Есть мысли?

...