Pagina Principal

Ejemplos de cuatro funciones básicas en R


Cargando el archivo comprimido [carpeta: "ADT_R"] de datos y códigos fuente


Los códigos de estas cuatro funciones y sus contextos de uso son ejemplos pedagógicos del libro Analyse des Données Textuelles [Análisis de datos textuales] (L. Lebart, B. Pincemin, C. Poudat), Presses de l'Université du Québec [en francés], 2019.


El software R es tanto un lenguaje como una biblioteca. Al igual que Python, es un software gratuito y multiplataforma. Es el componente no exclusivo del lenguaje de programación S (Chambers, 1998), derivado del trabajo de un equipo de Bell Laboratories de 1976 (equipo compuesto por Rick Becker, John Chambers, Doug Dunn, Paul Tukey y Graham Wilkinson).


1- Compresión y reconstrucción de imágenes (con visualización gráfica)

2- Análisis de componentes principales (con visualización gráfica)

3- Análisis de correspondencias (con visualización gráfica).

4- Cálculo y trazado (en un plano principal) del árbol de expansión mínimo (longitud minima)


Top

1- Compresión y reconstrucción de imágenes (con visualización gráfica)

Es simplemente penetrar, gracias a R, en la caja negra de una funcionalidad común disponible en la mayoría de los programas estadísticos de análisis de imágenes.

Obviamente, el código podría ser mucho más compacto, pero quizás menos legible.

Comandos para la interfaz R

#-------------------------------------
source("c:\\ADT_R\\svd_image_E.r")  # codigo fuente
path= "c:\\ADT_R\\Cheetah.txt"    # datos
X=read.table(path, header=FALSE, row.names=1, sep = "")
nd = 8    # numero de ejes para la reconstrucción (ejemplo) 
Y = recons(X, nd)
visu_image(Y)
#-------------------------------------  

El archivo de prueba de datos pequeños "Cheetah.txt" se proporciona en la carpeta ADT_R. Es una tabla digital simple (200 x 320) [escala de grises para cada píxel]. Ver: Nelson M. (1993). La compression des données, Textes, Images, Sons. Dunod, París.

Caso de una imagen más general en formato ".pgm" (Portable Gray Map)
El archivo "Cheetah.txt" en este ejemplo es una matriz simple, más rústica que los formatos de imagen más comunes (bmp, jpg, png).
Estas imágenes deben convertirse a formato pgm mediante software libre como GIMP o IrfanView. La matriz X de las líneas de comando se obtiene utilizando las siguientes cuatro líneas de comando:  

