Модель с фиксированным эффектом с тремя индексами для прогнозов вне выборки с использованием plm в R - PullRequest
0 голосов
/ 04 октября 2018

Я не совсем уверен, принадлежит ли это здесь или в статистике, но я думаю, что это больше вопрос программирования, чем вопрос статистики.В любом случае, я чувствую, что нахожусь над моей головой, вот и все.

У меня есть данные о некоторых потоках из стран происхождения iso_o в страны назначения iso_d в течение нескольких лет.В качестве независимых переменных у меня есть переменные с характеристиками стран происхождения, стран назначения и переменными, касающимися отношений между страной происхождения и страны назначения.Мои данные выглядят примерно так:

set.seed(0)
iso_o <- LETTERS[rep(1:3, each = 3, times = 2)]
iso_d <- LETTERS[rep(1:3, times = 6)]
year <- rep(1990:1991, each = 9, times = 1)
relation <- runif(18, 0, 10)
x1_o <- runif(18, 0, 10)
x2_o <- runif(18, 0, 10)
x1_d <- runif(18, 0, 10)
x2_d <- runif(18, 0, 10)
flow <- rnorm(18, 10, 3)

df <- data.frame(iso_o, iso_d, year, relation, x1_o, x2_o, x1_d, x2_d, flow)

df <- df %>%
    mutate(x1_o = if_else(iso_d == iso_o, x1_d, x1_o),
           x2_o = if_else(iso_d == iso_o, x2_d, x1_o),
           relation = if_else(iso_d == iso_o, 0, relation))

Пожалуйста, не обращайте внимания на несоответствия в данных выше, это всего лишь пример.

На самом деле, у меня есть независимая переменная для многих других стран, иЯ хочу использовать их для прогнозирования потоков между этими странами на основе моей выборки.Годы в моем желаемом прогнозе такие же, как в моей выборке.Для него я хочу использовать модель с фиксированными эффектами с функцией plm.Проблема в том, что эта функция допускает только одну «индивидуальную» индексную переменную, где у меня есть две.Конечно, я могу комбинировать столбцы iso_o и iso_d, чтобы создать одну отдельную индексную переменную, но я хочу, чтобы фиксированные эффекты страны отправителя и получателя были отдельными.

Как я могу запустить этот фиксированныйэффект регрессии?И возможно ли сделать прогнозирование вне выборки, которое я хочу, или я что-то упустил?Спасибо.

1 Ответ

0 голосов
/ 05 октября 2018

Попробуйте это (в том, что касается кодирования, вы можете доверять этому решению, но я не знаю различий между различными моделями plm, так что ваш вопрос может быть лучше решен на corssvalidated):

df <- transform(df, id=match(paste(df$iso_o,df$iso_d,sep="_"), unique(paste(df$iso_o,df$iso_d,sep="_")))) #create a column called id which assigns a unique id to the unique combinations of origin and destination countries
library(plm)
model <- plm(flow ~ retention+x1_o+x2_o+x1_d+x2_d,
      data = df, index = c("id","year")) #set up your plm model 

summary(model)
...