6 votos

¿Cómo realizar una regresión de datos de panel desbalanceados en R?

Estoy intentando realizar una regresión de datos de panel desequilibrados en R. Mi código es el siguiente:

pdata <- plm.data(b2, index = c("ticker", "year"))
try1 <- plm(formula = logDipLoanTotal ~ PrimeFiling  + 
logLiabBefore + logSalesBefore + EmplBefore + DebttoAssetRatio + 
squareDebttoAssetRatio + FSCashShortTermInvestments + Percent + 
NUM_OF_EMPLOYEES, data = pdata, model = "within", effect = "time")
summary(try1)

Me encuentro con el siguiente error:

duplicate couples (id-time) in resulting pdata.frame
to find out which, use e.g. table(index(your_pdataframe), useNA = "ifany")
duplicate couples (id-time)

Esto es obvio: estoy teniendo problemas porque mi panel de datos está desequilibrado, donde la combinación de "ticker/año" puede estar asociada con múltiples líneas de datos. Esto se debe a que se hicieron múltiples "acuerdos" en el año asociado con el ticker de la empresa en ese año, o a veces no se realizaron acuerdos en la combinación de ticker/año. ¿Cómo puedo ejecutar este tipo de modelo en RStudio con datos desequilibrados? Avísame si no tiene sentido y puedo editar la pregunta.

3voto

Matthias Benkard Puntos 11264

Aquí la solución dependería de lo que quieras lograr. Ten en cuenta que el problema no es solo que la serie esté desequilibrada, ya que en un conjunto de datos de panel desequilibrado ordinario donde las empresas tienen un número diferente de observaciones $T$, el comando aún funcionaría. Aquí no se necesitan ajustes, puedes probarlo fácilmente tú mismo:

 install.packages("plm")
library("plm")
data("EmplUK", package="plm")
result<-plm(formula = wage ~ emp, data = EmplUK, model = "within")
summary(result)

Lo cual te da esta salida:

Panel desequilibrado: n = 140, T = 7-9, N = 1031

Residuos: Min. 1st Qu. Mediana 3rd Qu. Máx. -12.13926 -1.21442 -0.20655 1.02437 17.11197

Coeficientes: Estimación Error Estándar Valor t Pr(>|t|) emp -0.119813 0.031103 -3.8521 0.0001255 ***

Por lo tanto, puedes usar datos desequilibrados sin necesidad de ajustes adicionales en el código de plm en sí. Creo que los autores se refieren a ajustes que deben hacerse al programar la función para tener en cuenta esto (al crear algunos problemas con las matrices, al menos eso es lo que entiendo del documento que enlazaste).

De todas formas, si te entiendo correctamente, el problema que tienes no solo se trata de que el panel esté desequilibrado, sino porque hay observaciones duplicadas, como estas:

ID de Empresa | Año | evento | x | Y | 1 | 1999 | 1 ene 2000 | 2 | 4 | 1 | 1999 | 20 ene 2000 | 24| 54 |

Este es un problema más serio que simplemente un panel desequilibrado. Aquí el problema no es la 'desequilibridad' sino el hecho de que tendrás observaciones 'duplicadas' si ejecutas algún modelo de panel con ID de empresa y Año como identificadores de panel, ya que no puedes tener un identificador de panel asignado a dos observaciones diferentes, ya que eso significa que tus observaciones no son únicas.

Esto podría resolverse de varias maneras:

  1. Ejecutar el modelo en fechas en lugar de en años si los eventos no ocurren exactamente al mismo tiempo. Entonces, ahora tus identificadores de panel serían: ID de Empresa Evento en lugar de ID de Empresa Año.

  2. Crear un nuevo ID de empresa para cada evento. Por lo tanto, podrías crear un nuevo ID de empresa así:

ID de Empresa | Año | evento | x | Y | 1_1 | 1999 | 1 ene 2000 | 2 | 4 | 1_2 | 1999 | 20 ene 2000 | 24| 54 |

sin embargo, la desventaja con el estimador dentro sería que si estos múltiples eventos en el mismo día ocurren solo una vez, estos se eliminarán, y también mi intuición me dice que esto conduciría a algunos problemas metodológicos si intentaras, por ejemplo, agrupar errores a nivel de empresa, ya que una empresa se trataría de manera diferente según el número de eventos.

  1. También podrías agregar los valores de X e Y a través de eventos en un solo día e incluir solo un indicador adicional para empresas con múltiples eventos en un año determinado.

  2. Considera un estimador diferente. Por ejemplo, en lugar del estimador dentro podrías utilizar OLS agrupado donde tratas cada observación como un evento individual con efectos fijos de empresa. No puedo pensar en ninguna razón por la que eso no podría aplicarse aquí.

También aquí recomendaría buscar paneles con duplicados. Sé que esto no es un duplicado genuino, pero en su mayoría cuando se discute este problema, muchas personas llaman a estas observaciones duplicados, por lo que probablemente te dará mejores resultados que buscar solo datos de paneles desequilibrados, que generalmente se aplica a datos de panel donde simplemente tienes diferentes $T$ para cada ID de panel.

2voto

mummey Puntos 263

Sería útil proporcionar un ejemplo reproducible. En el documento Panel Data Econometrics in R: The plm Package, los autores mencionan explícitamente que los conjuntos de datos económicos de panel a menudo resultan desbalanceados, lo que requiere alguna adaptación a los métodos. Afortunadamente, proporcionan una solución y el resultado de su trabajo se encuentra en el paquete complementario plm.

El siguiente ejemplo es de Arellano y Bond (1991). El empleo se explica por los valores pasados de empleo (dos rezagos), el valor actual y el primer rezago de salarios y producción, y el valor actual de capital.

R> emp.gmm <- pgmm(dynformula(emp ~ wage + capital + output, lag = list(2, + 1, 0, 1),
                  log = TRUE), EmplUK, effect = "twoways", model = "twosteps", 
                 + gmm.inst = ~log(emp), lag.gmm = list(c(2, 99))) 
R> summary(emp.gmm)

Llamada: Panel desbalanceado: n=140, T=7-9, N=1031

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X