45533006 tuto factoclass

16
Estadística Multivariada con FactoClass de R Césari Matilde 1 FactoClass de R Combinación de Métodos Factoriales y Análisis de Cluster La creación de paquetes portables facilita la labor académica cuando se utiliza R como lenguaje para la ejecución de los métodos estadísticos. Un paquete es útil aun cuando no se requiera la programación de nuevas funciones, ya que se pueden incluir tablas de datos y líneas de comandos para los talleres de un curso (Campo, 2007). Para el análisis de una tabla de datos haciendo uso de métodos multivariados, Lebart et al. (1995) presenta una estrategia que consiste en realizar primero un análisis factorial según la naturaleza de los datos y luego una 1 clasificación basada en un algoritmo mixto: clasificación jerárquica con el método de Ward y agregación alrededor de centros móviles (K-medias). Finalmente se obtiene una partición del conjunto de datos y la caracterización de cada una de las clases, según las variables activas e ilustrativas, ya sean cuantitativas o cualitativas. Para la caracterización de las clases se utilizan los valores test, que son índices descriptivos construidos siguiendo la metodología de pruebas de hipótesis, pero sin el objetivo de hacer inferencias. La ordenación de los valores test dentro de cada clase permite obtener las variables continuas que la caracterizan positivamente, en el sentido de que la media de la clase es suficientemente mayor de la media global, o negativamente cuando la media de la clase es inferior. Para las categorías de variables nominales, la ordenación permite obtener aquellas categorías cuya proporción dentro de la clase se diferencia lo suficiente de la proporción global, ya sea porque es mayor (valor test positivo) o menor (valor test negativo). La utilización de las coordenadas factoriales permite tener un marco común en el proceso de formación de conglomerados. Para el proceso de clasificación el análisis factorial previo se constituye en un pretratamiento, que transforma los datos originales en variables continuas no correlacionadas. Tomar todos los factores para la formación de conglomerados es equivalente a efectuar una clasificación de las filas de la tabla de datos utilizando las variables originales. Tomar menos factores implica realizar un filtrado: se supone que los ejes utilizados para la clasificación tienen la información relevante y que los desechados se deben a las fluctuaciones aleatorias que constituyen el ruido. El diagrama de valores propios orienta la decisión del número de ejes que se utilizan en la clasificación. Algunas veces, sobre todo en tablas pequeñas, se usan todos los ejes. (Campo, 2007). El método de Ward utiliza la distancia entre clases que cumple con el objetivo de unir, en cada paso del proceso de aglomeración, las dos clases que incrementen menos la inercia intraclases. El algoritmo K-medias para la obtención de una partición directa de un conjunto de “individuos” por variables cuantitativas requiere el número de clases por obtener y de puntos iniciales para cada una de ellas. La propuesta de Lebart et al. (1995) es utilizarlo para obtener una partición que minimice la inercia intraclases. Esto se logra localmente (depende de los puntos iniciales) usando la distancia euclidiana canónica entre los individuos y los centros móviles utilizados para la agregación. En cada paso del algoritmo se actualizan los centros móviles calculando los centros de gravedad de la partición obtenida del paso anterior. Para seleccionar las variables continuas o las categorías de las variables nominales más características de cada clase, se mide la desviación entre los valores relativos a la clase y los valores globales, utilizando los valores test. FactoClass: es la función principal del paquete, enlaza las funciones de ade4 y de stats para realizar el análisis factorial y el método de clasificación mixta. La función FactoClass, realiza un análisis factorial solicitando el número de ejes a retener para analizar, posteriormente solicita el número de ejes a retener para el método de clasificación y finalmente el número de clases según lo observado en el diagrama de índices de nivel y el dendrograma. Si scanFC=FALSE la función realiza todo el análisis usando los parámetros dados. Sintaxis del commando en R: FactoClass( dfact, metodo, dfilu = NULL , nf = 2, nfcl = 10, k.clust = 3, scanFC = TRUE , n.max = 5000 , n.clus = 1000 ,sign = 2.0, conso=TRUE , n.indi = 25 ) print.FactoClass(x, ...) analisis.clus(X,W) En el paquete de R FactoClass (Campo, 2007), se implementa la estrategia descrita en Lebart et al. (1995), que combina métodos factoriales con análisis de conglomerados, en la exploración multivariada de tablas de datos. FactoClass es una función que conecta a las funciones de ade4 (Chessel et al. 2004) para realizar el análisis factorial de los datos y de stats para el análisis de conglomerados. Funciones complementarias que, incluyendo para producir salidas en formato L ATEX1, utilizando el paquete xtable (Dahl 2006). 1 el término clasificación se utiliza como sinónimo de análisis o formación de conglomerados o clasificación no supervisada. En ningún momento hace referencia a la clasificación supervisada o discriminación

Upload: mario-viveros

Post on 15-Dec-2014

43 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 1

FactoClass de R Combinación de Métodos Factoriales y Análisis de Cluster

La creación de paquetes portables facilita la labor académica cuando se utiliza R como lenguaje para la ejecución de los métodos estadísticos. Un paquete es útil aun cuando no se requiera la programación de nuevas funciones, ya que se pueden incluir tablas de datos y líneas de comandos para los talleres de un curso (Campo, 2007).

Para el análisis de una tabla de datos haciendo uso de métodos multivariados, Lebart et al. (1995) presenta una estrategia que consiste en realizar primero un análisis factorial según la naturaleza de los datos y luego una 1clasificación basada en un algoritmo mixto: clasificación jerárquica con el método de Ward y agregación alrededor de centros móviles (K-medias). Finalmente se obtiene una partición del conjunto de datos y la caracterización de cada una de las clases, según las variables activas e ilustrativas, ya sean cuantitativas o cualitativas. Para la caracterización de las clases se utilizan los valores test, que son índices descriptivos construidos siguiendo la metodología de pruebas de hipótesis, pero sin el objetivo de hacer inferencias. La ordenación de los valores test dentro de cada clase permite obtener las variables continuas que la caracterizan positivamente, en el sentido de que la media de la clase es suficientemente mayor de la media global, o negativamente cuando la media de la clase es inferior. Para las categorías de variables nominales, la ordenación permite obtener aquellas categorías cuya proporción dentro de la clase se diferencia lo suficiente de la proporción global, ya sea porque es mayor (valor test positivo) o menor (valor test negativo).

