Car

El problema de la multicolinealidad, intuirlo y detectarlo

El modelo líneal se puede escribir de forma matricial como Y = X • Beta + Error. Donde Y es el vector con nuestra variable dependiente, X la matriz con las variables regresoras, Beta el vector de parámetros y el error esa parte aleatoria que tiene que tener todo modelo. La matriz con nuestras variables regresoras X ha de tener rango completo es decir, todas sus columnas tienen que ser linealmente independientes. Eso nos garantiza que a la hora de estimar por mínimos cuadrados ordinarios X’ X es invertible. Si no es invertible la estimación por mínimos cuadrados ordinarios “se vuelve inestable” ya que X’X =0 y 1/ X’X será muy complicado de calcular ya que los Beta son inversa(X’ X) •X’Y; por ello los resultados que arroja el modelo tienen una alta variabilidad. Cuando esto nos pasa tenemos colinealidad.

Trabajando con factores en R. Attach frente a within

Un ejemplo de trabajo con datos en R. Transformamos factores de dos formas distintas. Por un lado empleamos within con recode de la librería car y por otro lado empleamos el mítico attach.

Manejo de datos con within :

datos library(car)

datos prog id reconocimientos reconocimientos2 = recode(num_awards,"0='Sin renococimiento';1='1 reconocimiento';

else='Más de un reconocimiento'")

})

Manejo de datos con attach/detach :

attach(datos)

datosmath_cat[math<50 ] <- "D" datosmath_cat[math >= 50 & math < 60] <- "C" datosmath_cat[math >= 60&math<75] <- "B" datosmath_cat[math >= 75] <- "A"

datos$math_cat detach(datos)

No voy a entrar en que es más óptimo, tarda menos y demás. En mi opinión es mejor utilizar within pacece más «pulcro» y la verdad es que la función recode nos facilita mucho el trabajo pero como siempre tenemos múltiples posibilidades con R, por eso es R. Saludos.

Recodificar el valor de un factor en R

Tras leer una duda planteada en la lista de R-Help en español me he animado a crear una entrada acerca de la recodificación de factores en R. Así dejo recogido algún código/truco que puede serviros en vuestro trabajo con R y que este pequeño problema no afecte a vuestra productividad. Además os acerco a la función recode del paquete car. Pero en primer lugar os planteo como recodificar factores empleando IF/ELSE: