Unos de los problemas mas comunes en una regresion lineal multiple es el de multicolinealidad , ya que lo que se quieres es que las variables respuestas sean ortogonales y esto se da raramente en casos reales.

Para ver un ejemplo sobre ello primero hagamos la lectura de nuestros datos y la correlaciones que hay entre nuestras variables

Proy02<-read.csv("Proy03.csv",sep=",")
library(ggplot2)
library(grid)
library(gridExtra)
library(corrplot) 
## corrplot 0.84 loaded
correlations <- cor(Proy02)              
corrplot(correlations, method="number", order="hclust", type="lower")

Con esto tenemos una idea de cuales son las variables que aportan al problema de multicolinealidadad. Ahora hagamos unos gráficos para poder analizar el comportamiento de estas variables

p <- ggplot(aes(x = RVie, y = Vel), data = Proy02) + 
  geom_point(color = 'Blue') + theme_bw() + 
  labs(caption = "Coeficiente de Correlación  = - 0.97")

q <- ggplot(aes(x = Acel, y =Cons), data = Proy02) +
  geom_point(color = 'Blue') + theme_bw() + 
  labs(caption = "Coeficiente de Correlación = 0.74")
grid.arrange(p, q, ncol = 2, top = "Diagrama de Dispersión")

en nuestro diagrama de dispersion vemos como se comportan estas variables y observamos que las variables Vel y Rvie tienen una fuerte correlación negativa al igual que las variables Cons y Acel.

ahora hagamos un test de multicolinealidad llamado el factor de inflación de la varianza VIF

library(carData)
library(car)
attach(Proy02)
lm1<-lm(Cons~.,data=Proy02)
options(scipen = 9990) 
vif(lm1)
##      Acel       Rpm       Vel      Rpen      RVie 
##  1.254810  1.308056 27.375098  1.200066 26.577818

observamos que la variable RVie y Vel presentan un vif mayor a 10, por lo que una de las soluciones seria retirar unas de estas variable.

Por otro lado para poder ver de que forma estan relacionadas las variables regresoras hagamos el análisis de multicolinealidad usando los eigenvalores y eigenvectores

options(scipen = 999)
x <- round(eigen(cor(Proy02[,2:6]))$values,8)
x[1]/x[length(x)] 
## [1] 112.9568

vemos que el numero de condicion dada por \(K=\dfrac{\lambda_{maximo}}{\lambda_{minimo}}\) para nuestros datos que tenemos es \(k=112.9568\) y como este valor esta entre 100 y 1000 tenemos una multicolinealidad moderada

Ahora calculemos los indices de condición que esta dada por \(K_i=\dfrac{\lambda_{maximo}}{\lambda_{i}}\)

for (i in 1:length(x)) {
  y=x[1]/x[i]
  print(y)
}
## [1] 1
## [1] 1.518084
## [1] 2.28948
## [1] 3.677616
## [1] 112.9568

vemos que el único indice de condición que esta entre 100 y 1000 es la quinta variable que corresponde a Rvie (esto ya lo teniamos presente con el análisis de factor de inflación de la varianza VIF).

Ahora veamos de que forma estan relacionadas las variables regresoras, para ello calculamos los autovalores

options(scipen = 999)
eigen_valor<-round(eigen(cor(Proy02[,2:6]))$values,5)
eigen_valor
## [1] 2.10413 1.38605 0.91904 0.57215 0.01863

observamos que el autovalor mas pequeño es el 0.01863 (perteneciente a la quinta variable Rvie) por lo que los valores de \(c_i\) de la siguiente ecuación \[\displaystyle\sum_{i=1}^{5}c_ix_i=0\] estara dada por la columna 5 de la siguiente matriz

options(scipen = 999)
eigen_v<-round(eigen(cor(Proy02[,2:6]))$vectors,5)
eigen_v
##          [,1]     [,2]     [,3]     [,4]     [,5]
## [1,]  0.04604  0.65716 -0.46224  0.59207 -0.04252
## [2,]  0.05379  0.71484  0.15779 -0.67764 -0.04492
## [3,]  0.67325 -0.04870 -0.17848 -0.08661  0.71064
## [4,] -0.32639 -0.18352 -0.82836 -0.41492  0.03802
## [5,] -0.65969  0.14524  0.20830  0.10297  0.69980

por lo tanto tenemos que la relacion entre las variables es la siguiente \[-0.04252\cdot Acel-0.04492\cdot Rpm+0.71064\cdot Vel+0.03802\cdot Rpen+0.69980\cdot RVie=0\]

despreciando los valores pequeños tenemos \[0.71064\cdot Vel+0.69980\cdot RVie=0\]

Con esto podemos decir que dichos regresores (Vel y RVie) tienen una relación (como lo habiamos observado en la matriz de correlación )