� La utilización de las coordenadas factoriales permite tener un marco común en el proceso de formación de conglomerados. Para el proceso de clasificación el análisis factorial previo se constituye en un pretratamiento, que transforma los datos originales en variables continuas no correlacionadas. Tomar todos los factores para la formación de conglomerados es equivalente a efectuar una clasificación de las filas de la tabla de datos utilizando las variables originales. Tomar menos factores implica realizar un filtrado: se supone que los ejes utilizados para la clasificación tienen la información relevante y que los desechados se deben a las fluctuaciones aleatorias que constituyen el ruido. El diagrama de valores propios orienta la decisión del número de ejes que se utilizan en la clasificación. Algunas veces, sobre todo en tablas pequeñas, se usan todos los ejes. (Campo, 2007).

� El método de Ward utiliza la distancia entre clases que cumple con el objetivo de unir, en cada paso del proceso de aglomeración, las dos clases que incrementen menos la inercia intraclases.

� El algoritmo K-medias para la obtención de una partición directa de un conjunto de “individuos” por variables cuantitativas requiere el número de clases por obtener y de puntos iniciales para cada una de ellas. La propuesta de Lebart et al. (1995) es utilizarlo para obtener una partición que minimice la inercia intraclases. Esto se logra localmente (depende de los puntos iniciales) usando la distancia euclidiana canónica entre los individuos y los centros móviles utilizados para la agregación. En cada paso del algoritmo se actualizan los centros móviles calculando los centros de gravedad de la partición obtenida del paso anterior.

� Para seleccionar las variables continuas o las categorías de las variables nominales más características de cada clase, se mide la desviación entre los valores relativos a la clase y los valores globales, utilizando los valores test.

FactoClass: es la función principal del paquete, enlaza las funciones de ade4 y de stats para realizar el análisis factorial y el método de clasificación mixta. La función FactoClass, realiza un análisis factorial solicitando el número de ejes a retener para analizar, posteriormente solicita el número de ejes a retener para el método de clasificación y finalmente el número de clases según lo observado en el diagrama de índices de nivel y el dendrograma. Si scanFC=FALSE la función realiza todo el análisis usando los parámetros dados.

Sintaxis del commando en R: FactoClass( dfact, metodo, dfilu = NULL , nf = 2, nfcl = 10, k.clust = 3,

scanFC = TRUE , n.max = 5000 , n.clus = 1000 ,sign = 2.0,

conso=TRUE , n.indi = 25 )

print.FactoClass(x, ...)

analisis.clus(X,W)

En el paquete de R FactoClass (Campo, 2007), se implementa la estrategia descrita en Lebart et al. (1995), que combina métodos factoriales con análisis de conglomerados, en la exploración multivariada de tablas de datos. FactoClass es una función que conecta a las funciones de ade4 (Chessel et al. 2004) para realizar el análisis factorial de los datos y de stats para el análisis de conglomerados. Funciones complementarias que, incluyendo para producir salidas en formato L ATEX1, utilizando el paquete xtable (Dahl 2006).

1 el término clasificación se utiliza como sinónimo de análisis o formación de conglomerados o clasificación no supervisada. En ningún momento hace referencia a la clasificación supervisada o discriminación

Page 2: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 2

Argumentos: dfact Objeto de la clase data.frame, Con los datos de las variables activas.

metodo

Función de ade4 para análisis factorial, dudi.pca, Análisis de Componentes Principales; dudi.coa, Análisis de Correspondencias; dudi.acm, Análisis de Correspondencias Múltiples witwit.coa, Análisis de la correspondencia interna;...

dfilu Variables ilustrativas (por defecto NULL). nf Número de ejes a utilizar en el análisis factorial (por defecto 2). nfcl Número de ejes a utilizar en la clasificación (por defecto 10). k.clust Número de clases para trabajar (por defecto 3). scanFC Si es cierto, pide en la consola los valores nf, nfcl y k.clust n.max si rowname(dfact)> = n.max, antes realiza k-means (por defecto 5000) n.clus si rowname(dfact)> = n.max, antes realiza k-means con n.clus grupos (por defecto 1000) sign Valor umbral de prueba para demostrar las características y modalidades de las variables. conso proceso de consolidación de la clasificación (por defecto TRUE) n.indi Número de los índices para dibujar en el histograma (por defecto 25). x objeto de la clase FactoClass X coordenadas de los elementos de una clase W ponderaciones de los elementos de una clase

...

FactoClass utiliza el paquete estadístico ade4 (Chessel et al. 2004) para realizar el análisis factorial de los datos. Estas funciones retornan un objeto de tipo dudi con los valores y vectores propios y las coordenadas factoriales de las filas y columnas. Las demás ayudas a la interpretación se obtienen con la función inertia.dudi.

Las funciones dudi de ade4 reciben los datos en un objeto data.frame y utlizan todas las columnas como activas. El paquete ade4 tiene varias funciones para obtener los planos factoriales; si embargo en FactoClass se incluye la función planfac que recibe un objeto dudi y produce un plano factorial similar a los del paquete ade4.

La función ward.cluster transforma la distancia euclidiana en distancia de Ward y llama la función hclust del paquete básico stats. En ward.cluster se incluye una gráfica de los índices de nivel para facilitar la decisión de cuántas clases seleccionar para la partición.

