Está en la página 1de 4

UNIVERSIDAD NACIONAL DE COLOMBIA- SEDE MEDELLÍN

FACULTAD DE CIENCIAS
ESTADÍSTICA II- SEMESTRE 2021-I
TALLER # 7
Multicolinealidad. Técnicas para seleccionar variables: Todas las regresiones posibles, criterios para evaluar modelos de regresión con subconjuntos de variables.

Se cree que la calidad del vino Pinot Noir (Y) se relaciona con sus propiedades de claridad (X1), aroma (X2), cuerpo (X3),
sabor (X4) y fuerza (X5). Los datos de 38 vinos arrojaron los siguientes resultados: (Montgomery, 2006).

TABLA1
Parámetros estimados
Estimación Limites.2.5 Limites.97.5 Pr(>|t|) Vif Coef.Std
(Intercept) 3.9968648 -0.54910206 8.5428317 0.082775 0.000000 0.0000000
Claridad 2.3394535 -1.19427368 5.8731807 0.186958 1.266390 0.1418015
Aroma 0.4825505 -0.07240642 1.0375075 0.086058 2.381143 0.2553829
Cuerpo 0.2731612 -0.40424262 0.9505650 0.417503 2.056492 0.1100653
Sabor 1.1683238 0.54811681 1.7885307 0.000552 2.682277 0.5872108
Fuerza -0.6840102 -1.23641174 -0.1316086 0.016833 1.096731 -0.2468160

1) Escriba el modelo de RLM junto con sus supuestos.

2) De acuerdo con la información de la TABLA 1 se puede concluir:


a. La variable más importante para explicar la calidad del vino Pinot Noir es el intercepto del modelo, al ser 𝛽̂𝑜 = 3.997
el parámetro de mayor magnitud.
b. La variable más importante para explicar la calidad del vino Pinot Noir es su claridad, pues el valor del parámetro
estimado para ella es 2.34, mayor en valor absoluto que el del resto de las predictoras.
c. La variable más importante para explicar la calidad del vino Pinot Noir (variable más importante en el modelo
estimado), es su sabor.
d. Ninguna de las anteriores.

3) De los siguientes, no se considera un efecto de la multicolinealidad:


a. El vector de parámetros estimados se aleja del vector de parámetros real.
b. Encontrar que la regresión es significativa, cuando individualmente ninguna variable lo es en presencia de las demás.
c. Variables que resultan significativas realmente no lo son, y variables que resultan no significativas realmente si lo son.
d. Un R2 cercano a cero.
TABLA 2
Matriz de correlación entre las variables
Claridad Aroma Cuerpo Sabor Fuerza Calidad
Claridad 1.00000000 0.0619021 -0.3083783 -0.08515993 0.18321471 0.02844131
Aroma 0.06190210 1.0000000 0.5489102 0.73656121 0.20164445 0.70732432
Cuerpo -0.30837826 0.5489102 1.0000000 0.64665917 0.15210591 0.54870219
Sabor -0.08515993 0.7365612 0.6466592 1.00000000 0.17976051 0.79004713
Fuerza 0.18321471 0.2016444 0.1521059 0.17976051 1.00000000 -0.04704047
Calidad 0.02844131 0.7073243 0.5487022 0.79004713 -0.04704047 1.00000000

4) De acuerdo con la información de la TABLA 2 se puede concluir:


a. Existe multicolinealidad generada por las variables sabor y aroma.
b. Existe una dependencia lineal fuerte solo entre las variables sabor y aroma.
c. La correlación entre aroma y cuerpo, aroma y sabor, cuerpo y sabor; dan indicio de presencia de multicolinealidad en
el modelo.
d. Ninguna de las anteriores.

5) De analizar los factores de inflación de varianza (TABLA 1), se puede concluir que:
a. En el modelo hay multicolinealidad severa.
b. No es necesario realizar ninguna otra prueba que detecte multicolinealidad, concluyendo así que en el modelo no existe
dicho problema.
c. Se puede concluir que bajo el criterio de los factores de inflación de varianza no se han encontrado problemas de
multicolinealidad.
d. Ninguna de las anteriores.
TABLA 3
Diagnósticos Multicolinealidad - Intercepto incluído
Índices de Condición y Proporciones de Varianza
Val.propio cond.index Pi.intercept Pi.Claridad Pi.Aroma Pi.Cuerpo Pi.Sabor Pi.Fuerza
1 5.892778580 1.00000 0.0002036224 0.0003832601 0.0005489391 0.0004033465 0.0004562156 0.0007313479
2 0.053255596 10.51907 0.0107871788 0.0700929920 0.0681735513 0.0213922257 0.0694121085 0.0728576280
3 0.021152509 16.69088 0.0004240390 0.1884301056 0.1576834227 0.1330738587 0.0008962534 0.4114209559
4 0.017746742 18.22220 0.0615902273 0.0117714986 0.2057689931 0.2363476388 0.0013629657 0.5080595817
5 0.010471949 23.72173 0.0008529761 0.0127668714 0.5080605252 0.1539498820 0.9273054964 0.0010770410
6 0.004594625 35.81253 0.9261419564 0.7165552723 0.0597645686 0.4548330483 0.0005669603 0.0058534457

TABLA 4
Diagnósticos Multicolinealidad - Intercepto ajustado
Índices de Condición y Proporciones de Varianza
Val.propio cond.index Pi.Claridad Pi.Aroma Pi.Cuerpo Pi.Sabor Pi.Fuerza
1 2.3758969 1.000000 0.003726535 0.054557492 0.06041582 0.0538777207 0.01596163
2 1.2427983 1.382654 0.376221204 0.008643631 0.02190405 0.0000192326 0.2393606
3 0.7923047 1.731680 0.225200070 0.052337389 0.01153816 0.0168625848 0.7142757
4 0.3448151 2.624948 0.381408240 0.220231413 0.84559949 0.0449069583 0.03033456
5 0.2441848 3.119281 0.013443951 0.664230075 0.06054248 0.8843335036 0.00006749

Responda las preguntas 6 y 7 apoyado en las TABLAS 3 y 4.

6) De analizar los índices de condición tanto con los datos centrados, como sin centrar; se puede concluir:
a. Como en el modelo con los datos centrados los índices de condición √𝐾𝑗 < 10, ∀𝑗 = 1,2, . . ,5 (5 variables predictoras),
se puede concluir que según los índices de condición no existen problemas de multicolinealidad.
b. En el modelo hay cuatro relaciones de multicolinealidad moderadas y una relación de multicolinealidad fuerte.
c. Los índices de condición no proporcionan información para determinar el grado de multicolinealidad en el modelo.
d. Ninguna de las anteriores.

7) Teniendo en cuenta los criterios anteriormente analizados, y según la información obtenida de las proporciones de
descomposición de varianza para los datos centrados y sin centrar, finalmente se puede concluir:
a. En el modelo existe un problema de multicolinealidad severa. Por otro lado, se puede ver una relación de
multicolinealidad moderada causada por aroma y sabor, de las demás relaciones no se tiene certeza de que variables
las causan.
b. Se ha encontrado que en el modelo existe una multicolinealidad severa causada por la claridad y el cuerpo; variables
de las que se tiene certeza, son las responsables de todos los problemas de multicolinealidad encontrados.
c. Finalmente, se puede concluir que no hay problemas de multicolinealidad de ningún tipo en el modelo; no se han
encontrado grados de asociación lineal entre las variables predictoras.
d. Ninguna de las anteriores.

Responda la siguiente pregunta apoyado en la TABLA 5 y el GRÁFICO 1.

8) Use el método de todas las regresiones posibles, para seleccionar los “mejores” tres submodelos según cada uno de los
criterios R2p, MSEp (ó R2Aj,p ) y Cp. Posteriormente, seleccione el mejor submodelo.

