Прогнозирование данных панели с R - PullRequest
0 голосов
/ 08 января 2011

У меня есть данные, которые организованы в такие панели (см. Ниже вывод для функции dput()):

Country Year Month Var1 Var2
C1      2000 1     0    0
C1      2000 2     1    0
C1      2000 3     2    1
...  
C2      2000 1     1    1
C2      2000 2     1    2
C2      2000 3     3    1
...

Набор данных имеет в общей сложности 27 стран за период с 1999 по 2008 годы, но с несбалансированными панелями.

Я хочу иметь возможность оценить модель для полного набора данных, и из этой модели сделать прогнозирование для каждой страны в наборе данных. Я искал пакет YourCast от King et al. но поскольку все мои данные хранятся в одном файле, я не знаю, как создать объект данных, который будет принимать функция yourcast (). Кто-нибудь знает, как это сделать, не проходя через утомительную процедуру ручного разбиения файла данных на различные сечения?

PS: 48 наблюдений из набора данных:

structure(list(Country = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Belgium", 
"Denmark", "Czech.Republic", "Germany", "Estonia", "Greece", 
"Spain", "France", "Ireland", "Italy", "Cyprus", "Latvia", "Lithuania", 
"Luxembourg", "Hungary", "Malta", "Netherlands", "Austria", "Poland", 
"Portugal", "Slovenia", "Slovakia", "Bulgaria", "Romania", "Finland", 
"Sweden", "UK"), class = "factor"), Year = c(2003, 2003, 2003, 
2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2004, 2004, 
2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2003, 
2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 
2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 
2004, 2005), Month = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 
9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1), Yes = c(21L, 
18L, 20L, 19L, 31L, 39L, 28L, 2L, 28L, 21L, 26L, 50L, 14L, 28L, 
50L, 83L, 10L, 25L, 22L, 6L, 22L, 39L, 32L, 56L, 22L, 17L, 20L, 
20L, 32L, 39L, 23L, 2L, 27L, 21L, 28L, 48L, 14L, 27L, 50L, 89L, 
10L, 25L, 22L, 4L, 22L, 38L, 31L, 56L, 16L), No = c(0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 4L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 
0L, 0L, 0L, 1L, 2L, 0L, 0L, 0L, 2L, 0L, 1L, 1L, 0L, 0L), Abstention = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 3L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L
), No.Neg = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 1L, 0L), Abstention.Neg = c(0L, 0L, 0L, 1L, 1L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Yes.Neg = c(1L, 
0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 0L, 1L, 
0L, 0L, 2L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L
), Yes.Pos = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L), Missing = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Enlargement = c(0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1)), .Names = c("Country", "Year", "Month", "Yes", 
"No", "Abstention", "No.Neg", "Abstention.Neg", "Yes.Neg", "Yes.Pos", 
"Missing", "Enlargement"), row.names = c(1L, 2L, 3L, 4L, 5L, 
6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
19L, 20L, 21L, 22L, 23L, 24L, 61L, 62L, 63L, 64L, 65L, 66L, 67L, 
68L, 69L, 70L, 71L, 72L, 73L, 74L, 75L, 76L, 77L, 78L, 79L, 80L, 
81L, 82L, 83L, 84L, 85L), class = "data.frame")

Ответы [ 2 ]

1 голос
/ 10 января 2011

Это очень простая

библиотека (YourCast);

демонстрация (chp.11.10)

Вы можете подготовить свои данные так, чтобы они выглядели так же, как данные, использованные в этой демонстрациис командой yourprep.Введите? Yourprep

0 голосов
/ 08 января 2011

Если я понимаю вашу проблему, разделение базы данных может быть довольно простым.Предположим, вы назвали набор данных «data»:

results <- list()
for (i in 1:nlevels(data$Country)) {
    results[[levels(data$Country)[i]]] <- yourcast(...)
}

. В каком простом цикле вы можете делать все прогнозы для каждой страны и сохранять результаты в списке.Позже вы можете прочитать все результаты из списка results для всех стран.Например: results[['Hungary']]

Поскольку я ничего не знаю о пакете, который вы используете, вот небольшой пример, который можно вставить в цикл вместо строки, содержащей функцию yourcast ():

results[[levels(data$Country)[i]]] <- c(levels(data$Country)[i], length(which(data$Country == levels(data$Country)[i])))

Какая команда создаст список, связывающий все страны с двумя переменными: именем и размером выборки данной страны.

...