You are on page 1of 12

Anlisis Multivariante Laboratorio I Gerardo Colmenares

Y sus Aplicaciones

LABORATORIO DE COMPONENTES PRINCIPALES EN MATLAB

Este ejercicio consiste en aplicar el mtodo de componentes principales como


herramienta para la reduccin de dimensionalidad de las variables
independientes mediante funciones de MATLAB.

De acuerdo a lo visto, un modelo de la forma y=f(xi), i=1,N. Se obtuvo una


muestra desde un conjunto de observaciones mediante el mtodo de muestreo
estratificado para la seleccin de muestras representativas de varios tamaos.
El nmero de variables originales xi podra ser reducido a uno nuevo zi. De
este modo, se puede tener un nuevo y reducido conjunto de variables z,
totalmente independientes, de la forma y=f(zi), i=1,n, siendo n<<N.

En este sitio WEB hay disponible un conjunto de ejemplos (data250, data500,


data800) en Excel que representa conjuntos de datos conformado por nueve
variables (x1x9) y una variable respuesta y. Desde este archivo se extraen las
variables independientes xi para ser examinadas mediante el mtodo de
reduccin. La variable y, tambin presente en estos conjuntos de datos, se
separa para otras pruebas.

Este archivo seleccionado en Excel debe ser convertido a un archivo tipo texto
(ascii) previamente a ser utilizado en MATLAB. Supongamos que el nombre
del archivo tipo texto se llamar data.txt.

Desde MATLAB, se procede a realizar el anlisis de componentes principales.


A manera de ejemplo, solamente se incluyen el procedimiento general y es
comparado con el mtodo numrico de valores singulares (SVD), a los fines
de conocer el mtodo alternativo para hacer estos clculos bsicos. En esta
gua slo se incluyen los comandos. Los resultados deberan ser observados
para realizar los anlisis correspondientes.

Se recomienda el uso del par de comandos diary on, al principio del ejercicio,
y diary off, al terminar todo el trabajo, para que quede registrado todo el

1
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

laboratorio en un archivo y pueda ser editado y revisado en posteriores


consultas.

diary labacp

load data.txt

Trasladamos los datos a una matriz XY

XY=data;

Seleccionamos la matriz X con solo las variables independientes. Debe


verificar con anticipacin cuantas columnas corresponden a X.
En este caso son 9 y estn ubicadas entre la columna 2 y 10

X=XY(:,2:10);

size(X)

ans =

Revise. El resultado

La matriz que compone las variables independientes es de 9 variables


independientes.

X(1:1,1:9)

ans =

Revise .. el resultado

Luego la variable respuesta ser

2
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

Y=XY(:,11)

Esta muestra estratificada de acuerdo a la variable dependiente y, ser


explorada a los fines de determinar si se le puede aplicar una reduccin de
variables.

Emplearemos los dos mtodos que pueden determinar los componentes


principales.

Funcin en MATLAB para emplear el Mtodo de los valores singulares.

help SVD

SVD Singular value decomposition.


[U,S,V] = SVD(X) produces a diagonal matrix S, of the same
dimension as X and with nonnegative diagonal elements in
decreasing order, and unitary matrices U and V so that
X = U*S*V'.

S = SVD(X) returns a vector containing the singular values.

[U,S,V] = SVD(X,0) produces the "economy size"


decomposition. If X is m-by-n with m > n, then only the
first n columns of U are computed and S is n-by-n.

See also SVDS.

De acuerdo a este mtodo podemos obtener una matriz diagonal que incluye
los valores propios de la matriz simtrica.
Para nuestro caso la matriz simtrica es la matriz de correlacin.

3
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

Determinamos la matriz de correlacin R.

R=corrcoef(X);

Revise .. el resultado

Observar una matriz 9x9. La suma de la diagonal representa el rango de la


matriz

A simple vista podemos observar en la matriz algunos elementos con valores


cercanos a uno. Esto pareciera indicar una colinealidad entre variables.
Se aplica SVD y de acuerdo a los valores singulares, tenemos:

[u,lambda,v]=svd(R);

donde:

Revise .. el resultado

lambda

Revise .. el resultado

Observe la diagonal principal. Los valores propios, al multiplicarse por 100,


representan el porcentaje equivalente a la contribucin de la varianza de cada
componente. Observe adems que esta contribucin es decreciente hasta
completar el nmero de componentes principales. La suma de la diagonal
(traza) representa el rango de la matriz.

Por otro lado, los componentes principales quedan definidos por los

4
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

autovectores v.
Es decir,