NOTA: Recordar que los criterios R2p y MSEp; permiten escoger submodelos que ajusten bien a los datos; mientras que por el
Cp de Mallows, se escoge el mejor submodelo para predecir.
TABLA 5 Todas las Regresiones Posibles
NoOfVars R2 adjR2 SSE Cp Variables.in.model Variables indexadas en columnas como 1, 2, ...,k
1 1 0.6242 0.6137 58.17344 9.0436 Sabor Modelos indexados en filas como 1, 2, ...
2 1 0.5003 0.4864 77.34658 23.2302 Aroma
3 1 0.3011 0.2817 108.18564 46.0486 Cuerpo p Cp Variables.in.model
4 1 0.0022 -0.0255 154.44590 80.2774 Fuerza 1 2 9.043605 Sabor
5 1 0.0008 -0.0269 154.66321 80.4382 Claridad 2 3 6.813160 Sabor Fuerza
6 2 0.6611 0.6417 52.45599 6.8132 Sabor Fuerza 3 4 3.927790 Aroma Sabor Fuerza
7 2 0.6586 0.6390 52.85227 7.1064 Aroma Sabor 4 5 4.674678 Claridad Aroma Sabor Fuerza
8 2 0.6334 0.6125 56.74481 9.9865 Claridad Sabor 5 6 6.000000 Claridad Aroma Cuerpo Sabor Fuerza
9 2 0.6266 0.6053 57.79310 10.7622 Cuerpo Sabor
10 2 0.5378 0.5114 71.54219 20.9354 Aroma Fuerza
Variables indexadas en columnas como 1, 2, ...,k
11 2 0.5372 0.5107 71.64363 21.0104 Aroma Cuerpo
Modelos indexados en filas como 1, 2, ...
12 2 0.5005 0.4720 77.31000 25.2031 Claridad Aroma
13 2 0.3442 0.3068 101.50333 43.1042 Claridad Cuerpo
p R2adj Variables.in.model
14 2 0.3185 0.2796 105.48706 46.0518 Cuerpo Fuerza
15 2 0.0036 -0.0533 154.22593 82.1146 Claridad Fuerza 1 2 0.6137349 Sabor
16 3 0.7038 0.6776 45.85341 3.9278 Aroma Sabor Fuerza 2 3 0.6417466 Sabor Fuerza
17 3 0.6801 0.6519 49.51437 6.6366 Claridad Sabor Fuerza 3 4 0.6776290 Aroma Sabor Fuerza
18 3 0.6646 0.6350 51.92041 8.4169 Cuerpo Sabor Fuerza 4 5 0.6801276 Claridad Aroma Sabor Fuerza
19 3 0.6625 0.6327 52.24051 8.6537 Claridad Aroma Sabor 5 6 0.6769428 Claridad Aroma Cuerpo Sabor Fuerza
20 3 0.6591 0.6290 52.76523 9.0420 Aroma Cuerpo Sabor
21 3 0.6409 0.6092 55.58562 11.1288 Claridad Cuerpo Sabor Variables indexadas en columnas como 1, 2, ...,k
22 3 0.5786 0.5414 65.22604 18.2620 Aroma Cuerpo Fuerza Modelos indexados en filas como 1, 2, ...
23 3 0.5420 0.5016 70.89558 22.4570 Claridad Aroma Cuerpo
24 3 0.5382 0.4974 71.48786 22.8952 Claridad Aroma Fuerza p R2 Variables.in.model
25 3 0.3798 0.3251 95.99577 41.0290 Claridad Cuerpo Fuerza 1 2 0.6241745 Sabor
26 4 0.7147 0.6801 44.15983 4.6747 Claridad Aroma Sabor Fuerza
2 3 0.6611116 Sabor Fuerza
27 4 0.7047 0.6689 45.70573 5.8185 Aroma Cuerpo Sabor Fuerza
3 4 0.7037672 Aroma Sabor Fuerza
28 4 0.6932 0.6560 47.48772 7.1370 Claridad Cuerpo Sabor Fuerza
29 4 0.6651 0.6245 51.84576 10.3616 Claridad Aroma Cuerpo Sabor 4 5 0.7147084 Claridad Aroma Sabor Fuerza
30 4 0.5920 0.5426 63.14662 18.7234 Claridad Aroma Cuerpo Fuerza 5 6 0.7205992 Claridad Aroma Cuerpo Sabor Fuerza
31 5 0.7206 0.6769 43.24801 6.0000 Claridad Aroma Cuerpo Sabor Fuerza

GRÁFICO 1. Criterios Cp, R2adj, R2 para submodelos


PROGRAMA R

#INGRESO DE DATOS DESDE ARCHIVO EXTERIOR + usr=par("usr");on.exit(par(usr)) +


