2013-04-22 3 views
1

Я пытаюсь выполнить несколько регрессий OLS для объединения в «изменяющийся» набор данных панели. Данные Gasoline в plm пакете будет хорошо подходят в качестве примераВыполнение нескольких данных панели эффективно в R

library(plm) 
data("Gasoline", package = "plm") 
head(Gasoline) 

    country year lgaspcar lincomep lrpmg  lcarpcap 
1 AUSTRIA 1960 4.173244 -6.474277 -0.3345476 -9.766840 
2 AUSTRIA 1961 4.100989 -6.426006 -0.3513276 -9.608622 
3 AUSTRIA 1962 4.073177 -6.407308 -0.3795177 -9.457257 
4 AUSTRIA 1963 4.059509 -6.370679 -0.4142514 -9.343155 
5 AUSTRIA 1964 4.037689 -6.322247 -0.4453354 -9.237739 
6 AUSTRIA 1965 4.033983 -6.294668 -0.4970607 -9.123903 

Данные охватывает 1960 по 1978 год, и я хотел бы выполнить объединения ресурсов МНК на панельных данных за предыдущие годы за период с 1961 по 1978 год. То есть, первая регрессия представляет собой только поперечное сечение данных 1960 года, вторая регрессия - панельная регрессия 1960 и 1961 годов, третья регрессия - панельная регрессия по данным за 1960, 1961 и 1962 годы, и т. д.

Я знаю, как сделать единую регрессию OLS для объединения (просьба не обращать внимания на конкретную регрессию - это только пример):

plm(lgaspcar ~ lcarpcap + lincomep, data = Gasoline, model='pooling') 

Я ищу умный способ сделать эту регрессию панели при изменении набора данных. Есть ли способ ограничить годы набора данных в вызове plm?

ответ

2

Ну, вы можете поместить его в цикл, но я не вижу способа его оптимизации, поскольку каждый регресс должен быть выполнен заново.

plm.results = lapply(1961:1978, 
        function(y) plm(lgaspcar ~ lcarpcap + lincomep, 
           data = subset(Gasoline, year <= y), 
           model='pooling')) 
+0

Спасибо, я делаю что-то типа с 'for' цикла ' для (я в 1961 году: 1978) { '' данных <- Бензин [(бензин $ год Mace