Revise .. el resultado

Observe que estos vectores (autovectores) son ortogonales y ortonormales. El


producto indistintamente de dos de ellos ser igual cero (ortoganiladad) y el
producto de cada uno de ellos por si mismo es igual uno (ortonoprmalidad).
Por ejemplo, el producto entre los dos primeros autovectores debera ser cero.

v(1:1,:)*v(2:2,:)'

ans =

Revise .. el resultado

Estos autovectores definen el nuevo espacio dimensional ortonormal donde


las variables originales podran ser definidas en unas nuevas (variables
latentes) mediante una rotacin a estos nuevos ejes en los cuales quedaran
proyectadas.

Se puede observar que la traza tanto de la matriz de correlacin R como el de


la matriz de los autovalores lambda es la misma.

trace(R)

ans =

trace(lambda)

5
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

ans =

Por otro lado, igualmente y de manera simplificada, se puede obtener el


conjunto de componentes principales al estimar en una misma funcin los
autovalores, autovectores y el porcentaje explicado por cada uno de las nuevas
variables cuando ellas son rotadas.

El comando en MATLAB tiene la siguiente sintaxis:

help pcacov

PCACOV Principal Component Analysis using the covariance matrix.


[PC, LATENT, EXPLAINED] = PCACOV(X) takes a the covariance
matrix,
X, and returns the principal components in PC, the eigenvalues of
the covariance matrix of X in LATENT, and the percentage of the
total variance in the observations explained by each eigenvector
in EXPLAINED.

De acuerdo a esta funcin y utilizando la matriz de correlacin R como matriz


de entrada, tenemos

[cp,lambda,explicacion]=pcacov(R);

donde:
cp: matriz de componentes principales,
lambda: matriz diagonal con los autovalores de R,
explicacion: porcentaje explicado de la varianza por cada uno de los
componentes.

Los componentes principales (autovectores) son:

6
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

cp

Los resultados en cp y v resultan los mismos por ambos mtodos.

Del mismo modo, los autovalores son:

lambda'

El porcentaje explicado por cada una de las variables al ser transformadas es:

explicacion'

De acuerdo a lo anterior y al criterio de Kayser (lambda >1), observe cuantas


variables estn en capacidad de explicar lo ms cercano al 90% de la varianza
total. Sin embargo, bajo el criterio de Jolliffe (lambda > 0.7), estas referencias
deben revisarse al momento de decidir que tan eficiente se desea sea el nivel
de prediccin del modelo que se desea construir con las variables
transformadas. Es decir, a este punto, hemos elegido los primeros k1
componentes principales. Los restantes k2 componentes seran determinados
evaluando la correlacin de la variable dependiente y con las variables
transformadas z.

Otra gua para la seleccin de los componenetes es si comparamos estos


valores grficamente mediante el scree plot (diagrama del codo); se retienen
aquellos componentes que muestren un apreciado cambio de pendiente. Esta
seleccin termina cuando se observa una tendencia uniforme o casi uniforme
de la pendiente.

Veamos por ejemplo

plot(lambda)

7
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

4.5

3.5

2.5

1.5

0.5

0
1 2 3 4 5 6 7 8 9

En este caso, se puede retener hasta el componente cinco.

Estandarizacin de la matriz de datos a los fines de poder rotarlos.

Se estandariza variable por variable con media cero y varianza uno, a fin rotar
las observaciones originales y contabilizar cada una de las variables originales
en el vector x en su equivalente de variables latentes z (estos son los scores).
Para este caso se dispone de 252 observaciones, entonces los comandos seran
para cada una de las 9 variables estandarizadas

sx1=(X(:,1:1)-ones(252,1).*mean(X(:,1:1)))./sqrt(var(X(:,1:1)));
sx2=(X(:,2:2)-ones(252,1).*mean(X(:,2:2)))./sqrt(var(X(:,2:2)));
sx3=(X(:,3:3)-ones(252,1).*mean(X(:,3:3)))./sqrt(var(X(:,3:3)));
sx4=(X(:,4:4)-ones(252,1).*mean(X(:,4:4)))./sqrt(var(X(:,4:4)));
sx5=(X(:,5:5)-ones(252,1).*mean(X(:,5:5)))./sqrt(var(X(:,5:5)));
sx6=(X(:,6:6)-ones(252,1).*mean(X(:,6:6)))./sqrt(var(X(:,6:6)));
sx7=(X(:,7:7)-ones(252,1).*mean(X(:,7:7)))./sqrt(var(X(:,7:7)));
sx8=(X(:,8:8)-ones(252,1).*mean(X(:,8:8)))./sqrt(var(X(:,8:8)));
sx9=(X(:,9:9)-ones(252,1).*mean(X(:,9:9)))./sqrt(var(X(:,9:9)));

