4 votos

plm en modelo de efectos fijos no funciona con id y tiempo

Actualmente estoy escribiendo mi tesis y me encuentro con un problema. Intento averiguar cómo influyen las variables a nivel de empresa, país e industria en la responsabilidad social de las empresas. Quiero añadir efectos fijos de industria (SEC) y de tiempo. Pero sólo puedo ejecutar el código con uno de ellos. En realidad, el código debería ser así, donde la primera parte son variables específicas del país y la AT y la LV son específicas de la empresa:

within <- plm(ESG ~ VOI_AC + Political.Stability + Government.effectiveness+ Regulatory.Quality +Rule.of.law + control.of.Corruption +Press.Freedom + pdi + idv + mas + uai + GI + HD + TA + LV, data=Neu1, index=c( "SEC", "year"),  model="within")

Intenté algunos problemas como:

Neu1$year <- group_indices(Neu1, year, SEC.NAME)

y algunas combinaciones fuera de esto. Sé que el problema es que tengo observaciones duplicadas por industria y año. Pero esto es, porque diferentes empresas estarán en la misma industria en un año. No puedo deshacerme del error:

  duplicate couples (id-time)
Zusätzlich: Warnmeldungen:
1: In pdata.frame(data, index) :
  duplicate couples (id-time) in resulting pdata.frame
 to find out which, use e.g. table(index(your_pdataframe), useNA = "ifany")
2: In is.pbalanced.default(index[[1]], index[[2]]) :
  duplicate couples (id-time)

La primera parte de mis datos tiene este aspecto: enter image description here

La última parte de mis datos tiene este aspecto: enter image description here

Agradezco cualquier ayuda. Soy un novato en R y realmente he leído mucho sobre este problema, pero no he encontrado una solución.

5voto

Bruce ONeel Puntos 391

Yo sugeriría que se ajustara un modelo multinivel, en el que la compañía/empresa estuviera anidada dentro de la industria y la empresa también estuviera anidada dentro del país. Se trata de un caso especial de modelo de efectos mixtos y podría especificarse con este tipo de fórmula (utilizando la notación adoptada por el lme4 biblioteca y otros):

ESG ~ fixed_effects + (1 | industry) + (1 | industry:firm) + (1| country) + (1 | country:firm) 

lo que equivale a:

ESG ~ fixed_effects + (1 | industry/firm) + (1| country/firm)

Así que aquí estamos ajustando efectos aleatorios (interceptos aleatorios) para los factores de agrupación, para manejar la no independencia de las observaciones dentro del factor de agrupación. En el marco del modelo mixto, todo lo que no se especifica en la parte aleatoria de la fórmula es un efecto fijo. Tenga en cuenta que también es posible permitir que los efectos fijos varíen dentro de los niveles del intercepto aleatorio, especificándolos como pendientes aleatorias. Por ejemplo, si queremos permitir un efecto fijo X también varían dentro de los niveles de country podríamos hacerlo así:

ESG ~ X + other_fixed_effects + (1 | industry) + (1 | industry:firm) + ( X | country) + (1 | country:firm) 

...y por eso a veces es mejor escribir la versión ampliada de la fórmula

Tenga en cuenta que con la metodología de los modelos mixtos no es necesario especificar en qué nivel varía una variable concreta: siempre que el anidamiento se especifique correctamente, el modelo manejará automáticamente las variables que varían a nivel de país, o a nivel de industria o a nivel de empresa. Si se especifica que una variable es una pendiente aleatoria, es decir, que varía dentro de los niveles de una variable de agrupación, pero no varía en ese nivel, los efectos aleatorios no se identificarán y se obtendrá un ajuste singular o un error.

5voto

Helix123 Puntos 287

Todo esto está en la documentación del paquete plm por ejemplo, la viñeta del paquete. Creo que te has confundido debido a los diversos efectos fijos que te gustaría estimar.

Tendría que especificar correctamente cuáles son las unidades de observación (dimensión individual) y cuál es la dimensión temporal de sus datos y ponerlas en el index argumento. Si se observan las empresas, la industria (variable SEC ) no es la dimensión individual, sino que la empresa es la dimensión individual (asumiré que los identificadores de la empresa están en la variable firm ; mirando sus datos, parece que es ASSET4.Company.Name ).

Ahora, le sugiero que configure primero los datos para la estructura de panel y luego estime el modelo (considero que este es un enfoque algo más limpio). Configurar los datos:

pdata <- pdata.frame(your_data, index = c("firm", "year"))

Estimemos primero un modelo de efectos fijos de dos vías con efectos fijos individuales (empresa) y temporales:

fe1 <- plm(ESG ~ VOI_AC + Political.Stability + Government.effectiveness + Regulatory.Quality +Rule.of.law + control.of.Corruption + Press.Freedom + pdi + idv + mas + uai + GI + HD + TA + LV, data = pdata,  model = "within", effect = "twoways")

Para añadir más efectos fijos, inclúyalos en la fórmula con factor(your_variable) así para la industria:

fe2 <- plm(ESG ~ factor(SEC) + VOI_AC + Political.Stability + Government.effectiveness+ Regulatory.Quality + Rule.of.law + control.of.Corruption + Press.Freedom + pdi + idv + mas + uai + GI + HD + TA + LV, data = pdata,  model="within", effect = "twoways")

El enfoque de Robert con los paquetes R lme4 (o nlme ) es un enfoque de máxima probabilidad. plm La viñeta de la empresa contiene una comparación y hay algunas buenas preguntas y respuestas sobre ambos enfoques aquí en Cross Validated. Lo que he expuesto aquí es probablemente lo que utilizan los econometristas y lo que usted pidió originalmente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X