La función kmeans de stats no maneja pesos distintos para las filas. Estos pesos influyen en los centros de gravedad y en las inercias intra de las clases. Se modificó (Campo, 2007) esta función para incluir los pesos de las filas y obtener las inercias intra clases; se nombra kmeansW. En su opción por defecto la función kmeans utiliza el algoritmo de Hartigan & Wong (1979).

Para la caracterización de las clases, se incluye la función cluster.carac, donde se calculan los valores test y se retorna un objeto list con información similar a la que se obtiene en los programas SPAD (Lebart et al. 1999) y DTM (Lebart 2007).

La función analisis.clus calcula las características geométricas de cada clase: el tamaño, la inercia, el peso y el cuadrado de la distancia de origen.

Para impresión en formato de látex ver FactoClass.tex ()

Para dibujar planos factorial ver con el grupo plotFactoClass (), recibe un objeto de tipo FactoClass y produce el plano factorial solicitado.

Objeto de la clase FactoClass: dudi objeto de la clase dudi de ade4 con las especificaciones del análisis factorial nfcl número de ejes seleccionados para la clasificación k número de clases indices tabla de los índices obtenidos mediante el método de WARD cor.clus coordenadas de los grupos clus.summ resumen de los grupos cluster vector que indica el grupo de cada uno de los elementos carac.cate caracterización del grupo por variables cualitativas carac.cont caracterización del grupo por las variables cuantitativas carac.frec caracterización del grupo por las variables frecuencia activa

Page 3: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 3

Funciones y su descripción del paquete FactoClass (Campo, 2007).