Compilamos en una matriz SX todos los vectores que contienen las variables
originales estandarizadas

SX=[sx1 sx2 sx3 sx4 sx5 sx6 sx7 sx8 sx9];


8
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

Las variables latentes en Z1 o Z2 son los nuevos valores contabilizados de las


variables originales en los nuevos ejes. Esto es, las variables z, mediante la
rotacin de sus ejes son definidas por los componentes principales cp o v.

Z1=SX*cp;
Z2=SX*v;

Comprobacin de que tanto cp como v son equivalentes: Z1 y Z2 tienen los


mismos resultados

Z1-Z2;

Revise .. el resultado

El comando que sigue le permite observar que variables, vectores o matrices


tiene residente en memoria hasta este punto de esta sesin de trabajo. Por
ejemplo

who

Your variables are:

R cp sx3 sx9
SX data250 sx4 u
X explicacion sx5 v
Z1 lambda sx6
Z2 sx1 sx7
ans sx2 sx8

En este momento debemos revisar si los ltimos k2 (criterio de Jolliffe que


indica revisar correlaciones mayores a 0.7 en los componentes no retenidos y
revisados por segunda vez para su posible retencin) Estos componentes se

9
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

pueden incorporar revisando las correlacin entre la variable dependiente y y


las nuevas variables en Z.

Para ello utilizamos el vector Y, previamente considerado.

who

Your variables are:

R cp sx3 sx9
SX data250 sx4 u
X explicacion sx5 v
Z1 lambda sx6 xsyy_250
Z2 sx1 sx7
ans sx2 sx8 Y

size(Y)

Revise .. el resultado

Y es entonces correlacionado con Z.

En esta fase se hace la estimacin de la matriz de correlacin entre las


variables latentes en Z (Z1 o Z2) y la variable respuesta Y. Para ello, en una
matriz ZY todas las columnas para estimar la matriz de correlacin Rzy y
observar los valores de la variable y los componentes en Z no retenidos en la
primera oportunidad. Y es un vector columna, luego debe ser transpuesto para
hallar ZY.

Sera

ZY=[Z1 Y];

10
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

Ahora
Rxy = corrcoef(ZY)

Revise .. el resultado

Simplifiquemos. Como en este ejercicio result en una matriz de correlacin


de orden 10x10, revisaremos la ltima columna que se corresponde con la
variable y y las nuevas variables independientes z, a fin de seleccionar los k2
restantes componentes que indicarn la incorporacin de nuevas variables,
para mejorar el nivel de estimacin del modelo resultante y=f(z).

Rxy(:,10)

Revise .. que observa

Podemos observar que a pesar de seleccionar algunos primeros componentes


(en el caso de este ejemplo fueron los primeros cinco), se pueden agregar
aquellos que tengan una buena correlacin de las variables latentes z con y. De
ah que estos ltimos componentes, mencionados como los k2 componentes,
pueden ser incorporados como parte de los componentes definitivamente
seleccionados en el proceso de reduccin. Por tanto, los componentes
definitivos que se podran incluir como variable independientes dados por la
matriz de variables latentes Z son los k resultantes de la suma k=k1+k2

La matriz definitiva de variables reducidas quedara compuesta por los k


componentes relacionados con cada columna de la matriz Z, sean los
indicados por k1 como los indicados por k2.

Por ejemplo, se agregaron los indicados como sptimo y noveno a los


primeros cinco.

Var_reducidas= [Z1(:,1:5) Z1(:,7) Z1(:,9)];

11
Anlisis Multivariante Laboratorio I Gerardo Colmenares
Y sus Aplicaciones

Finalmente, estas variables reducidas ms la variable y forman el nuevo


conjunto de datos para un modelo de estimacin. Por ejemplo, el
entrenamiento de un modelo de redes neuronales.

En efecto, el conjunto final de datos para entrenamiento sera una matriz


compuesta por estas variables reducidas y la variable Y

DatosZY = [Var_reducidas,Y];

size(DatosZY)

Revise .. el resultado

Para guardarlo como archivo tipo texto (txt)

save DatosZY ascii

Estos valores sern guardados en el rea de trabajo asignado al principio de la


sesin en un archivo texto que puede ser reutilizado por cualquier otra
aplicacin (Excel, SPSS, Minitab o el mismo MATLAB)

12

You might also like