En los casos expuestos hasta ahora, también en clase, se ha trabajado siempre con variables númericas. El PIB de los países, la inversión en innovación, el número de turistas, la inflación… Estas variables permiten un análisis estadístico sencillo, ya que nos están diciendo cómo se relaciona una variable en función de la otra. Por ejemplo:
\[PIBpc_i=\beta_0 + \beta_1ID_i + e_i\] es una ecuación en la que se determina que la riqueza de un país depende de su inversión en I+D, medida como porcentaje sobre el propio PIB. Si el valor de \(\beta_1\) fuera igual a 160, diríamos que por cada punto que se incrementa la inversión en I+D, la renta media de los ciudadanos se incrementa en 160 dólares. Pero a veces estas variables explicativas toman una forma categórica, y no numérica.
Se considera como variable categóricas a quellas que sirven para “categorizar”, valga la redundancia, a los sujetos de una muestra. Por ejemplo, si son hombres o mujeres, o si tienen los ojos marrones, azules o verdes, o si son destinos costeros o de interior.
A diferencia de las numéricas, no se puede establecer una relación ordenada con la información de las categóricas. Es decir: mi \(\beta_i\) no puedo medir el efecto de si un destino es costero o interior porque esto no tiene valor numérico, sino meramente descriptivo. Así que hemos de darles un valor. Ahora bien, como la descripción no nos dice que una cosa es mejor que la otra, todas deben tener el mismo valor, es decir, 1.
Veamos como se hace. Partimos de la muestra antes descrita, pero ahora añadimos la relación “hombre”, “mujer”:
#Creamos una muestra aleatoria de variables x, y, z, siendo z una dicotómica
x <- c(10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 16, 16, 18, 18, 18, 20)
y <- c(10, 14, 12, 10, 12, 10, 14, 14, 10, 12, 12, 10, 16, 16, 14, 18, 12, 16, 16, 14, 18, 14, 14, 18, 16, 18, 16, 18, 20, 20)
z <- c('h', 'm', 'h', 'h', 'h', 'h', 'm', 'h', 'h', 'h', 'm', 'h', 'h', 'h', 'h', 'h', 'h', 'm', 'm', 'h', 'm', 'm', 'h', 'm', 'm', 'm', 'm', 'h', 'm', 'm')
Cuando trabajamos con categóricas podemos hacer diferentes análisis, por ejemplo, cómo se distribuye nuestra variable dependiente en función de si la persona de la muestra es hombre o mujer. Para ello podemos usar una gráfica de cajas, o boxplot:
boxplot(y~z,
main="Distribución de y categorizado por z",
col=c("salmon","steelBlue"),
xlab="Sexo")
Pero pasemos a hacer el análisis de correlación. Al tratarse de una variable con solo dos posibles respuestas, hombre o mujer, usaremos en la misma columna los valores 1 - 0. El valor 1 lo otorgaremos a la identidad que nos interesa investigar, aunque RStudio puede otorgar un valor sin hacer ninguna modificación:
\[Y_i=\beta_0+\beta_1X_i+\beta_2Z_i+u_i\] tomando generalmente la variable \(Z\) el hombre de la categoría que ha adquirido el valor 1. En este caso, como vamos a dejar que RStudio determine el valor 1 ó 0 a su antojo, no nos preocupa, pero en los modelos de clase sí se debe especificar.
summary(lm(y~x+z))
##
## Call:
## lm(formula = y ~ x + z)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.7780 -1.2330 0.1328 1.2503 4.2220
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.0798 2.0491 1.503 0.1444
## x 0.7642 0.1528 5.001 3.04e-05 ***
## zm 1.7067 0.7717 2.212 0.0356 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.92 on 27 degrees of freedom
## Multiple R-squared: 0.6307, Adjusted R-squared: 0.6033
## F-statistic: 23.05 on 2 and 27 DF, p-value: 1.447e-06
¿Cómo leemos estos resultados? En primer lugar, “zm” indica que la identidad “m” ha tomado el valor 1. De esta forma debemos entender que, según el modelo, ser mujer supone añadir 1.7 unidades a la variable y con respecto a ser hombre, con una confianza del 95%.
Pero, ¿qué ocurre si tenemos una tercera opción? Aquellos que no se sientan ni hombres ni mujeres también pueden decantarse por la opción “o”:
z2 <- c('h', 'o', 'h', 'o', 'h', 'h', 'o', 'h', 'o', 'h', 'o', 'h', 'h', 'h', 'o', 'h', 'h', 'o', 'm', 'h', 'm', 'o', 'h', 'm', 'o', 'm', 'm', 'h', 'o', 'm')
En este caso, si queremos trabajar la base de datos, ya no serviría una única columna. Tendríamos que tener dos columnas (siempre una columna menos que las opciones posibles). Por ejemplo, una columna h en la que se tomara el valor 1 cuando fueran hombres, y 0 en caso contrario; la columna m funcionaría igual, con las mujeres tomando el valor 1 y 0 en caso contrario. La opción “o” se derivaría sola, no se necesita otra columna, ya que ocuparía con valores 1 aquellos individuos en los que tanto “h” como “m” sean 0. De esta forma, nuestro modelo quedaría:
\[Y_i = \beta_0+\beta_1X_i+\beta_2Zm_i+\beta_3Zh_i+e_i\] De todas formas, lo haremos como antes: dejaremos que R tome sus decisiones:
summary(lm(y~x+z2))
##
## Call:
## lm(formula = y ~ x + z2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.9767 -1.2701 0.0141 1.4279 4.0233
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.2337 2.2911 1.411 0.169986
## x 0.7674 0.1676 4.578 0.000102 ***
## z2m 1.8995 1.1082 1.714 0.098433 .
## z2o 0.4837 0.8347 0.580 0.567236
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.016 on 26 degrees of freedom
## Multiple R-squared: 0.608, Adjusted R-squared: 0.5628
## F-statistic: 13.44 on 3 and 26 DF, p-value: 1.72e-05
En este caso, de una variable con tres opciones (h, m, o), se han creado dos variables dicotómicas, zm (1 si es mujer, 0 en caso contrario) y zm0 (1 si es otro, 0 en caso contrario) ¿Y cómo se interpreta este resultado? El valor 1.89 corresponde con \(\beta_2\), es decir, cuando la persona en cuestión es mujer. El valor 0.4 sería \(\beta_3\), es decir, cuando la persona tiene otra identidad que no es hombre o mujer. El valor por los individuos hombres queda recogido en \(\beta_0\), junto con el resto de elementos desconocidos.
En ocasiones nos encontramos con variables que tienen valores muy alejados entre ellas, y que dificultan el análisis econométrico, bien porque los efectos de una sobre otra son mínimos, o bien porque tienen naturaleza de medición distinta.
Vamos a tomar un ejemplo muy extremo: imaginemos que estimamos los efectos de la Inversión en universidades de un país en millones de euros, como una proxy de desarrollo económico, con respecto a la altura media de los ciudadanos. Tendríamos algo parecido a:
\[Estatura_i = \beta_0 + \beta_1Inv.Univ_i + e_i\]
#Creamos una muestra aleatoria de variables x, y
x <- c(10000, 10000, 10000, 10000, 12000, 12000, 12000, 12000, 12000, 12000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 16000, 16000, 16000, 16000, 18000, 18000, 18000, 20000)
y <- c(100, 140, 120, 100, 120, 100, 140, 140, 100, 120, 120, 100, 160, 160, 140, 180, 120, 160, 160, 140, 180, 140, 140, 180, 160, 180, 160, 180, 200, 200)
summary(lm(y~x))
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -45.266 -9.297 -2.243 14.734 34.734
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 19.375444 21.162750 0.916 0.368
## x 0.008992 0.001495 6.015 1.76e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.49 on 28 degrees of freedom
## Multiple R-squared: 0.5637, Adjusted R-squared: 0.5482
## F-statistic: 36.18 on 1 and 28 DF, p-value: 1.757e-06
En esta nueva muestra aleatoria generada, el resultado de nuetra \(\beta_1\) tiene un valor ínfimo igual a 0.009, lo que implica que la relación entre cada millón de euros invertido en universidades y la estatura poblacional es muy bajo.
Podríamos solucionar este resultado, por ejemplo, dividiendo, siendo que si hablamos de miles de millones, entonces el valor de \(\beta_1\) sí adquiere cierta notoriedad. ¿Pero tiene sentido hablar de miles de millones? ¿Y tiene sentido medir los efectos de una variable económica sobre otra que capta altura? ¿Este ejercicio puede realizarse sobre todas las poblaciones entendiendo que en cada región del planeta las alturas medias son muy distintas unas de otras? Quizá el investigador entienda que no, y por tanto hay que buscar alternativas de medición de variables
Una de las soluciones que se pueden utilizar es el rescalado de variables. Ante variables que tienen dimensiones tan dispares, se puede buscar una forma de concentrar sus valores respecto a dos puntos concretos, generalmente \(0\) y \(1\), ó \(0\) y \(10\). Reescalar no es más que restar a cada valor el mínimo de su variable, y dividirlo entre el rango de la variable:
\[xr_i = \frac{x_i-x_{mín}}{x_{máx}-x_{mín}} \] Pero al hacerlo, los valores de los estimadores se transforman:
library(scales)
xr <- rescale(x,to=c(0,10)) #Escalamos la variable x a valores entre 1 y 10
yr <- rescale(y,to=c(0,10)) #Escalamos la variable y a valores entre 1 y 10
summary(lm(yr~xr))
##
## Call:
## lm(formula = yr ~ xr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.5266 -0.9297 -0.2243 1.4734 3.4734
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.9297 0.6969 1.334 0.193
## xr 0.8992 0.1495 6.015 1.76e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.049 on 28 degrees of freedom
## Multiple R-squared: 0.5637, Adjusted R-squared: 0.5482
## F-statistic: 36.18 on 1 and 28 DF, p-value: 1.757e-06
La interpretación ahora sería algo así como “el incremento de una unidad sobre la variable escalada de x incrementa en 0.9 a la variable escalada de y”. De esta forma es cierto que estamos perdiendo capacidad explicativa en relación a las unidades de medida, pero nos ayuda a comprender el efecto de las variables y a ponerlas en relación a la población.
La estandarización es un proceso similar al anterior, pero que conduce a las variables a tomar una serie de valores medios y de desviación estándar determinados. En concreto, lo que se consigue estandarizando nuestras variables es dotarlas de un valor medio \(\mu = 0\) y una desviación estándara \(\sigma = 1\). De esta forma, las variables quedan centradas sobre el valor 0, y nos facilita entender cómo interactúan entre sí.
La variable obtenida mediante la estandarización, \(x^*\) sería:
\[x^*_i = \frac{x_i-\bar x}{ds_x} \] que no es sino la resta de la media de la variable x en cada caso, dividido entre la desviación estándar de la variable. Y podemos hacer lo mismo con la variable \(y\), para obtener \(y^*\). De esta forma, tendríamos que:
options(scipen=999) #eliminamos la notación científica para ver el efecto en beta 0
xe <- scale(x,center=T,scale=T)
ye <- scale(y,center=T,scale=T)
summary(lm(ye~xe))
##
## Call:
## lm(formula = ye ~ xe)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.48498 -0.30500 -0.07357 0.48335 1.13946
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.0000000000000003247 0.1227252555827258451 0.000 1
## xe 0.7508236805602206410 0.1248232751747737485 6.015 0.00000176 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6722 on 28 degrees of freedom
## Multiple R-squared: 0.5637, Adjusted R-squared: 0.5482
## F-statistic: 36.18 on 1 and 28 DF, p-value: 0.000001757
Uno de los efectos de la estandarización de las variables es que, dado que ahora todas las variables tienen media 0, desaparece el efecto de \(\beta_0\). Dicho de otra forma, en nuestro gráfico de dispersión la línea que minimiza los errores pasará por el punto 0,0, y por tanto el constructo será igual a 0. Su interpretación será igual que la anterior: por cada punto que incrementa nuestra variable \(x\) estandarizada, se genera un aumento de 0.7 en nuestra variable \(y\) estandarizada.
Para el final dejamos las que, en el análisis econométrico, quizá sean las transformaciones más relevantes, las logarítmicas. Mediante estas transformaciones lo que se consigue es hablar de elasticidades, con lo que dejamos de calcular unidades, para hablar de incrementos porcentuales.
Cuando realizamos transformaciones logarítmicas realmente estamos trabajamos con modelos de regresiones exponenciales, tal que:
\[Y_i=\beta_0X_i^{\beta_1}e^{u_i}\] que puede expresarse como:
\[lnY_i=\alpha+\beta_2lnX_i+u_i\]
lx <- log(x)
ly <- log(y)
summary(lm(ly~lx))
##
## Call:
## lm(formula = ly ~ lx)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.36502 -0.07559 -0.00165 0.10498 0.26088
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.2419 1.4631 -2.216 0.035 *
## lx 0.8602 0.1536 5.602 0.00000537 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1513 on 28 degrees of freedom
## Multiple R-squared: 0.5284, Adjusted R-squared: 0.5116
## F-statistic: 31.38 on 1 and 28 DF, p-value: 0.000005375
Al medir elasticidades lo que estamos observando en el ejercicio anterior es que un incremento de un 1% de la variable \(x\), genera un incremento positivo sobre la variable \(y\) de un 0.8%.
Pero las transformaciones logarítmicas también pueden tener lugar únicamente en una de las variables. Si bien a los modelos con doble logaritmo se les conoce como log-log, o logarítmicos, a los que solo cuentan con logaritmos en alguna de las variables se les conoce como “semilog”. En nuestro caso tendríamos dos posibilidades: la primera de ellas es que la transformación logarítmica se haga sobre la variable a regresar:
\[lnY_i=\beta_0+\beta_1X_i+u_i\] Este modelo se denomina log-lin. En este modelo, el estimador \(\beta_2\) se entiende como el cambio relativo en la variable \(Y\), respecto al cambio absoluto respecto a la variable \(X\). De esta forma, al multiplicar el cambio relativo de \(Y\) por cien, tenemos el cambio porcentual, o la tasa de crecimiento en \(Y\) ocasionada por un cambio absoluto en \(X\) (semielasticidad de \(Y\) con respecto a \(X\)).
summary(lm(ly~x))
##
## Call:
## lm(formula = ly ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.35121 -0.10273 -0.01333 0.11233 0.23657
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.08668523 0.15538113 26.30 < 0.0000000000000002 ***
## x 0.00006212 0.00001098 5.66 0.00000459 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1504 on 28 degrees of freedom
## Multiple R-squared: 0.5336, Adjusted R-squared: 0.5169
## F-statistic: 32.03 on 1 and 28 DF, p-value: 0.00000459
El resultado obtenido nos indica que el efecto del incremento de una unidad en \(X\) genera un aumento de un 0.0062% (\(\beta_1 \times 100\)) en la variable regresada, \(Y\).
En el otro caso tenemos el modelo “lin-log”, es decir, las variables regresoras son las que se transforman logarítmicamente:
\[Y_i=\beta_0+\beta_1lnX_i+u_i\] en este caso, el valor de \(\beta_1\) se interpreta como un cambio en la variable \(Y\), respecto a un cambio relativo en la variable \(X\). Veamos:
summary(lm(y~lx))
##
## Call:
## lm(formula = y ~ lx)
##
## Residuals:
## Min 1Q Median 3Q Max
## -47.247 -8.188 -1.038 12.753 34.355
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1033.12 201.17 -5.136 0.0000191 ***
## lx 123.64 21.11 5.856 0.0000027 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.8 on 28 degrees of freedom
## Multiple R-squared: 0.5505, Adjusted R-squared: 0.5344
## F-statistic: 34.29 on 1 and 28 DF, p-value: 0.000002699
Ahora, con un valor \(\beta_2\) igual a 123, diremos que un incremento de un 1% de \(X\), se genera un aumento de 1,23 puntos en \(Y\) (es decir, \(123/100\)).
Esta transformación semi-log es muy interesante cuando alguna de las dos variables ya está en valores porcentuales, ya que, por ejemplo, es más interesante decir que la tasa de desempleo desciende dos puntos (es decir, un 2%), que desciende un 2% (es decir, un 2% respecto al porcentaje que ya nos está indicando).