Show Menu
Cheatography

R 3.4 Estimación de regresión datos de panel Cheat Sheet by

T3.4 Estimación de regresión datos de panel

Conceptos

𝛼 (i)
recoge todos aquellos factores indivi­duales (difer­entes entre indivi­duos, pero que no son observ­ables (no somos capaces de explicar)
𝛾 (t)
recoge todos aquellos factores temporales pero que no son observ­ables (no somos capaces de explicar)
𝜖 (it)
recoge aquello que no somos capaces de explicar con nuestras variables indepe­ndi­entes.
En los Modelos de Regresión Lineal Simple, Múltiple y Polinómico los efectos sobre la variable depend­iente 𝑦 que varían en 𝑖 se consid­eraban en el término de error 𝜖𝑖 . Ahora NO. En los Modelos de Regresión con Datos de Panel nos intere­sarán tres tipos de efectos sobre la variable depend­iente 𝑦 :
  Efectos sobre 𝑦 que varían en 𝑖 pero no en 𝑡 (effec­t='­ind­ivi­dual'). Es decir, la varianción entre individuos en un mismo instante de tiempo.
  Efectos sobre 𝑦 que varían en 𝑡 pero no en 𝑖 (effec­t='­time'). Es decir, la variación en el tiempo para un individuo dado.
  Efectos sobre 𝑦 que varían en 𝑖 y 𝑡 se consid­erarán en el término de error 𝜖𝑖𝑡 (effec­t='­two­ways').

Interp­ret­ación de la salida de los modelos

1. output de la regresión
output <- summar­y(f­ixed)
2. coefic­ientes de regresión estimados
output­$coef
3. residuos estimados
uhat <- resid(­fixed)
4. valores ajustados de la variable depend­iente
yajustado <- wdata$­far­e-uhat
Compro­bamos y = y_estimado + residu­os_­est­imados
head(c­bin­d(w­dat­a$f­are­,ya­jus­tad­o,u­hat))
5. grados de libertad
gdl = head(o­utp­ut$­df)[2]
6. suma de cuadrados de los residuos
ssr = sqrt(d­evi­anc­e(f­ixe­d)/gdl)
7. errores de los parámetros estimados
se = sqrt(d­iag­(ou­tpu­t$v­cov))
8. coefic­ientes de determ­inación
R2 = output­$r.s­quared
9. intervalos de confianza para los coefic­ientes de regresión
ci.bhat <- confin­t(f­ixed)
10. estadí­stico F y su p-valor
f_estad = output­$fs­tat­istic
11. obtener predic­ciones de nuevos datos
yhat1 = predic­t(f­ixed)

Criterios de selección del mejor modelo

A diferencia de los casos lineal simple y múltiple no se usan las métricas AIC, BIC y 𝑅2𝑎𝑑𝑗 .
Test de agrupa­miento
Se contrasta la hipótesis de que existen efectos indivi­duales inobse­rvables distintos entre indivi­duos, países, etc. Se usa para saber si tenemos que usar los primeros métodos visto o within­/ra­ndom. 𝐻0 es que existen efectos infivi­duales. Estimador pooling vs estimador de efectos fijos.
requir­e(plm)
pFtest­(fixed, pooling)
Test de Hausmann
necesi­tamos saber si se rechaza o no que 𝐶𝑜𝑣(𝛼𝑖­,𝑥𝑖𝑡)=0 para saber si optamos por el estimador de efectos fijos o efectos aleato­rios. bajo el supuesto de que la 𝐶𝑜𝑣(𝛼𝑖­,𝑥𝑖𝑡)=0 obtenemos que el estimador de efectos aleatorios es consis­tente y eficiente. Sin embargo, bajo la hipótesis altern­ativa 𝐶𝑜𝑣(𝛼𝑖­,𝑥𝑖𝑡)≠0 el estimador de efectos fijos es consis­tente, mientras que el estimador de efectos aleatorios es incons­ist­ente. si rechazamos la hipótesis nula 𝐻0 optaremos por el estimador de efectos fijos y si no, por el estimador de efectos aleato­rios.
requir­e(plm)
phtest­(ra­ndom, fixed)
 

Explor­ación inicial (prepa­ración)

requir­e(w­ool­dridge)
data(a­irfare)
wdata = airfar­e[,­c("f­are­"­,"di­st")]
1. Análisis gráfico de la existencia de relación lineal
scatte­r.s­mooth(x = wdata$­dist, y = wdata$­fare,
  main = "fare ~ dist")
2. Evidencia numérica de la existencia de relación lineal
cor(wd­ata­$fare, wdata$­dist)
Evidencia contra­stada
cor.te­st(­wda­ta$­fare, wdata$­dist)
Análisis de ajuste a una distri­bución normal
requir­e(e­1071)
par(mf­row­=c(1, 2))
hist(w­dat­a$fare, freq = FALSE)
lines(­den­sit­y(w­dat­a$f­are))
hist(w­dat­a$dist, freq = FALSE)
lines(­den­sit­y(w­dat­a$d­ist))
par(mf­row­=c(­1,1))
Prueba Shapir­o-Wilk con la función shapir­o.test
shapir­o.t­est­(wd­ata­$fare)
shapir­o.t­est­(wd­ata­$dist)
Prueba Anders­on-­Darling con la función ad.test de la librería nortest
requir­e(n­ortest)
ad.tes­t(w­dat­a$fare)
ad.tes­t(w­dat­a$dist)
Prueba Cramer-von Mises con la función cvm.test de la librería nortest
cvm.te­st(­wda­ta$­fare)
cvm.te­st(­wda­ta$­dist)
Prueba Kolmog­oro­v-S­mirnov con la función lillie.test del paquete nortest
lillie.te­st(­wda­ta$­fare)
lillie.te­st(­wda­ta$­dist)
3. Definir la estructura de una base de datos de panel
Obtenemos el número de dimens­iones
table(­air­far­e$year) # Qué años hay
nrow(t­abl­e(a­irf­are­$id)) #Vuelos cada año
Constr­uimos el panel de datos
librar­y(plm)
pdata = pdata.f­ra­me(­air­fare, index=­c("i­d","y­ear­"))
Eliminamos las columnas year e id
pdata = pdata.f­ra­me(­air­fare, index=­c("i­d","y­ear­"),
  drop.i­nde­x=TRUE, row.names = TRUE)
porcen­tajes de la variab­ilidad
summar­y(p­dat­a$fare)
las tarifas de billetes sólo ida (fare) se ven afectadas en gran medida (94,41 % ) por las difere­ncias existentes entre las agencias ( 𝑖 ) y residu­almente por el paso del tiempo ( 𝑡 ).
calcula la tarifa media de cada vuelo consid­erando todo el periodo
betwee­n(p­dat­a$fare)
calcula la diferencia de cada vuelo y año
Within­(pd­ata­$fare)
 

Análisis de regresión con datos de panel

Modelos de regresión con datos de panel
Modelos de regresión con datos de panel cumpliendo que 𝐶𝑜𝑣(𝛼𝑖­,𝑥𝑖𝑡)≠0
se supone que los efectos indivi­duales no observ­ables están correl­aci­onados con el resto de variables explic­ativas del modelo.
1.1. Estimador común de MCO 𝙿𝚘𝚘𝚕𝚒𝚗𝚐
Problema: las estima­ciones que obtenemos NO son consis­tentes (no se aproxima al valor del parámetro cuanto mayor es el tamaño de la muestra)
requir­e(plm)
pooling <- plm(lfare concen + ldist + I(ldis­t^2),
  data=p­data, model= "­poo­lin­g")
# Es lo mismo que
pooling2 <- lm(lfare
concen + ldist + I(ldis­t^2),
  data=p­data)
1.2. Estimador transf­orm­ación 𝙱𝚎𝚝𝚠𝚎𝚎𝚗
primera de las transf­orm­aci­ones. estima el modelo con las medias de cada individuo, país, etc.. el estimador es consis­tente aunque no considera el compor­tam­iento dinámico de las variables. NO recoge bien el efecto de las variables que varían en el tiempo aunque SI el efecto entre individuos en el término de error compuesto. Luego, no podemos extraer los efectos indivi­duales. No tiene en cuenta el fecto temporal.
between <- plm(lfare ~ concen + ldist + I(ldis­t^2),
  data=p­data, model= "­bet­wee­n")
summar­y(b­etween)
1.3. Estimador transf­orm­ación 𝙵𝚒𝚛𝚜𝚝⎯­𝚍𝚒𝚏­𝚏𝚎𝚛­𝚎𝚗𝚌𝚎𝚜 transf­ormar las variables en primeras difere­ncias entre periodos consec­utivos y aplicar MCO al modelo así transf­ormado. no permite identi­ficar los efectos indivi­duales, además de perderse una observ­ación temporal en todos los indivi­duos. suele usarse en modelos donde la dimensión temporal es grande y el interés se centra en la estimación de las pendientes y no en la estimación de los efectos indivi­duales. el estimador es consis­tente y SI considera el compor­tam­iento dinámico de las variables pero no permite obtener los efectos indivi­duales.
firstdiff <-p­lm(­lfare ~ concen + ldist + I(ldis­t^2),
  data=p­data, model= "­fd")
summar­y(f­irs­tdiff)
1.4 Estimador de efectos fijos 𝚆𝚒𝚝𝚑𝚒𝚗
tercera de las transf­orm­aci­ones. En este caso, el estimador es consis­tente, SI considera el compor­tam­iento dinámico de las variables y SI permite obtener los efectos indivi­duales pero si la 𝐶𝑜𝑣(𝛼𝑖­,𝑥𝑖𝑡)=0 no es eficiente.
Consiste en transf­ormar las variables en difere­ncias respecto a las medias dentro de cada submuestra y aplicar MCO al modelo así transf­ormado
En este caso, el estimador es consis­tente, SI considera el compor­tam­iento dinámico de las variables y SI permite obtener los efectos indivi­duales pero si la 𝐶𝑜𝑣(𝛼𝑖­,𝑥𝑖𝑡)=0 no es eficiente.
fixed <- plm(lfare concen + ldist + I(ldis­t^2), data=p­data, model= "­wit­hin­", effect = "­ind­ivi­dua­l")
summar­y(f­ixed)
fixed2 <- plm(lfare
concen + ldist + I(ldis­t^2), data=p­data, model= "­wit­hin­", effect = "­tim­e")
summar­y(f­ixed2)
fixed3 <- plm(lfare ~ concen + ldist + I(ldis­t^2), data=p­data, model= "­wit­hin­", effect = "­two­way­s")
summar­y(f­ixed3)
 
para extraer los efectos indivi­duales:
fixef(­fixed, type="l­eve­l")
Para obtener una estimación local de las betas de cada uno de los individuos
summar­y(f­ixe­f(f­ixed, type="d­mea­n"))
fixef(­fixed2, type="l­eve­l")
summar­y(f­ixe­f(f­ixed2, type="d­mea­n"))
1.5. Estimador de efectos aleatorios 𝚁𝚊𝚗𝚍𝚘𝚖
el estimador es consis­tente, SI considera el compor­tam­iento dinámico de las variables, SI permite obtener los efectos indivi­duales y si la 𝐶𝑜𝑣(𝛼𝑖­,𝑥𝑖𝑡)=0 el estimador de efectos aleatorios es eficiente (mínima varianza). El inconv­eniente es que si 𝐶𝑜𝑣(𝛼𝑖­,𝑥𝑖𝑡)≠0 el estimador de efectos aleatorios es incons­ist­ente.
random <- plm(lfare concen + ldist + I(ldist2), data=p­data, model= "­ran­dom­"­,effect = "­ind­ivi­dua­l")
summar­y(r­andom)
random2 <- plm(lfare
concen + ldist + I(ldist2), data=p­data, model= "­ran­dom­"­,effect = "­tim­e")
summar­y(r­andom2)
random3 <- plm(lfare ~ concen + ldist + I(ldis­t^2), data=p­data, model= "­ran­dom­"­,effect = "­two­way­s")
summar­y(r­andom3)
1.6 Comparar en una misma tabla los resultados de todas las transf­orm­aciones
# Comparamos los resultados obtenidos en los modelos MCO vs efectos fijos
librar­y(s­tar­gazer)
starga­zer­(po­oling)
starga­zer­(po­oling, between, firstdiff, fixed,
  type="t­ext­")
# Comparamos los resultados obtenidos en los modelos de efectos fijos
starga­zer­(fixed, fixed2, fixed3, type="t­ext­")
# Comparamos los resultados obtenidos en los modelos de efectos aleatorios
starga­zer­(ra­ndom, random2, random3, type="t­ext­")
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          ggplot2-scatterplots Cheat Sheet
          iGraph Cheat Sheet
          Introduction to Regression in R Cheat Sheet

          More Cheat Sheets by julenx

          Python 1.1 Numpy Cheat Sheet
          Python pandas Cheat Sheet
          R Cheat Sheet