#INSTALACIÓN Y CARGA DE PAQUETES NECESARIOS + par(usr=c(0,1,0,1)) resul=data.frame(Val.propio=val.prop,Ind.Con
> + r=cor(x,y) d=Ind$condindx,Pi=Ind$pi)
install.packages(c("car","perturb","leaps")) + + cat("Diagnósticos Multicolinealidad -
> library(car) txt=format(c(r,0.123456789),digits=digits)[1 Intercepto ajustado","\n",
> library(perturb) ] + "Índices de Condición y Proporciones de
> library(leaps) + txt=paste(prefix,txt,sep="") Varianza","\n")
+ if(missing(cex.cor)) + }
> Pto1 = read.table(file.choose(),header=T, + cex = 0.4/strwidth(txt) + resul}
dec=".") + text(0.5, 0.5, txt, cex = cex)}
> Pto1 > #PARA OBTENER LA ANOVA DEL MODELO DE RLM #SELECCION DE VARIABLES USANDO TODAS LAS
Claridad Aroma Cuerpo Sabor Fuerza Calidad CREAMOS LA SIGUIENTE FUNCIÓN REGRESIONES POSIBLES
1 1.0 3.3 2.8 3.1 4.1 9.8 > miAnova=function(modeloreg){ #Criterio Cp#
2 1.0 4.4 4.9 3.5 3.9 12.6 + SSq=unlist(anova(modeloreg)["Sum Sq"]) criterioCp=function(modeloreg,respuesta){
3 1.0 3.9 5.3 4.8 4.7 11.9 + k=length(SSq)-1 Cp=leaps(model.matrix(modeloreg)[,-
4 1.0 3.9 2.6 3.1 3.6 11.1 + SSR=sum(SSq[1:k]) 1],respuesta,method="Cp",nbest=1) #Mejor
5 1.0 5.6 5.1 5.5 5.1 13.3 + SSE=SSq[(k+1)] modelo para cada p
6 1.0 4.6 4.7 5.0 4.1 12.8 + MSR=SSR/k cuales<-apply(Cp$which,1,function(x)
7 1.0 4.8 4.8 4.8 3.3 12.8 + as.character(paste(colnames(model.matrix(mod
8 1.0 5.3 4.5 4.3 5.2 12.0 df.error=unlist(anova(modeloreg)["Df"])[k+1] eloreg)[,-1])[x],collapse=" ")))
9 1.0 4.3 4.3 3.9 2.9 13.6 + MSE=SSE/df.error resulCp=data.frame(p=Cp$size,Cp=Cp$Cp,Variab
10 1.0 4.3 3.9 4.7 3.9 13.9 + F0=MSR/MSE les.in.model=cuales)
11 1.0 5.1 4.3 4.5 3.6 14.4 + VP=pf(F0,k,df.error,lower.tail=F) plot(Cp$size,Cp$Cp,type="b",xlab="p",ylab="C
12 0.5 3.3 5.4 4.3 3.6 12.3 + p",xaxt="n",cex=2,ylim=c(0,max(Cp$Cp)))
13 0.8 5.9 5.7 7.0 4.1 16.1 result=data.frame(SumSq=c(SSR,SSE),Df=c(k,df axis(1,at=Cp$size,labels=Cp$size)
14 0.7 7.7 6.6 6.7 3.7 16.1 .error),MeanSq=c(MSR,MSE),F0=c(round(F0,digi abline(a=0,b=1,lty=2,col=2)
15 1.0 7.1 4.4 5.8 4.1 15.5 ts=3),' '), cat("Variables indexadas en columnas como 1,
16 0.9 5.5 5.6 5.6 4.4 15.5 + P.value=c(format(VP,scientific = 2, ...,k","\n",
17 1.0 6.3 5.4 4.8 4.6 13.8 TRUE,digits=3),' '),row.names "Modelos indexados en filas como 1, 2, ...
18 1.0 5.0 5.5 5.5 4.1 13.8 =c("Modelo","Error")) ","\n")
19 1.0 4.6 4.1 4.3 3.1 11.3 + cat("Tabla ANOVA Modelo de resulCp
20 0.9 3.4 5.0 3.4 3.4 7.9 Regresión","\n") }
21 0.9 6.4 5.4 6.6 4.8 15.1 + result} #Criterio R2adj#
22 1.0 5.5 5.3 5.3 3.8 13.5 > #CREANDO FUNCIÓN PARA EXTRAER COEFICIENTES criterioR2adj=function(modeloreg,respuesta){
23 0.7 4.7 4.1 5.0 3.7 10.8 ESTIMADOS, SUS IC DEL 95%, VIF'S Y R2adj=leaps(model.matrix(modeloreg)[,-
24 0.7 4.1 4.0 4.1 4.0 9.5 COEFICIENTES ESTANDARIZADOS 1],respuesta,method="adjr2",nbest=1) #Mejor
25 1.0 6.0 5.4 5.7 4.7 12.7 > modelo para cada p
26 1.0 4.3 4.6 4.7 4.9 11.6 miscoeficientes=function(modeloreg,datosreg) cuales<-apply(R2adj$which,1,function(x)
27 1.0 3.9 4.0 5.1 5.1 11.7 { as.character(paste(colnames(model.matrix(mod
28 1.0 5.1 4.9 5.0 5.1 11.9 + coefi=coef(modeloreg) eloreg)[,-1])[x],collapse=" ")))
29 1.0 3.9 4.4 5.0 4.4 10.8 + datos2=as.data.frame(scale(datosreg)) resulR2adj=data.frame(p=R2adj$size,R2adj=R2a
30 1.0 4.5 3.7 2.9 3.9 8.5 + dj$adjr2,Variables.in.model=cuales)
31 1.0 5.2 4.3 5.0 6.0 10.7 coef.std=c(0,coef(lm(update(formula(modelore plot(R2adj$size,R2adj$adjr2,type="b",xlab="p
32 0.8 4.2 3.8 3.0 4.7 9.1 g),~.+0),datos2))) ",ylab="R2adj",xaxt="n",cex=2)
33 1.0 3.3 3.5 4.3 4.5 12.1 + limites=confint(modeloreg,level=0.95) axis(1,at=R2adj$size,labels=R2adj$size)
34 1.0 6.8 5.0 6.0 5.2 14.9 + vifs=c(0,vif(modeloreg)) cat("Variables indexadas en columnas como 1,
35 0.8 5.0 5.7 5.5 4.8 13.5 + 2, ...,k","\n",
36 0.8 3.5 4.7 4.2 3.3 12.2 resul=data.frame(Estimación=coefi,Limites=li "Modelos indexados en filas como 1, 2, ...
37 0.8 4.3 5.5 3.5 5.8 10.3 mites,Vif=vifs,Coef.Std=coef.std) ","\n")
38 0.8 5.2 4.8 5.7 3.5 13.2 + cat("Coeficientes estimados, sus I.C, Vifs resulR2adj
> attach(Pto1) y Coeficientes estimados }
> Modelo= lm(Calidad~Claridad+ Aroma+ estandarizados","\n") #Criterio R2#
Cuerpo+ Sabor+ Fuerza) + resul} criterioR2=function(modeloreg,respuesta){
> summary(Modelo) > #CREANDO FUNCION PARA EXTRAER RESULTADOS R2=leaps(model.matrix(modeloreg)[,-
PARA DIAGNÓSTICOS DE MULTICOLINEALIDAD 1],respuesta,method="r2",nbest=1) #Mejor
#MATRIZ DE CORRELACIONES PARA VARIABLES > modelo para cada p
EN OBJETO Pto1 misDiagnostcolin=function(modeloreg,centrar= cuales<-apply(R2$which,1,function(x)
> cor(Pto1) F){ as.character(paste(colnames(model.matrix(mod
> #TABLA DE TODAS LAS REGRESIONES POSIBLES + if(centrar==F){ eloreg)[,-1])[x],collapse=" ")))
> allregtable<- + X=model.matrix(modeloreg) resulR2=data.frame(p=R2$size,R2=R2$r2,Variab
function(modeloreg,respuesta){ + les.in.model=cuales)
+ t1<- val.prop=prcomp(X,center=FALSE,scale=TRUE)$s plot(R2$size,R2$r2,type="b",xlab="p",ylab="R
summary(regsubsets(model.matrix(modeloreg)[, dev^2 2",xaxt="n",cex=2)
-1],respuesta,nbest=20),all.best=TRUE) + Ind=colldiag(modeloreg) axis(1,at=R2$size,labels=R2$size)
+ t2<-as.vector(apply(t1$which[,-1],1,sum)) + cat("Variables indexadas en columnas como 1,
+ t3<-apply(t1$which[,-1],1,function(x) resul=data.frame(Val.propio=val.prop,Ind.Con 2, ...,k","\n",
as.character(paste(colnames(model.matrix(mod d=Ind$condindx,Pi=Ind$pi) "Modelos indexados en filas como 1, 2, ...
eloreg)[,-1])[x],collapse=" "))) + cat("Diagnósticos Multicolinealidad - ","\n")
+ results<- Intercepto incluído","\n", resulR2
data.frame(NoOfVars=t2,R2=round(t1$rsq,4),ad + "Índices de Condición y Proporciones de }
jR2=round(t1$adjr2,4),SSE=round(t1$rss,5),Cp Varianza","\n")
=round(t1$cp,4),Variables.in.model=t3)#,MSE= + } > miscoeficientes(Modelo,Pto1)
round(t1$rss/(nrow(model.matrix(modeloreg)[, + else{ > misDiagnostcolin(Modelo)
-1])-(NoOfVars+1)),5) + X=model.matrix(modeloreg)[,-1] > misDiagnostcolin(Modelo,centrar=T)
+ results } + > allregtable(Modelo,Calidad)
> #CREANDO FUNCIÓN PARA MATRIZ DE DISPERSIÓN val.prop=prcomp(X,center=TRUE,scale=TRUE)$sd > criterioCp(Modelo,respuesta=Calidad)
CON CORRELACIÓN EN PANEL INFERIOR ev^2 > criterioR2adj(Modelo,respuesta=Calidad)
> + > criterioR2(Modelo,respuesta=Calidad)
panel.cor=function(x,y,digits=2,prefix="",ce Ind=colldiag(modeloreg,center=TRUE,scale=TRU
x.cor){ E)

También podría gustarte