El análisis discriminante es un análisis estadístico que permite clasificar individuos en grupos previamente especificados. Es decir, a partir de un conjunto variables medidas sobre un determinado número de individuos, de los que previamente se conoce que pertenecen a dos o más grupos, se obtienen una o varias funciones que permiten clasificar a cada individuo en un grupo determinado.
Este análisis tiene una importante función, y es la predictiva, ya que permite predecir a qué grupo pertenecerían otros individuos que no fueron usados para el desarrollo de la función discriminante. Se necesita, a la hora de ejecutar un análisis discriminante, de dos tipos de muestras:
- Muestra de adiestramiento (training sample): lo conforman los datos que se conocen de antemano a qué grupo pertenecen. Con estos datos se generan la/s función/es discriminante/s.
- Muestra experimental (test sample): lo conforman los datos de los que no se conocen a qué grupo pertenecen pero que se desea predecir cuál sería usando la función discriminante generada por la muestra de adiestramiento.
En R Commander no existe un menú específico para realizar en análisis discriminante. Sin embargo, su consecución a partir del uso de la función lda()
contenida en el paquete MASS
lo hace relativamente de ejecutar.
Debido a que hay que escribir los códigos manualmente, se ha desrrollado uno que simplifica al máximo su consecución. Pero para que se efectúe sin contratiempos, hay que seguir unos pasos previos que no pueden ser omitidos. Por un lado, al cargar los datos hay que darles unos nombres específicos a cada uno de ellos: a los datos de la muestra de adiestramiento se les llama Adiestramiento
, y a los datos de la muestra experimental como Experimental
. Hay que respetar las mayúsculas y minúsculas.
Quiero leer...
7.1 Ejemplo de las manos paleolíticas
En los últimos años ha habido un cierto debate sobre la identifcación del sexo de los autores de las manos que están representadas en las cuevas paleolíticas por todo el mundo (Galeta, Bruzek, and Lázničková-Galetová 2014). Sin embargo, ha sido un campo donde el análisis discriminante ha tenido cierta relevancia (Snow 2006). Y esto ha sido así porque para identificar a los autores paleolíticos se han tomado medidas de las dimensiones de las manos en hombres y mujeres actuales. Y una vez conseguidas estas medidas, mediante un análisis discriminante se ha intentado evaluar el sexo de los autores originales.
Los datos del ejemplo aquí presentados provienen de un artículo recientemente publicado (Rabazo-Rodríguez et al. 2017), en el que se usa como muestra de adiestramiento las medidas de manos de población de Tarragona y Granada, y como muestra experimental las medidas de las manos paleolíticas de la Cueva de El Castillo (Puente Viesgo, Cantabria, España). No se han utilizado todos los datos publicados en dicho artículo, sino que se ha seleccionado una muestra.
Estos datos pueden descargarse desde la web del libro. Por un lado están las medidas de tres variables en una muestra de 60 humanos modernos (30 mujeres y 30 hombres adultos). Las variables son la longitud en milímetros de los dedos anular e índice, así como la longitud de la mano. Estos datos componen la muestra de adiestramiento, y presentan el nombre de Muestra adiestramiento. Manos modernas.txt
. Por otro lado, se encuentran las tres variables mencionadas previamente medidas sobre 10 manos paleolíticas que dejaron la impronta y su negativo sobre las paredes de las cuevas. Estos datos componen la muestra de adiestramiento, y presentan el nombre de Muestra experimental. Manos paleolíticas.txt
.
Una vez importados los datos, hay que cargar el paquete MASS
en R Commander, ya que en él se encuentra la función lda()
(Linear Discriminant Analysis). En el caso de que no esté instalado el paquete MASS
, hay que instalarlo y cargarlo siguiendo las dos funciones siguientes:
install.packages("MASS") library(MASS)
7.2 Código personalizado
Si se han realizado exitosamente los pasos anteriores, el siguiente punto es muy sencillo. Simplemente se trata de copiar, pegar y ejecutar el siguiente código:
# Selecciona el nombre de la columna que funciona como factor en la muestra de # adiestramiento con el nombre de Adiestramiento # Estas funciones realizan el análisis discriminante y evalúan su eficacia # testeándola con la muestra de adiestramiento Column_factor=names(Adiestramiento)[sapply(Adiestramiento, class) == "factor"] lda <- lda(as.formula(paste(Column_factor, "~.", sep="")), data = Adiestramiento) plot(lda) # Este es el gráfico en el que se observan los grupos lda # Aquí salen los coeficientes de la/s función/es discriminate/s lda$counts # Este es el número total de observaciones por grupo lda$svd lda.p=predict(lda) Tabla=table(Adiestramiento[,Column_factor],lda.p$class) Tabla # En FILAS los reales y en COLUMNAS los estimados diag(prop.table(Tabla, 1)) # Porcentajes de aciertos por grupo en la muestra de adiestramiento sum(diag(prop.table(Tabla))) # Porcentaje de acierto total en la muestra de adiestramiento # Estas funciones estiman los grupos a los que pertenecerían las observaciones # de la muestra experimental recogidas en el conjunto de datos llamados Experimental pred=predict(lda,Experimental)$class Experimental$Grupo_Estimado=with(Experimental,pred) Experimental
Lo que está situado a la derecha de una almohadilla (#
) es código no ejecutable, de ahí que se pueda describir para qué sirve una cierta función dentro del mismo código.
7.3 Ejecución, resultados e interpretación
Los resultados que devuelve la ejecución del código anterior ofrencen mucha informacion.
Column_factor=names(Adiestramiento)[sapply(Adiestramiento, class) == "factor"] lda <- lda(as.formula(paste(Column_factor, "~.", sep="")), data = Adiestramiento) plot(lda)
Por último, en la Figura 90 se oberva cómo se distribuyen las medidas de las 60 manos de la muestra de adiestramiento sobre la función discriminante.
lda
## Call: ## lda(as.formula(paste(Column_factor, "~.", sep = "")), data = Adiestramiento) ## ## Prior probabilities of groups: ## HOMBRE MUJER ## 0,5 0,5 ## ## Group means: ## INDICE ANULAR LARGO ## HOMBRE 76,70000 78,30000 189,1333 ## MUJER 71,63333 71,83333 172,4000 ## ## Coefficients of linear discriminants: ## LD1 ## INDICE -0,05220326 ## ANULAR -0,12629525 ## LARGO -0,06798442
Esta primera parte de los resultados se dedica exclusivamente a la muestra de adiestramiento. Aquí se indica que la probabilidad de ser Hombre
o Mujer
es del 50% cada uno (Prior probabilities of groups
). Además, ofrecen las medias de cada medida y por cada sexo (Group means
). Finalmente aparecen los coeficientes de la función discriminante (Coefficients of linear discriminants
), que hay que interpretarla como se muestra a continuación:
LD1=−0.052×INDICE−0.126×ANULAR−0.068×LARGO
lda$counts
## HOMBRE MUJER ## 30 30
En este caso se hace un recuento del tamaño muestral de cada sexo en la muestra de adiestramiento. Como puede observarse, la muestra de adiestramiento está compuesta por 30 hombres y 30 mujeres.
lda$svd
## [1] 8,593421
lda.p=predict(lda) Tabla=table(Adiestramiento[,Column_factor],lda.p$class) Tabla
## ## HOMBRE MUJER ## HOMBRE 27 3 ## MUJER 3 27
Como resultado de aplicar la función discriminante descrita arriba sobre la muestra de adiestramiento, y suponiendo que no se conociera a qué sexo pertenecían, se observan los fallos y aciertos en la asignación a un sexo u otro.
Las filas representan el número real de individuos por especie y en columnas el número estimado de especies después de aplicar la función. Su lectura se hace del siguiente modo:
- De las 30 manos reales que pertenecen a hombres (27+3, en la primera fila), 27 se han asignado correctamente a ese sexo, y 3 han sido erróneamente asignadas como pertenecientes a mujeres.
- De las 30 manos reales que pertenecen a mujeres (3+27, en la segunda fila), 27 se han asignado correctamente a ese sexo, y 3 han sido erróneamente asignadas como pertenecientes a hombres.
diag(prop.table(Tabla, 1))
## HOMBRE MUJER ## 0,9 0,9
Teniendo en cuenta los aciertos y fallos vistos en la tabla anterior, se determina que ha habido un 90% de aciertos a la hora de averiguar manos pertenecientes a hombres y un 90% de aciertos en el caso de las manos de mujeres.
sum(diag(prop.table(Tabla)))
## [1] 0,9
Este último código muestra el porcentaje de aciertos en general (sin dividir por sexos) de la función discriminante sobre la muestra de adiestramiento. La función ofrece un 90% de aciertos (que es la media de los dos 90% vistos para hombres y mujeres respectivamente). Si el acierto para hombres hubiera sido un 70% y el de mujeres un 90%, este valor hubiera sido un 0.8 (80%).
pred=predict(lda,Experimental)$class Experimental$Grupo_Estimado=with(Experimental,pred) Experimental
## INDICE ANULAR LARGO Grupo_Estimado ## 1 85 68 270 HOMBRE ## 2 65 65 165 MUJER ## 3 55 63 270 HOMBRE ## 4 75 77 180 HOMBRE ## 5 60 70 175 MUJER ## 6 65 66 210 HOMBRE ## 7 62 80 245 HOMBRE ## 8 80 60 170 MUJER ## 9 65 78 200 HOMBRE ## 10 70 65 220 HOMBRE
¿Qué pasa si se aplica la función discriminante obtenida para la muestra de adiestramiento sobre las medidas de las 10 manos paleolíticas que componen la muestra experimental? Esta pregunta se resuelve con la última parte del código personalizado. Como se puede observar, 7 manos se corresponderían con hombres y 3 manos con mujeres. Pero hay que tener en cuenta un aspecto importante, y es el del porcentaje de fallos en la función discriminante (que es de un 10%, en general y para cada sexo). Esto indicaría que al menos una mano pudiera estar mal atribuida a su sexo, puesto que el tamaño muestral de manos paleolíticas en este ejemplo es de 10.
REFERENCIAS
Galeta, Patrik, Jaroslav Bruzek, and Martina Lázničková-Galetová. 2014. “Is Sex Estimation from Handprints in Prehistoric Cave Art Reliable? A View from Biological and Forensic Anthropology.” Journal of Archaeological Science 45 (May): 141–49. https://doi.org/10.1016/j.jas.2014.01.028.
Snow, Dean R. 2006. “Sexual Dimorphism in Upper Palaeolithic Hand Stencils.” Antiquity 80 (308): 390–404.
Rabazo-Rodríguez, Ana María, Mario Modesto-Mata, Lucía Bermejo, and Marcos García-Díez. 2017. “New Data on the Sexual Dimorphism of the Hand Stencils in El Castillo Cave (Cantabria, Spain).” Journal of Archaeological Science: Reports 14 (June): 374–81. https://doi.org/10.1016/j.jasrep.2017.06.022.