#-------------------------------------
# Cuatro líneas de comando para reemplazar la línea:
# "X = read.table ..." en el cuadro de una imagen en formato pgm
#-------------------------------------
install.packages ( "pixmap"); # para usar solo la primera vez ...
library (pixmap); # Cargando el paquete "pixmap package"
imag = read.pnm (""c:\\ADT_R\\Cheetah.pgm"); # para una imagen" pgm "
X = 255 * imag @ gray; # Ahora podemos llamar a la función recons ()
#-------------------------------------

La imagen de abajo es la imagen producida por la función recon ():

Cheetah image

Imagen obtenida después de escribir las líneas de comando R anteriores. Tasa de compresión 200/8 = 25 (8 ejes principales)




Top

2- Análisis de componentes principales (con visualización gráfica)

Es simplemente una cuestión de obtener, gracias a R, una funcionalidad disponible en la mayoría del software estadístico de análisis exploratorio multivariado.

Una vez más, el código podría ser mucho más compacto, pero quizás menos legible.

Comandos para la interfaz R

#-------------------------------------
# Comandos para la interfaz R
source("c:/ADT_R/ACPS_E.r")             # ubicación del código fuente
path= "c:/ADT_R/Mini_Semio.txt"         # ubicación de datos
X=read.table(path, header=TRUE, row.names=1, sep = ",") # X = tabla de datos
Y =ACP(X)                               # main function
plot_ind (Y, X, hor=2, ver=3, font = 1) # gráfico de individuos (líneas)
                                         # (plano (2, 3) )
plot_var (Y, X, hor=2, ver=3, font = 1) # gráfico de variables (columnas)
                                         # (plano (2, 3) )
#--------------------------------------------------

El archivo de prueba de datos "Mini_semio.txt" se proporciona en la carpeta ADT_R. Esta es una tabla numérica simple (12 x 7) que proporciona las "notas" atribuidas por 12 encuestados a un conjunto de 7 palabras. La lista semiótica real contiene 210 palabras y el tamaño de la muestra varía de 800 a varios miles. Ver: The Semiometric Challenge: Words, Lifestyles and Values [El desafío semiométrico: palabras, estilos de vida y valores]   (L. Lebart, J-F. Steiner, M. Piron, J. Wisdom), L2C, 2014. (Descargar el libro - pdf)   (Descargar la portada del libro - pdf)   ... y (en francès) La sémiométrie (L. Lebart, M. Piron, J.-F. Steiner), Dunod, 2003. (Descargar el libro)  


 

Pequeño archivo de prueba ("Mini-semio.txt")

   arbre, cadeau, danger, morale, orage, politesse, sensuel     
R01,  7,   4,     2,      2 ,     3 ,        1 ,     6    
R02,  6 ,  3 ,    1 ,     2 ,     4 ,        1 ,     7    
R03,  4 ,  5 ,    3 ,     4 ,     3 ,        4 ,     3    
R04,  5 ,  5 ,    1 ,     7 ,     2 ,        7 ,     1    
R05,  4 ,  5 ,    2 ,     7 ,     1 ,        6 ,     2    
R06,  5 ,  7 ,    1 ,     5 ,     2 ,        6 ,     5    
R07,  4 ,  2 ,    1 ,     3 ,     5 ,        3 ,     6    
R08,  4 ,  1 ,    5 ,     4 ,     5 ,        4 ,     7    
R09,  6 ,  6 ,    2 ,     4 ,     7 ,        5 ,     5    
R10,  6 ,  6 ,    3 ,     5 ,     3 ,        6 ,     6    
R11,  7 ,  7 ,    6 ,     7 ,     7 ,        6 ,     7    
R12,  2 ,  2 ,    1 ,     2 ,     1 ,        3 ,     2

Significado de las columnas, palabras de la lista semiométrica:
arbre = arbol;            cadeau = regalo; 
danger = peligro.         morale = morale; 
orage = tormenta;           politesse = cortesía;
sensuel = sensuale. 


La imagen de abajo es la imagen producida por las funciones ACP() y plot_ind:

PCA: plane (2,3)

Imagen obtenida con las primeras cinco líneas de comando R. Visualización de los 12 encuestados en el plano (2, 3).



Top

3- Análisis de correspondencias (con visualización gráfica)

Es un código simple y autónomo para el análisis de correspondencias, que incluye una representación simultánea de filas y columnas

Una vez más, el código podría ser mucho más compacto, pero quizás menos legible.

Comandos para la interfaz R

#-------------------------------------
# Comandos para la interfaz R
#---------------------------------------------------------------------- 
# función Y = afcor (X): Análisis de correspondencias de X
#----------------------------------------------------------------------
# Ejemplo para una tabla de contingencia "tab.csv" en la carpeta ADT_R
# (el código fuente: - afcor_E.r - encontrado en la misma carpeta)
 source("c:/ADT_R/afcor_E.r")          # ubicación del código fuente
 path = "c:/ADT_R/tab.csv"        # ubicación de datos
# "path" lleva a un archivo de Excel (c) [formato csv]
 X = read.csv(path, row.names = 1, sep = ";") # X = tabla de datos
 Y = afcor(X)
 plot_simult(Y) # dibujo simultáneo de filas y columnas de la tabla de datos
#----------------------------------------------------------------------

El archivo de prueba de datos pequeños "tab.csv" se proporciona en la carpeta ADT_R. Es una tabla simple (12 x 6) que da las frecuencias de 12 palabras (líneas) en las respuestas de seis categorías de encuestados. A la siguiente pregunta en una encuesta de muestra:
“Nadie puede explicar por qué, tal vez por lo que evocan, encontramos algunas palabras agradables, otras desagradables.
1. En lo que a usted respecta, ¿qué palabras le gustan más? (Cita tantas palabras como sea posible).
2. ¿Qué palabras encuentras las más desagradables? (Cita tantas palabras como sea posible).”

Este es un caso de "semiometría abierta" (sin lista de palabras cerradas), cf. Capítulo 4 del libro ya citado The Semiometric Challenge: Words, Lifestyles and Values   (L. Lebart, J-F. Steiner, M. Piron, J. Wisdom), L2C, 2014. (Descargar el libro - pdf)   (Descargar la tapa del libro - pdf)   ... y (en francès) La sémiométrie (L. Lebart, M. Piron, J.-F. Steiner), Dunod, 2003. (Descargar el libro- pdf)  


 

Pequeña tabla de datos de prueba (tabla léxica)("tab.csv")

Ident    ;  Hm30;Hm55;Hp55;Fm30;Fm55; Fp55    traducciones
argent   ;    11; 15;   6;  14;    9;    3    dinero
courage  ;     2;  3;  11;   1;    3;    4    coraje
dormir   ;     8;  3;   1;   6;    2;    0    dormir
livre    ;     2;  7;   1;   9;   11;   11    libro
maman    ;     0;  3;   0;  12;   11;    3    mamá
manger   ;     9;  5;   1;  10;    3;    1    comer
pardon   ;     1;  2;   6;   0;    5;    5    perdón
peinture ;     0;  0;   1;   2;    7;    3    pintura
plaisir  ;    10;  6;   2;  11;    2;    1    placer
politesse;     0;  1;   5;   0;    4;    8    cortesía
repas    ;     3;  5;   4;   0;    3;    1    comida
soleil   ;    26; 32;  23;  54;   56;   42    sol

Significado de las columnas (categorías de encuestados):
Hm30 = Hombre, menos de 30 años; 
Hm55 = Hombre, entre 30 y 55 años.; 
Hp55 = Hombre, mayor de 55 años.
Fm30 = Mujer, menos de 30 años; 
Fm55 = Mujer, entre 30 y 55 años; 
Fp55 = Mujer, mayor de 55 años. 


La imagen de abajo es la imagen producida por las funciones afcor() y plot_simult():

CA: plane (1,2)

Imagen obtenida después de escribir las cinco líneas de comando R anteriores.


Top

4- Cálculo y trazado (en un plano principal) del árbol de expansión mínimo

El lenguaje básico R se usa de nuevo voluntariamente sin ninguna biblioteca especializada. Había que elegir entre los muchos métodos de agrupación. Hemos elegido implementar el árbol de expansión mínimo [o de longitud minima] (función armin) utilizando el algoritmo de Prim. Las funciones print_armin y plot_armin dan respectivamente la lista de los bordes del árbol y una representación de el en un plano principal. El árbol se calcula aquí a partir de las coordenadas principales resultantes de un análisis de correspondencias (ver la sección 3 anterior). Con estas coordenadas, la distancia euclidiana habitual corresponde a la distancia del Chi-2 de los datos iniciales.
Finalmente, una pequeña función afcor_armin_plot (ver el final de la lista) proporciona toda la secuencia deseada. Se incluye en el archivo armin.r, incluido en la carpeta titulada ADT_R. Para obtener los resultados deseados, simplemente escriba las siguientes líneas:

Comandos para la interfaz R

#-------------------------------------
# Comandos para entrar en la interfaz R.
#---------------------------------------------------------------------- 
# función compuesta Y = afcor_armin_plot (X) [en la carpeta descargada ADT_R]
#----------------------------------------------------------------------
# Ejemplo para una tabla de contingencia "tab.csv" en la carpeta ADT_R
# (los códigos fuente: afcor_E.r y armin_R.r están en la misma carpeta ADR_r)
 source("c:/ADT_R/afcor_E.r")    # ubicación del código fuente 1
 source("c:/ADT_R/armin_E.r"))   # ubicación del código fuente 2
 path = "c:/ADT_R/tab.csv"       # ubicación de los datos
#  mismos datos que en la sección 3
  afcor_armin_plot(path)   
#----------------------------------------------------------------------

La siguiente tabla es producida por la función : afcor_armin_plot():

Tabla de vértices obtenida después de escribir las cuatro líneas de comando R arriba.

    NumDeb   borde  NumFin    NomDeb   borde   NomFin    

 [1,] 1      -----  9         argent   -----  plaisir   
 [2,] 9      -----  6         plaisir  -----  manger    
 [3,] 6      -----  3         manger   -----  dormir    
 [4,] 1      -----  12        argent   -----  soleil    
 [5,] 12     -----  4         soleil   -----  livre     
 [6,] 4      -----  5         livre    -----  maman     
 [7,] 1      -----  11        argent   -----  repas     
 [8,] 4      -----  8         livre    -----  peinture  
 [9,] 12     -----  7         soleil   -----  pardon    
[10,] 7      -----  10        pardon   -----  politesse 

NumDeb = origen; NumFin = fin
NomDeb = Origen (nombre); NomFin = fin (nombre)

La imagen de abajo es la imagen producida por la función afcor_armin_plot():

MST: plane (1,2)

Imagen obtenida después de escribir las cuatro líneas de comando R anteriores.


Pagina principal