2014-01-22 3 views
0

Я пытаюсь выполнить несколько регрессий данных панели через пакет pml в for loop, а затем сохранить результаты, чтобы я мог использовать summary для каждого из результатов регрессии. Тем не менее, я не могу понять, как использовать summary на list сохраненных результатов. Это то, что я пробовал:Сохранение и получение результатов регрессии в цикле

library(plm) 

########### Some toy data ################# 

Id <- c(rep(1:4,3),rep(5,2)) 
Id <- Id[order(Id)] 
Year <- c(rep(2000:2002,4),c(2000,2002)) 

z1 <- rnorm(14) 
z2 <- rnorm(14) 
z3 <- rnorm(14) 
z4 <- rnorm(14) 

CORR <- rbind(c(1,0.6,0.5,0.2),c(0.6,1,0.7,0.3),c(0.5,0.7,1,0.4),c(0.2,0.3,0.4,1)) 
CholCORR <- chol(CORR) 
DataTest <- as.data.frame(cbind(z1,z2,z3,z4)%*%CholCORR) 
names(DataTest)<-c("y","x1","x2","x3") 
DataTest <- cbind(Id, Year, DataTest) 

############################################ 

for(i in 2001:2002){ 

    Data <- DataTest[(DataTest$Year <= i), ] 
    TarLV <- plm(diff(y) ~ lag(x1) + x2 + x3, data = Data, model="pooling", index = c("Id","Year")) 
    if(i==2001){ 
    Res1St <- TarLV 
    } else { 
    Res1St <- c(Res1St,TarLV) 
    } 
} 

sapply(Res1St, function(x) summary(x)) 

Однако я получаю ошибку:

Error in tapply(x, effect, func, ...): Arguments must have same length 

я, вероятно, не сохранять результаты регрессий в очень разумным способом, а for loop, вероятно, можно избежать, Я просто не понимаю, как это сделать. Любая помощь ценится!

ответ

2

Сохраните объект plm в списке. Поэтому создайте пустой объект (out) перед циклом, а затем заполните его в цикле.

out <- NULL 
yr <- 2001:2002 
for(i in seq_along(yr)){ 
    take <- DataTest[(DataTest$Year <= yr[i]), ] 
    out[[i]] <- plm(diff(y) ~ lag(x1) + x2 + x3, data = take, model="pooling", index = c("Id","Year")) 

} 

lapply(out, summary) 

Здесь я сделал и другие изменения:

  • петля более 1,2, 3, ..., вместо 2001, 2002
  • Не хотите перезаписать DataTests -> переименованы до take
+0

Спасибо, что DataTest определенно не будет перезаписан. – Mace

Смежные вопросы