Ejemplos [Package FactoClass version 0.7.1

# El análisis de clusters con el Análisis de Correspondencias data(ColorAdjetive)

FC.col <-FactoClass(ColorAdjetive, dudi.coa)

6

10

5

FC.col

FC.col$dudi

# El análisis de clusters con el Análisis de Correspondencias Múltiples

data(BreedsDogs)

BD.act <- BreedsDogs[-7] # active variables

BD.ilu <- BreedsDogs[7] # ilustrative variables

FC.bd <-FactoClass( BD.act, dudi.acm, k.clust = 4,scanFC = FALSE, dfilu = BD.ilu, nfcl = 10)

FC.bd

FC.bd$clus.summ

FC.bd$indices

Autores

Pedro Cesar del Campo {[email protected]},

Campo Elías Pardo {[email protected]} {http://www.docentes.unal.edu.co/cepardot},

Mauricio Sadinle {[email protected]}

Page 4: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 4

Fac.Num {FactoClass} División de las variables cualitativas y cuantitativas.

Descripción

Un objeto de la clase data.frame se divide en una lista con dos tablas, una con variables cuantitativas y el otro con variables cualitativas.

Sintaxis del commando en R: Fac.Num(tabla)

Arguments

tabla object of class 'data.frame'

Devuelve una lista con uno o dos objetos de la clase data.frame con las siguientes características:

factor tabla con variables cualitativas

numeric tabla con las variables cuantitativas

Ejemplos [Package FactoClass version 0.7.1 data(BreedsDogs)

Fac.Num(BreedsDogs)

data(iris)

Fac.Num(iris)

cluster.carac {FactoClass} Caracterización de Cluster por variables.

Descripción

cluster.carac es una función que realiza la caracterización de las clases según variables.

Realiza la caracterización de las clases o grupos teniendo en cuenta las variables en la tabla. Estas variables pueden ser cuantitativos, cualitativos o frecuencias. La función cluster.carac permite ver qué variables caracterizan a cada una de las clases teniendo en cuenta los valores test.

Sintaxis del commando en R: cluster.carac( tabla , clase , tipo.v="d" , v.lim = 2 )

Argumentos:

tabla data.frame con objeto de caracterización de las variables, las variables deben ser de un solo tipo (cuantitativos, cualitativos o frecuencias)

clase vector que determina la partición de la tabla tipo.v tipo de variables: cuantitativa continuas (“co"), cualitativo nominales (“ca") o frecuencias (“fr") v.lim prueba para demostrar el valor de la variable o categoría, como característica.

Para variables de frecuencia o nominal se compara el porcentaje de las categorías en cada clase con el porcentaje global. Para las variables continuas se compara la media en cada clase con la media general. Categorías y variables se ordenan en cada clase por los valores y se muestra sólo aquellos que pasan el umbral v.lim.

Ejemplos [Package FactoClass version 0.7.1 data(BreedsDogs)

BD.act <- BreedsDogs[-7] # active variables

BD.function <- subset(BreedsDogs,select=7)

cluster.carac(BD.act,BD.function,"ca",2.0) # nominal variables

attach(BreedsDogs)

weig<-table(FUNc,WEIG)

weig<-data.frame(weig[,1],weig[,2],weig[,3])

cluster.carac(weig, row.names(weig), "fr", 2) # frequency variables

detach(BreedsDogs)

data(iris)

iris.act <- Fac.Num(iris)$numeric

clase <- Fac.Num(iris)$factor

cluster.carac(iris.act,clase,"co",2.0) # continuous variables

Page 5: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 5

plotFactoClass {FactoClass} Plano factorial mostrando las clases.

Descripción

plot.FactoClass es una función que genera el gráfico del plano factorial deseado, mostrando los centros generados por las de las clases.

Sintaxis del commando en R: plotFactoClass(

FC , xax=1, yax=2, rotx=FALSE, roty=FALSE,

roweti=subset(FC$dudi$li,select=c(xax,yax)),

coleti=subset(FC$dudi$co,select=c(xax,yax)),

titre=NULL, axislabel=TRUE, col.row=1:FC$k,col.col="grey55",

cex=0.8, cex.row=0.8, cex.col=0.8, cex.clu=cex.row,

all.point=TRUE, Trow=TRUE, Tcol=TRUE, Tclu=TRUE,

nclus=paste("clase ", 1:FC$k, sep=""),

cframe=1.2, ucal=0,cex.global=1, infaxes="out"

)

Argumentos: FC es un objeto tipo FactoClass generado por la función FactoClass. xax número de factor para el eje horizontal. Predeterminado xax=1 yax número de factor para el eje vertical.. Predeterminado yax=2 rotx TRUE si quieres cambiar el signo de las coordenadas horizontales. Defntales. (por defecto FALSE). roty TRUE si quieres cambiar el signo de las coordenadas verticales. Defaules. (por defecto FALSE). roweti selección de puntos fila para la gráfica. Por defecto todos los puntos. coleti selección de puntos columna para la gráfica. Por defecto todos los puntos. titre título del gráfico. axislabel si es TRUE se escribe la información de los ejes. col.row color de los puntos fila y etiquetas de fila. Por defecto: 1:FC$k. col.col color de los puntos columnas y etiquetas de columnas. Por defecto "grey55". cex escala mundial para las etiquetas. Predeterminado cex=0.8. cex.row Escala de puntos de fila y etiquetas de fila. Predeterminado cex.row=0.8. cex.col Escala de puntos de la columna y las etiquetas de columna. Predeterminado cex.col=0.8. cex.clu escala de puntos para el grupo y el grupo de etiquetas. (por defecto cex.row). all.point si es TRUE, todos los puntos se muestran. Predeterminado all.point=TRUE. Trow si es TRUE los puntos fila se muestran. Predeterminado TRUE. Tcol si es TRUE los puntos columna se muestran. Predeterminado TRUE. Tclu si es TRUE los puntos cluster se muestran. Predeterminado TRUE. nclus etiquetas de los grupos (por defecto clase1, clase2, ... ,clasek. cframe escalas para límite los gráficos ucal Umbral de la calidad de la representación en el plano. Predeterminado ucal=0 cex.global escala para el tamaño de la etiqueta

infaxes

ubicación de los ejes de información: "out","in","no". Por defecto infaxes ="out". Si infaxes="out" el gráfico es similar a los de FactoMineR, sino es al estilo del paquete ade4, sin información de ejes cuando infaxes ="no"

Se basa en el plano factorial con el grupo. Sólo para ver objetos FactoClass) (FactoClass.sutil.grid es utilizado por plot.FactoClass. Se basa en el plano factorial xax, yax usa $co, $li objetos de la clase “FactoClass”. Si ucal> 0, la función inertia.dudi se utiliza para calcular la calidad de la representación en el plano.

Ejemplos [Package FactoClass version 0.7.1 data(Bogota)

Bog.act <- Bogota[-1]

Bog.ilu <- Bogota[ 1]

FC.Bogota<-FactoClass(Bog.act, dudi.coa,Bog.ilu,nf=2,nfcl=5,k.clust=5,scanFC=FALSE)

plotFactoClass(FC.Bogota,titre="Primer plano factorial del ACS de la TC de manzanas de

Bogotá",ucal=50,col.row=c("maroon2","orchid4","darkgoldenrod2","dark red","aquamarine4"))

supcol.coa(FC.Bogota$dudi, Bog.ilu)$cosup

Page 6: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 6

FactoClass.tex {FactoClass} Tabla de coordenadas, las ayudas de la interpretación de los principales ejes de análisis de

conglomerados y en formato de LaTeX.

Descripción

FactoClass.tex es una función que genera tablas de interés para la interpretación del análisis, en formato

L ATEX. Estas tablas son visibles tanto en la consola como en un archivo .tex, que el programa genera.

La función entrega tablas de valores propios, vectores propios, coordenadas, contribuciones y cosenos cuadrados tanto de las filas como de las columnas; tabla de índices de nivel generada por el proceso de clasificación jerárquico de Ward, coordenadas de los centros generados por las clases, descripción de las clases y caracterización de las variables en la clasificación.

Sintaxis del commando en R: FactoClass.tex(FC,job="",append=TRUE, dir = getwd(), p.clust= FALSE ) print.FactoClass.tex(x, ...)

latexDF(obj,job="latex",tit="",lab="",append=TRUE,dec=1,dir=getwd(),to.print=TRUE)

roundDF(tabla,dec=1)

Argumentos: FC FC es un objeto tipo FactoClass generado por la función FactoClass. job Un nombre para identificar la salida. append Si es 'TRUE' la salida en formato de Latex se añade al archivo. dir Nombre del directorio en el que mantiene el archivo. p.clust el valor de este parámetro es 'TRUE' o 'FALSE' para imprimir o no el grupo de cada uno de los elementos. tabla Objeto de la clase 'data frame'. dec número de decimales. x Objeto de la clase FactoClass.tex. obj Objeto de la clase data.frame. tit título de la tabla en formato LaTeX. lab etiqueta de la tabla en formato LaTeX. to.print Si es 'TRUE' la tabla también se imprime en la consola.

...

Esta función ayuda a la construcción de cuadros en formato de látex. Además, permite una fácil lectura de los resultados generados por FactoClass (). La función latexDF es una entrada a xtable y convierte un objeto de clase data.frame a una tabla en formato LaTeX.

Objeto de la clase FactoClass: tvalp eigenvalues * 1000. c1 eigenvectors. co coordenadas de las columnas. col.abs contribución de cada columna a la inercia del eje (porcentaje) col.rel calidad de la representación de cada columna (porcentajes). col.cum calidad de la representación de cada columna acumulado en el subespacio (porcentaje). li coordenadas de las filas. row.abs contribución de cada fila a la inercia del eje (porcentaje) col.rel calidad de la representación de cada fila (porcentajes). col.cum calidad de la representación de cada fila acumulado en el subespacio (porcentaje). indices tabla de índices de nivel generados por el análisis de agrupamiento jerárquico en el proceso de Ward. cor.clus coordinates of the center of gravity of each cluster. clus.summ resumen de la agrupación. carac.cate caracterización de cluster por variables cualitativas. carac.cont caracterización de cluster por variables cuantitativas. cluster vector que indica el grupo de cada elemento

Ejemplos [Package FactoClass version 0.7.1

# MCA data(BreedsDogs)

BD.act <- BreedsDogs[-7] # active variables

BD.ilu <- BreedsDogs[7] # illustrative variables

FaCl <- FactoClass( BD.act, dudi.acm,

scanFC = FALSE, dfilu = BD.ilu, nfcl = 10, k.clust = 4 )

FactoClass.tex(FaCl,job="BreedsDogs", append=TRUE)

FactoClass.tex(FaCl,job="BreedsDogs", append=TRUE , p.clust = TRUE ,dir="c:")

Page 7: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 7

supcol {ade4} R Documentation Proyecciones de Columnas Suplementarias

Descripción

Realiza proyecciones de columnas suplementarias

Sintaxis del comando en R: supcol(x, ...)

supcol(x, Xsup, ...) ## Método por defecto S3. supcol(x, Xsup, ...) ## S3 Método de la clase 'coa'

Argumentos:

x un objeto usado para seleccionar un método (por ejemplo un objeto de la clase dudi) Xsup arreglo con las columnas suplementarias (Xsup y x$tab deben tener mismo número de filas) ... futuros argumentos pasados pasados de otros métodos

Si supcol.default es utilizado , los vectores de la columna de Xsup son proyectado sin modificación previa sobre los componentes principales de dudi con el producto scalar asociado para los pesos de la fila de dudi.

Devuelve una lista de dos componentes: $tabsup {data frame contine el arreglo con las columnas suplementarias transformadas o no} $cosup {data frame contiene las coordenadas de las proyecciones suplementarias}

Ejemplos

data(rpjdl)

rpjdl.coa <- dudi.coa(rpjdl$fau, scan = FALSE, nf = 4)

rpjdl.coa$co[1:3,]

supcol (rpjdl.coa,rpjdl$fau[,1:3])$cosup # the same

data(doubs)

dudi1 <- dudi.pca(doubs$poi, scal = FALSE, scan = FALSE)

s.arrow(dudi1$co)

s.arrow(supcol.default(dudi1,data.frame(scalewt(doubs$mil)))$cosup,

add.p = TRUE, clab = 2)

symbols(0, 0, circles = 1, inches = FALSE, add = TRUE)

Page 8: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 8

suprow {ade4} R Documentation Proyección de filas suplementarias

Descripción

Realiza proyecciones de filas suplementarias.

Sintaxis del commando en R:

suprow(x, Xsup, ...) ## S3 método para la clase 'coa' suprow(x, Xsup, ...) ## Método por defecto suprow(x, Xsup, ...) ## S3 método para la clase 'pca'

Argumentos:

x objeto de la clase dudi Xsup arreglo con las filas suplementarias (Xsup y x$tab deben tener el mismo número de columnas) ... further arguments passed to or from other methods

Si suprow.default es usado, Xsup son proyectado sin modificación previa sobre los componentes principales de dudi con el producto scalar asociado para los pesos de la columna de dudi.

Devuelve un data frame conteniendo las coordenadas de las proyecciones suplementarias.

Ejemplos

data(euro123)

par(mfrow = c(2,2))

w <- euro123[[2]]

dudi1 <- dudi.pca(w, scal = FALSE, scan = FALSE)

s.arrow(dudi1$c1, sub = "Classical", possub = "bottomright", csub = 2.5)

s.label(suprow(dudi1,w), add.plot = TRUE, clab = 0.75)

s.arrow(dudi1$c1,

sub = "Without centring", possub = "bottomright", csub = 2.5)

s.label(suprow.default(dudi1,w), clab = 0.75, add.plot = TRUE)

triangle.plot(w, clab = 0.75, label = row.names(w), scal = FALSE)

triangle.plot(w, clab = 0.75, label = row.names(w), scal = TRUE)

data(rpjdl)

rpjdl.coa <- dudi.coa(rpjdl$fau, scann = FALSE, nf = 4)

rpjdl.coa$li[1:3,]

suprow(rpjdl.coa,rpjdl$fau[1:3,])$lisup # the same

data(deug)

deug.dudi <- dudi.pca(df = deug$tab, center = deug$cent,

scale = FALSE, scannf = FALSE)

suprow(deug.dudi, deug$tab[1:3,])$lisup # the supplementary individuals are centered

deug.dudi$li[1:3,] # the same

Page 9: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 9

Ejemplos completos

AFCS - Correspondencias simples

Ejemplo: descripción de los colores según adjetivos que connotan

Importar los datos a R desde Excel. > library(xlsReadWrite)

> AdjColor <- read.xls( "adjetivo-color.xls" ,colNames = TRUE, sheet = 1,

type = "data.frame", from = 1, rowNames = TRUE, colClasses = NA,

checkNames = TRUE,dateTimeAs = "numeric",stringsAsFactors =

default.stringsAsFactors() )

Con el parámetro rowNames en TRUE, indicamos que la primer columna corresponde a las etiquetas que identifican a los individuos. Si la tabla no tiene identificado las filas, se coloca rowNames = “NA”.

> AdjColor #Muestro la hoja de datos

Realizar el análisis factorial con FactoClass. > library(ade4)

> library(xtable)

> library(FactoClass)

> FC.col <-FactoClass(AdjColor, dudi.coa) #Análisis Correspondencias de tabla de contingencia 5 5 6

> FC.col <-FactoClass(AdjColor, dudi.coa, nf=5, nfcl=5, k.clust=6, scanFC=FALSE,

n.max=5000 , n.clus=1000 ,sign=2.0,conso=TRUE , n.indi=25)

Mostrar en pantalla los resultados > FC.col

> FC.col$dudi

> FC.col$dudi$co #Coordenadas puntos columnas

> FC.col$dudi$li #Coordenadas puntos fila

> FC.col$co #Coordenadas centros de clase > FC.col$carac.frec #Caracterización de las clases por frecuencias activas > plotFactoClass(FC.col,titre="Plano factorial ACS",ucal=50,

col.row= "dark red", col.col= "orchid4", axislabel = T)

Resultados en fichero de texto > sink("resultadosAFCS.txt") #La salida es un archivo de texto > FC.col > FC.col$dudi$co #Coordenadas puntos columnas > FC.col$dudi$li #Coordenadas puntos fila > FC.col$cor.clus #Coordenadas centros de clase > FC.col$carac.frec #Caracterización de las clases por frecuencias activas > FC.col$cluster #Individuos de la clase > sink() #La salida vulva a ser la pantalla Resultados en formato Latex > FactoClass.tex(FC.col,job="AdjColor", append=TRUE , p.clust = TRUE)

Page 10: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 10

AFCM - Correspondencias Múltiples

Ejemplo: características de las razas de perros y su función

Importar los datos a R desde Excel. > library(xlsReadWrite)

> RazaPerro <- read.xls( "RAZAS PERROS.xls" ,colNames=TRUE, sheet=1,

type="data.frame", from = 1, rowNames=TRUE, colClasses=NA,

checkNames=TRUE, dateTimeAs="numeric",stringsAsFactors =

default.stringsAsFactors() )

Separar variables activas y variables ilustrativas. > RazaPerro

> perroAct <- RazaPerro[-7] #Todas las características de la raza

> perroIlu <- RazaPerro[7] #Función del perro

Realizar Análisis Factorial de Correspondencia Múltiples. > library(ade4)

> library(xtable)

> library(FactoClass)

> AFCM <- FactoClass( perroAct, dudi.acm, perroIlu)

> 10 #ejes para el factorial

> 3 #ejes para la lasificacion

> 4 #particion de 4 grupos

> AFCM <- FactoClass( perroAct, dudi.acm, perroIlu, nf=10, nfcl=3, k.clust=4,

scanFC=FALSE, n.max=5000, n.clus=1000, sign=1.7,conso=TRUE ,

n.indi=25)

> s.label(AFCM$dudi$co) #plano con puntos columna

> s.label(AFCM$dudi$li, clab=1) #plano con puntos fila

> s.label(AFCM$dudi$co)

> s.label(AFCM$dudi$li, add.p=T,clab=1) # plano con puntos columna y fila

> plotFactoClass(AFCM,titre="Plano factorial AFCM",ucal=50,

col.row="dark red", col.col="orchid4", axislabel=T)

#Graficos especilales con las modalidades suplementarias > coul = rainbow(length(levels(RazaPerro[,7])))

> par(mfrow = c(2,2))

> s.label(AFCM$dudi$li, sub = "CORRESPONDENCIAS MULTIPLES AFCM", csub = 1.5,

possub = "topleft")

> s.class(AFCM$dudi$li,RazaPerro[,7],sub = names(RazaPerro)[7],

possub = "bottomright", cell = 0, cstar = 0.5, cgrid = 0, csub = 1.5)

> s.class(AFCM$dudi$li,RazaPerro[,7],csta = 0, cell = 2, cgrid = 0,

clab = 1.5)

> s.class(AFCM$dudi$li,RazaPerro[,7],sub = names(RazaPerro)[7],

possub = "topright", cgrid = 0, col = coul)

Resultados en fichero de texto > sink("resultadosAFCM.txt") #todos los resultados en un fichero

> AFCM

> AFCM$dudi

> AFCM$dudi$co

> AFCM$dudi$li

> AFCM$c

> AFCM$carac.cate

> cluster.carac(perroAct,perroIlu,"ca",1.7) #Caracterización de la Función

> sink() #todos los resultados otra vez por pantalla

Resultados en formato Latex > FactoClass.tex(AFCM,job="RazaPerro", append=TRUE , p.clust = TRUE)

Page 11: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 11

ACP – Componentes Principales

Ejemplo: clasificación y descripción de vinos Importar los datos a R desde Excel.

> library(xlsReadWrite)

> Vino <- read.xls( "Vinos.xls" ,colNames=TRUE, sheet=1, type="data.frame",

from = 1, rowNames=FALSE, colClasses=NA, checkNames=TRUE,

dateTimeAs="numeric",stringsAsFactors =

default.stringsAsFactors() )

Separar variables continuas y variables nominales. > library(FactoClass)

> ActVino <- Fac.Num(Vino)$numeric #Variables continuas , todas activas

> IluVino <- Fac.Num(Vino)$factor #la única variable nominal ilustrativa: tipo de vino

Realizar DEMOD del tipo de vino > sink("ClasesVino.txt")

> cluster.carac(ActVino,IluVino,"co",1.7) #Caracterización del tipo de Vino

> sink()

Realizar Análisis Factorial > ACP <- FactoClass( ActVino, dudi.pca, IluVino) #Pide número de factores y cluster > 5

> 5

> 3

> ACP <- FactoClass( ActVino, dudi.pca, IluVino, nf=5, nfcl=5, k.clust=3,

scanFC=FALSE, n.max=5000, n.clus=1000, sign=1.7,conso=TRUE ,

n.indi=25)

> s.arrow(ACP$dudi$co) #Plano de las variables – sólo vectores

> scatter(ACP$dudi) #Biplot indiiduos y variables > plotFactoClass(ACP,titre="Plano factorial ACP",ucal=50,

col.row="dark red", col.col="orchid4", axislabel=T)

#Graficos especilales con las modalidades suplementarias > coul = rainbow(length(levels(Vino[,14]))) # variables suplementaria nominal

> par(mfrow = c(2,2))

> s.label(ACP$dudi$li, sub = "ACP", csub = 1.5,

possub = "topleft")

> s.class(ACP$dudi$li, Vino[,14],sub = names(Vino)[14],

possub = "bottomright", cell = 0, cstar = 0.5, cgrid = 0, csub = 1.5)

> s.class(ACP$dudi$li, Vino[,14],csta = 0, cell = 2, cgrid = 0,

clab = 1.5)

> s.class(ACP$dudi$li, Vino[,14],sub = names(Vino)[14],

possub = "topright", cgrid = 0, col = coul)

Resultados en fichero de texto > sink("resultadosACP.txt")

> ACP

> ACP$dudi

> ACP$dudi$co

> ACP$dudi$li

> ACP$c

> ACP$carac.cont

> sink()

Resultados en formato Latex

> FactoClass.tex(ACP,job="Vinos", append=TRUE , p.clust = TRUE)

Realizar matriz de correlaciones > sink("Correlación.txt")

> cat("\n Matriz de correlaciones \n") # cat titula el objeto que se imprime luego con print > print(cor(ActVino),2) # matriz de correlaciones y matriz de graficas de dispersión > sink()

Page 12: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 12

Realizar Estadísticas > sink("Estadísitcas.txt")

> cat("\n Estadísticas básicas \n")

> print(summary(ActVino)) # impresión de estadísticas básica y boxplot > cat("\n Desviaciones estándar \n")

> print(apply(ActVino,2,sd))

> par(ask=TRUE) # para pausa antes de la grafica

> boxplot(ActVino,cex.axis=0.75) # cex.axis modifica tamaño etiqueta ejes

> sink()

DEMOD – Descripción de modalidades

Ejemplo: Caracterización y validación de la contaminación por factores ambientales, sociodemográficos Importar los datos a R desde Excel.

> library(xlsReadWrite)

> contaminacion <- read.xls( "Contaminación discretizada.xls",

colNames=TRUE,

sheet="completa", # ingreso nombre de hoja

type="data.frame",

from = 1,

rowNames=TRUE,

colClasses=NA,

checkNames=TRUE,

stringsAsFactors = default.stringsAsFactors() )

Separar variables continuas y variables nominales. > library(FactoClass)

> NumConta <- Fac.Num(contaminacion)$numeric # variables continuas descriptivas

> NomiConta <- Fac.Num(contaminacion)$factor # variables nominales

Seleccionar la variable de clase y las variables nominales descriptivas > VDescNom <- NomiConta[-20] # variables nominales descriptivas

> VClase <- NomiConta[20] # variables nominal a describir

Resultados en fichero de texto > sink("Caracterizacion.txt")

> cluster.carac(NumConta,VClase,"co",1.96)

> cluster.carac(VDescNom,VClase,"ca",1.96)

> sink()

Más ejemplos

Contaminación – AFCM y ACP

# Importar los datos a R desde Excel. library(xlsReadWrite)

contaminacion <- read.xls( "Contaminación discretizada.xls",

colNames=TRUE,

sheet="completa",

type="data.frame",

from = 1,

rowNames=TRUE,

colClasses=NA,

checkNames=TRUE,

stringsAsFactors = default.stringsAsFactors() )

# Separar variables continuas y variables nominales. library(FactoClass)

NumConta <- Fac.Num(contaminacion)$numeric # variables continuas NomiConta <- Fac.Num(contaminacion)$factor # variables nominales

# Separar variables activas para el ACP y AFCM. VContAct <- NumConta[1:11]

Page 13: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 13

VContIlu <- NumConta[12:19]

VNomiAct <- NomiConta[1:11]

VNomiIlu <- NomiConta[12:19]

#Realizar Análisis Componentes Principales ACP <- FactoClass(VContAct, dudi.pca)

2

2

4

ACP1 <- FactoClass(VContAct, dudi.pca, VContIlu, nf=2, nfcl=2, k.clust=4,scanFC=FALSE,

n.max=5000, n.clus=1000, sign=1.7,conso=TRUE , n.indi=25)

plotFactoClass(ACP1,titre="Plano factorial ACP",ucal=50,

col.row="dark red", col.col="orchid4", axislabel=T)

# Continuas ilustrativas s.arrow(ACP$dudi$co,sub = "ACP-activas", csub = 1.5,possub = "topleft")

s.arrow(supcol(ACP$dudi,VContIlu)$cosup, sub = "ACP-adicionales", csub = 1.5, possub = "topleft", add.plot=T)

# Nominal Contaminación ilustrativa par(mfrow = c(2,2))

s.arrow(ACP$dudi$co,sub = "ACP", csub = 1.5,possub = "topleft")

s.class(ACP$dudi$li, NomiConta[,20],possub = "bottomright", cell = 0,

cstar = 0.5, cgrid = 0, csub = 1.5)

s.class(ACP$dudi$li, NomiConta[,20],csta = 0, cell = 2, cgrid = 0,clab = 1.5)

coul = rainbow(length(levels(NomiConta[,20])))

s.class(ACP$dudi$li, NomiConta[,20],possub = "topright", cgrid = 0, col = coul)

# Resultados en fichero de texto sink("resultadosACP1.txt")

ACP1$dudi$li # row coordinates ACP1$dudi$l1 # row normed scores ACP1$dudi$co # column coordinates ACP1$dudi$c1 # column normed scores ACP1$c

ACP1$indices # level indices for Hierarchical Clustering (WARD) ACP1$cor.clus # centroid cluster coordinates ACP1$clus.summ # partition changes due to consolidation process

ACP1$cluster # a vector indicating the cluster to which each point is allocated ACP1$carac.cont # cluster characterization by quantitative variables sink()

sink("CoordenadasACP.txt")

ACP$dudi$li # row coordinates

ACP$dudi$l1 # row normed scores

ACP$dudi$co # column coordinates

ACP$dudi$c1 # column normed scores

supcol(ACP$dudi,VContIlu)$cosup # coordenadas variables adicionales suplementa

sink()

# Correlación y estadísticas básicas

sink("Correlación.txt")

cat("\n Matriz de correlaciones \n")

print(cor(VContAct),2)

sink()

sink("Estadísitcas.txt")

cat("\n Estadísticas básicas \n")

print(summary(NumConta))

cat("\n Desviaciones estándar \n")

print(apply(NumConta,2,sd))

par(ask=TRUE)

boxplot(NumConta,cex.axis=0.75)

sink()

Page 14: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 14

#Realizar Análisis Correspondencias AFCM <- FactoClass(VNomiAct, dudi.acm, VNomiIlu)

5

5

6

AFCM <- FactoClass(VNomiAct, dudi.acm, VNomiIlu, nf=5, nfcl=5, k.clust=6,

scanFC=FALSE, n.max=5000, n.clus=1000, sign=1.7,conso=TRUE ,

n.indi=25)

plotFactoClass(AFCM,titre="Plano factorial AFCM",ucal=50,

col.row="dark red", col.col="orchid4", axislabel=T)

# Resultados en fichero de texto sink("resultadosAFCM.txt")

AFCM$dudi$li #row coordinates

AFCM$dudi$l1 #row normed scores

AFCM$dudi$co #column coordinates

AFCM$dudi$c1 #column normed scores

AFCM$indices #level indices for Hierarchical Clustering (WARD)

AFCM$cor.clus #centroid cluster coordinates

AFCM$clus.summ #partition changes due to consolidation process

AFCM$cluster #a vector indicating the cluster to which each point is allocated

AFCM$carac.cate

sink()

sink("CoordenadasAFCM.txt")

AFCM$dudi$li # row coordinates

AFCM$dudi$l1 # row normed scores

AFCM$dudi$co # column coordinates

AFCM$dudi$c1 # column normed scores

sink()

Consumo de Petróleo en el tiempo - ACP

# Importar los datos a R desde Excel. library(xlsReadWrite)

petroleo <- read.xls( "statistical2007.xls",

colNames=TRUE,

sheet="consumo petróleo",

type="data.frame",

from = 1,

rowNames=TRUE,

colClasses=NA,

checkNames=TRUE,

stringsAsFactors = default.stringsAsFactors() )

#Realizar Análisis Factorial library(FactoClass)

ACP <- FactoClass(petroleo, dudi.pca)

2

3

4

plotFactoClass(ACP,titre="Plano factorial ACP",ucal=50,

col.row="dark red", col.col="orchid4", axislabel=T)

# Resultados en fichero de texto sink("resultadosACP.txt")

ACP$dudi$tab # modified array

ACP$dudi$li # row coordinates

ACP$dudi$l1 # row normed scores

ACP$dudi$co # column coordinates

ACP$dudi$c1 # column normed scores

ACP$indices # level indices for Hierarchical Clustering (WARD)

ACP$cor.clus # centroid cluster coordinates

ACP$clus.summ # partition changes due to consolidation process

ACP$cluster # a vector indicating the cluster to which each point is allocated

ACP$carac.cont # cluster characterization by quantitative variables

sink()

Page 15: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 15

# Correlación y estadísticas básicas sink("Correlación.txt")

cat("\n Matriz de correlaciones \n")

print(cor(petroleo),2)

sink()

sink("Estadísitcas.txt")

cat("\n Estadísticas básicas \n")

print(summary(petroleo))

cat("\n Desviaciones estándar \n")

print(apply(petroleo,2,sd))

par(ask=TRUE)

boxplot(petroleo,cex.axis=0.75)

sink()

sink("Coordenadas.txt")

ACP$dudi$li # row coordinates

ACP$dudi$l1 # row normed scores

ACP$dudi$co # column coordinates

ACP$dudi$c1 # column normed scores

sink()

Page 16: 45533006 Tuto FactoClass

Estadística Multivariada con FactoClass de R

Césari Matilde 16

Referencias

El paquete FactoClass se instala en R (versión 2.4.1 en adelante) a partir del zip disponible en la página: http://www.docentes.unal.edu.co/cepardot/docs/

� Chessel, D., Dufour, A. B. & Thioulouse, J. (2004), ‘The ade4 Package - I: One table Methods’, R News 4(1), 5–10.

� Correa, J. C. & González, N. (2002), Gráficos estadísticos con R, Universidad Nacional de Colombia Sede Medellín. Facultad de Ciencias Departamento de Matemáticas. Postgrado en Estadística. http://cran.r-project.org/doc/contrib/grafi3.pdf

� Dahl, D. B. (2006), xtable: Export Tables to LaTeX or HTML. David B. Dahl with contributions from many others. R package version 1.4-2

� Diaz, R. (2003), Introducción al uso y programación del sistema estadístico R, Unidad de Bioinformática. Centro Nacional de Investigaciones Oncológicas (CNIO). http://cran.r-project.org/doc/contrib/curso-R.Diaz-Uriarte.pdf

� Gower, J. C. (1967) Multivariate analysis and multivariate geometry. The statistician, 17, 13–28.

� Lebart, L. (2007), ‘DTM. Data and Text Mining’, Software. http://ses.enst.fr/lebart/

� Lebart, L., Morineau, A. & Piron, M. (1995), Statisitique exploratoire multidimensionnelle, Dunod, Paris.

� Lebart, L., Morineau, A., Lambert, T. & Pleuvret, P. (1999), SPAD. Système Pour l’Analyse des Donèes, Paris. *http://www.spad.eu

� Pardo, Campo Elías (1992), Análisis de la aplicación del método de Ward de clasificación jerárquica en el caso de variables cualitativas, Tesis de Maestría, Estadística, Universidad Nacional de Colombia, Facultad de Ciencias, Departamento de Matemáticas y Estadística, Bogotá.

� Pardo, Campo Elías y Del Campo, Pedro César (2007), Combinación de métodos factoriales y de análisis de conglomerados en R: el paquete FactoClass, Revista Colombiana de Estadística Volumen 30 No. 2. pp. 231 a 245. Diciembre 2007.

� R Development Core Team (2007a), R: A Language and Environment for Statistical Computing, R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0. http://www.R-project.org