You are on page 1of 16

Estadística Multivariada con FactoClass de R

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
Césari Matilde 1
Estadística Multivariada con FactoClass de R
Argumentos:
dfact Objeto de la clase data.frame, Con los datos de las variables activas.
Función de ade4 para análisis factorial,
dudi.pca, Análisis de Componentes Principales;
metodo 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

Césari Matilde 2
Estadística Multivariada con FactoClass de R
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 {pcdelcampon@unal.edu.co},
Campo Elías Pardo {cepardot@unal.edu.co} {http://www.docentes.unal.edu.co/cepardot},
Mauricio Sadinle {msadinleg@unal.edu.co}

Césari Matilde 3
Estadística Multivariada con FactoClass de R
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

Césari Matilde 4
Estadística Multivariada con FactoClass de R
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
ubicación de los ejes de información: "out","in","no". Por defecto infaxes ="out".
infaxes 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

Césari Matilde 5
Estadística Multivariada con FactoClass de R
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:")

Césari Matilde 6
Estadística Multivariada con FactoClass de R
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)

Césari Matilde 7
Estadística Multivariada con FactoClass de R
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

Césari Matilde 8
Estadística Multivariada con FactoClass de R
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)

Césari Matilde 9
Estadística Multivariada con FactoClass de R
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)

Césari Matilde 10
Estadística Multivariada con FactoClass de R
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()

Césari Matilde 11
Estadística Multivariada con FactoClass de R
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]
Césari Matilde 12
Estadística Multivariada con FactoClass de R
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()

Césari Matilde 13
Estadística Multivariada con FactoClass de R
#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()

Césari Matilde 14
Estadística Multivariada con FactoClass de R
# 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()

Césari Matilde 15
Estadística Multivariada con FactoClass de R

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

Césari Matilde 16

You might also like