2013-04-11 12 views
8

Mam problem z konfiguracją modelu danych panelu.R: plm - rok naprawiono efekty - dane z roku i kwartału

Oto przykładowe dane:

library(plm) 

id <- c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2) 
year <- c(1999,1999,1999,1999,2000,2000,2000,2000,1999,1999,1999,1999,2000,2000,2000,2000) 
qtr <- c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4) 
y <- rnorm(16, mean=0, sd=1) 
x <- rnorm(16, mean=0, sd=1) 

data <- data.frame(id=id,year=year,qtr=qtr,y_q=paste(year,qtr,sep="_"),y=y,x=x) 

uruchomić następującą regresję za pomocą 'id' jako indywidualnego indeksu i 'rok' jako indeks czasu:

reg1 <- plm(y ~ x, data=data,index=c("id", "year"), model="within",effect="time") 

Niestety, mam następujący błąd:

duplicate couples (time-id) Error in pdim.default(index[[1]], index[[2]]) :

Aby to obejść, używam połączonej zmiennej, która jest "y_ q ':

reg1 <- plm(y ~ x, data=data,index=c("id", "y_q"), model="within",effect="time") 

Ale tutaj jest mój problem - chcę tylko mieć rok, a nie rok.

Czy istnieje inny sposób obejścia wcześniejszego wydania zamiast tworzenia indeksu tiem "y_q"?

Z góry dziękujemy za wszelką pomoc!

+0

zobaczyć również https://stackoverflow.com/questions/28789767/how-to-include-a-year-fixed-effect-in-a-year -kart-panel-danych-w-r-użyciu-plm – Helix123

Odpowiedz

3

W ustawieniach panelu zwykle nie ma pewnej powielonej wartości dla każdego numeru identyfikatora pary.

W twoich danych kwartalnych trudno będzie obliczyć roczny model efektów stałych bez agregowania danych, aby były one corocznie.

Sprawdź przykłady here, aby zobaczyć, jak dane powinny być sformatowane do modelowania danych panelowych.

Oto oneway to zrobić:

require(plyr) 
yeardata <- ddply(data, .(year, id), summarize, y = mean(y), 
               x = mean(x)) 


require(plm) 
reg1 <- plm(y ~ x, data = yeardata, index = c("id", "year"), model = "within", effect = "time") 
fixef(reg1) 

##  1999  2000 
## 0.2641997 0.0041193 
Powiązane problemy