Está en la página 1de 15

Test de contraste multivariado para más de dos poblaciones con

RStudio

Kenedith. M. Méndez Gutiérrez

2021-08-10

Análisis de varianza multivariado (MANOVA)

Introducción

¿Qué es?
El análisis de varianza multivariado es un método estadístico multivariante inferencial parámetrico que es una
extensión del ANOVA para comparar medias entre más de dos poblaciones. Está técnica permite analizar
la relación entre varias variables dependientes (o endógenas) métricas y una o más variables independientes
(o exógenas) no métricas.
¿Cuál es el objetivo del análisis?

• contrastar si los valores no métricos de las variables independientes determinarán la igualdad de vectores
de medias de una serie de variables dependientes.

¿Qué se requiere para aplicar el análisis a una matriz de datos básica?


Para poder aplicar el análisis es importante:

1. Tener más de una variable de respuesta ó dependientes a comparar.


2. verificar si el conjunto de variables dependientes a comparar se ajustan a la distribución normal p-
variante para cada población.
3. verificar se existe igualdad en las matrices de varianza - covarianza de las poblaciones a considerar.
4. verificar que exista linealidad entre las variables dependientes sin evidencia de multicolinealidad al
100%.
5. verificar que no existan datos atípicos influyentes.

Materiales

Script - MANOVA

Importe los datos

Para ejemplificar como se realiza el análisis con RStudio usaremos la base de datos “iris” incorporada dentro
del ambiente de R, que contiene diversas mediciones en cm realizadas en 150 lirios de tres especies por ronald
Fisher que aparecen registradas en su artículo “El uso de múltiples medidas en problemas taxonómicos”
(1936). Para cada individuo analizado se midieron las siguientes variables:

1
Tabla 1.
Descripción de las variables

Variables Unidad de mediciÃ3n


Sepal.Length Largo del sépalo (cm).
Sepal.Width Ancho del sépalo (cm).
Petal.Length Largo del pétalo (cm).
Petal.Width Ancho del pétalo (cm).
Species Especie (Setosa, Virginica, versicolor)

Para trabajar con el conjunto solo hace falta escribir el nombre de la base de datos directamente en la consola
iris. Visualizaremos los primeros 6 datos de la matriz con la función "head()"

head(iris)

Sepal.Length Sepal.Width Petal.Length Petal.Width Species


1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

¿Cómo abordar el análisis?

1. verifica los requerimientos.


2. efecute el algoritmo.

PASO 1. Verifica los requerimientos

Las 4 variables correspondientes a las mediciones son variables métricas por lo que podríamos considerar las
4 en la comparación. Para verificar si las variables dependientes de cada especie se ajustan a la distribución
normal p-variante con matrices de varianzas - covarianza, usaremos los test de normalidad de mardia y
box’s M ambos empleando la función "mvn()" y "boxM()" ubicadas en las librerías "MVN" y "biotools"
respectivamente. Primero realizaremos los test considerando todas las variables, luego solo la medidas de los
sépalos y luego transformando las medidas de los sépalos al log10. Recuerde que la matriz tiene 150 UE’s
donde de la 1:50 corresponden a la especie setosa, de la 51:100 a la especie versicolor y de la 101:150 a la
especie virginica.

library(MVN)
library(biotools)

---
biotools version 4.1

2
# Todas las variables.
boxM(data = iris[, 1:4], grouping = iris[, 5])

Box’s M-test for Homogeneity of Covariance Matrices

data: iris[, 1:4]


Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16

mvn(data = iris[1:50, 1:4], mvnTest = "mardia")$multivariateNormality #setosa

Test Statistic p value Result


1 Mardia Skewness 25.6643445196298 0.177185884467652 YES
2 Mardia Kurtosis 1.29499223711605 0.195322907441935 YES
3 MVN <NA> <NA> YES

mvn(data = iris[51:100, 1:4], mvnTest = "mardia")$multivariateNormality #versicolor

Test Statistic p value Result


1 Mardia Skewness 25.1850115362466 0.194444483140265 YES
2 Mardia Kurtosis -0.57186635893429 0.567412516528727 YES
3 MVN <NA> <NA> YES

mvn(data = iris[101:150, 1:4], mvnTest = "mardia")$multivariateNormality #virginica

Test Statistic p value Result


1 Mardia Skewness 26.2705981752915 0.157059707690356 YES
2 Mardia Kurtosis 0.152614173978342 0.878702546726567 YES
3 MVN <NA> <NA> YES

# Datos de los sépalos sin transformar.


boxM(data = iris[, 1:2], grouping = iris[, 5])

Box’s M-test for Homogeneity of Covariance Matrices

data: iris[, 1:2]


Chi-Sq (approx.) = 35.655, df = 6, p-value = 3.217e-06

mvn(data = iris[1:50, 1:2], mvnTest = "mardia")$multivariateNormality #setosa

Test Statistic p value Result


1 Mardia Skewness 0.759503524380438 0.943793240544741 YES
2 Mardia Kurtosis 0.0934600553610254 0.925538081956867 YES
3 MVN <NA> <NA> YES

mvn(data = iris[51:100, 1:2], mvnTest = "mardia")$multivariateNormality #versicolor

3
Test Statistic p value Result
1 Mardia Skewness 1.76081423820927 0.779643267719773 YES
2 Mardia Kurtosis -0.90648685799867 0.364678217772254 YES
3 MVN <NA> <NA> YES

mvn(data = iris[101:150, 1:2], mvnTest = "mardia")$multivariateNormality #virginica

Test Statistic p value Result


1 Mardia Skewness 5.55961530185445 0.234538733806549 YES
2 Mardia Kurtosis 0.518439311354541 0.604151792783842 YES
3 MVN <NA> <NA> YES

# Datos del sépalo transformados al log10


boxM(data = log10(iris[, 1:2]), grouping = iris[, 5]) #setosa

Box’s M-test for Homogeneity of Covariance Matrices

data: log10(iris[, 1:2])


Chi-Sq (approx.) = 16.182, df = 6, p-value = 0.01281

mvn(data = log10(iris[1:50, 1:2]), mvnTest = "mardia")$multivariateNormality #versicolor

Test Statistic p value Result


1 Mardia Skewness 6.92773595793483 0.139756685522801 YES
2 Mardia Kurtosis 1.48270243556113 0.138153487258629 YES
3 MVN <NA> <NA> YES

mvn(data = log10(iris[51:100, 1:2]), mvnTest = "mardia")$multivariateNormality

Test Statistic p value Result


1 Mardia Skewness 4.20578758043929 0.378871328783244 YES
2 Mardia Kurtosis -0.5161666429526 0.605738025673362 YES
3 MVN <NA> <NA> YES

mvn(data = log10(iris[101:150, 1:2]), mvnTest = "mardia")$multivariateNormality #virginica

Test Statistic p value Result


1 Mardia Skewness 4.03301040221599 0.401556811291949 YES
2 Mardia Kurtosis 0.651270054856751 0.514872175139625 YES
3 MVN <NA> <NA> YES

Ya que el MANOVA requiere que se cumplan tanto el supuesto de normalidad multivariada como el de
homocedasticidad en las matrices de var - cov para las variables consideradas entre las poblaciones, de
acuerdo con las salidas abordaremos el análisis con las mediciones de los sépalos transformadas al log10,
para las que fue posible verificar el ajuste a la distribución normal p-variante de las mediciones del ancho
y largo de sépalos empleando el test de mardia, al no evidenciarse asimérica significativa ni para la especie
setosa, χ2 (4, N = 50) = 6.93, p = 0.14, ni para la especie verisicolor χ2 (4, N = 50) = 4.21, p = 0.38, ni para
la especie virginica χ2 (4, N = 50) = 4.03, p = 0.40, ni variación significativa con respecto al vector de medias,
z = 1.48, p = 0.14 para setosa, z = −0.52, p = 0.61 para versicolor y z = 0.65, p = 0.51 para virginica.

4
Adicionalmente el test M de box no reflejó diferencias aparentes en la matriz de varianza - covarianzas entre
las tres especies, χ2(6) = 16.182, p = 0.013.
Nota: recuerde que según (Hahs-Vaughn, 2016) valores p menores a 0.001 se consideran significantes para
la prueba M de box.
Para verificar si existe linealidad entre las variables dependientes sin evidencia de multicolinealidad al 100%
en las tres poblaciones (especies), realizaremos para lo primero un gráfico de pares distinguiendo los puntos
para cada especie y para lo segundo analizaremos la correlación entre las variables dependientes empleando
la función "cor_test()" ubicada en la librería "rstatix", recuerde que correlaciones por encima de 0.9 se
consideran significativas para multicolinealidad al 100%.

# Linealidad
pairs(log10(iris[, 1:2]), col = c("violetRed", "blue", "purple")[iris$Species], pch = 20,
cex = 1.2)

0.30 0.40 0.50 0.60

0.85
Sepal.Length

0.75
0.65
0.60

Sepal.Width
0.45
0.30

0.65 0.70 0.75 0.80 0.85 0.90

# Multicolinealidad al 100% Añadir datos transformados a la matriz


iris$Sepal.LengthLog10 <- log10(iris$Sepal.Length)
iris$Sepal.WidthLog10 <- log10(iris$Sepal.Width)
# Test.
library(tidyverse)
library(rstatix)
iris %>%
group_by(Species) %>%
cor_test(Sepal.LengthLog10, Sepal.WidthLog10)

5
# A tibble: 3 x 9
Species var1 var2 cor statistic p conf.low conf.high method
<fct> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
1 setosa Sepal.Le~ Sepal.W~ 0.73 7.40 1.81e-9 0.567 0.838 Pears~
2 versico~ Sepal.Le~ Sepal.W~ 0.53 4.31 8.01e-5 0.293 0.703 Pears~
3 virgini~ Sepal.Le~ Sepal.W~ 0.46 3.60 7.51e-4 0.210 0.655 Pears~

De manera gráfica se observa una tendencia líneal en el patrón de puntos formado para la relación entre el
ancho y el largo de los sépalos de las tres especies, lo cual se verifica con el análisis de correlaciones donde
se evidenció una relación lineal directamente proporcional significativa entre estas dos medidas para las tres
especie, donde la mayor correlación lineal se muestra entre el ancho y largo de los sépalos de la especie setosa,
ρ = −0.73 ( t(50) = 7.40, p < 0.05), y la menor entre el ancho y largo de los sépalos de la especievirginica,
ρ = −0.46 ( t(50) = 3.6, p < 0.05), sin que tal relación supere el 0.9.
Por último verificaremos si el conjunto cuenta con observaciones atípicas influyentes a nivel multivariado, para
ellos emplearemos la función "mahalanobis_distance()" vista en la clase de exploración de datos.Recuerde
que la función toma como valor crítico para D2 , el cuántil en la distibución chi-cuadrado tal que χ2(0.999, p)
donde p es el número de variables.

# Ausencia de datos atípicos influyentes.


iris[, 5:7] %>%
group_by(Species) %>%
mahalanobis_distance()

# A tibble: 150 x 4
Sepal.LengthLog10 Sepal.WidthLog10 mahal.dist is.outlier
<dbl> <dbl> <dbl> <lgl>
1 0.708 0.544 1.65 FALSE
2 0.690 0.477 1.42 FALSE
3 0.672 0.505 2.22 FALSE
4 0.663 0.491 2.64 FALSE
5 0.699 0.556 2.29 FALSE
6 0.732 0.591 3.23 FALSE
7 0.663 0.531 3.04 FALSE
8 0.699 0.531 1.56 FALSE
9 0.643 0.462 4.03 FALSE
10 0.690 0.491 1.39 FALSE
# ... with 140 more rows

qchisq(0.999, 2)

[1] 13.81551

No hay evidencia de observaciones atípicas influyentes para ninguna de las tres especies en cuanto al tamaño
de sus sépalos, D2 < 13.81

PASO 2. Efecute el algoritmo.

El algoritmo se compone de dos parte:

1. la construcción de la tabla de MANOVA.


2. la prueba de contrastes múltiples en caso de un rechazo de la Ho.

6
Para el primer paso emplearemos la función "manova()" ubicada en la librería "car" y para el segundo
la función "lsmeans()" ubicada en la librería "emmeans". A la hora de mostar la tabla de MANOVA la
función dispone de 4 test "Pillai","Wilks","Hotelling-Lawley" y "Roy". Históricamente, el estadístico
de Wilks ha jugado el papel dominante en las pruebas de significación en el MANOVA porque fue el primero
en derivarse y tiene conocidas aproximaciones a las distribuciones χ2 y F , más no implica que sea el test más
robusto. En este sentido se aplica el test de Roy si los vectores medios son colineales, es decir si hay evidencia
de multicolinealidad entre las variables dependientes y solo en tales casos se recomienda su uso ya que es
sensible a la violación del resto de supuestos, mientras que si los datos provienen de poblaciones no normales
que exhiben asimetría o curtosis positiva, cualquiera de las otras tres pruebas funciona aceptablemente bien
(Rencher, 2002), siendo el test de Pillai la estadística más poderosa y sólida para uso general, especialmente
cuando se viola el supuesto homogeneidad de varianza-covarianza y si se tienen tamaños de muestra pequeños.
Con el Análisis buscaremos dar respuesta a la pregunta **¿Es la especie un factor determinante en la
estructura de los sépalos de los iris?. Las hipótesis a contrastar de forma génerica para el test son:
H0 : El vector de media de todas las poblaciones son iguales. En nuestro contexto sería que la estructura
de los sépalos es la misma para las tres especies.
H1 : El vector de media es diferente para al menos un par de poblaciones. En nuestro contexto sería que la
estructura de los sépalos es diferente para al menos un par de especies.

# MANOVA
library(car)
modelo = manova(cbind(Sepal.LengthLog10, Sepal.WidthLog10) ~ Species, data = iris)
summary(modelo, test = "Pillai") #Cambie test=’Wilks’ ó test=’Hotelling-Lawley’ ó test=’Roy’ para las o

Df Pillai approx F num Df den Df Pr(>F)


Species 2 0.95302 66.904 4 294 < 2.2e-16 ***
Residuals 147
---
Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

# CONTRASTES MULTIPLES.
iris %>%
group_by(Species) %>%
summarise(mean(Sepal.LengthLog10), mean(Sepal.WidthLog10))

# A tibble: 3 x 3
Species ‘mean(Sepal.LengthLog10)‘ ‘mean(Sepal.WidthLog10)‘
<fct> <dbl> <dbl>
1 setosa 0.698 0.532
2 versicolor 0.772 0.440
3 virginica 0.817 0.471

library(emmeans)
d = lsmeans(lm(cbind(Sepal.LengthLog10, Sepal.WidthLog10) ~ Species, data = iris),
"Species")
test(contrast(d, "pairwise"))

contrast estimate SE df t.ratio p.value


setosa - versicolor 0.00965 0.00761 147 1.268 0.4155
setosa - virginica -0.02840 0.00761 147 -3.730 0.0008
versicolor - virginica -0.03805 0.00761 147 -4.998 <.0001

7
Results are averaged over the levels of: rep.meas
P value adjustment: tukey method for comparing a family of 3 estimates

# GRAFICA.
library(reshape)
library(ggplot2)
library(reshape2)
ggplot(melt(iris[, 5:7]), aes(variable, value, fill = Species)) + stat_summary(fun.y = mean,
geom = "bar", position = "dodge") + stat_summary(fun.data = mean_cl_normal, geom = "errorbar",
position = position_dodge(width = 0.9), width = 0.5) + theme_classic() + scale_fill_brewer(palette =

0.8

0.6

Species
value

setosa
0.4 versicolor
virginica

0.2

0.0

Sepal.LengthLog10 Sepal.WidthLog10
variable

La estadística de Pillai reflejó que existe sufiente evidencia a partir de los datos para afirmar que al menos un
par de especies tienen sépalos significativamente distintos en cuánto a su estructura, F (4, 294) = 66.90, p <
0.001, determinando con el test de Tukey que la especie virginica tiene sépalos estadísticamente diferentes
a la especie versicolor, p < 0.001 y a la especie setosa, p < 0.001, sin diferencias aparentes entre estass
últimas, p = 0.41.

Análisis de varianza multivariado permutacional (perMANOVA)

Introducción

¿Qué es?

8
El Análisis de varianza multivariado permutacional es un método semiparamétrico que conserva importantes
propiedades estadísticas robustas de los métodos multivariados no paramétricos basados en rangos. Tiene la
flexibilidad de basar el análisis en una medida de disimilitud a elección (como Bray-Curtis, Jaccard, etc.) y
lograr inferencias sin suposición de normalidad multivariante. Por lo tanto, el PERMANOVA es una opción
que permite dar respuesta de manera formal a diseños experimentales complejos en una amplia variedad de
contextos donde puede haber más variables de respuesta que unidades de muestreo, donde los datos pueden
no ajustarse a la normal multivariante, tener un conjunto de datos inflados en cero, poseer datos ordinales
o cualitativos (ej., respuestas a cuestionarios, secuencias de ADN / ARN, frecuencias alélicas, aminoácidos
ácidos o datos de proteínas). Aunque originalmente fue motivado por estudios ecológicos, donde las variables
generalmente consisten en conteos de abundancias (o porcentaje de cobertura, frecuencias o biomasa) para un
gran número de especies, el PERMANOVA en la actualidad se usa en muchos campos, incluyendo química,
ciencias sociales, agricultura, medicina, genética, psicología, economía y más. (Anderson, 2017)
¿Cuál es el objetivo del análisis?

• contrastar si hay diferencia significativa entre dos o más grupos para más de 1 varaiable dependiente
basada en cualquier medida de distancia.

¿Qué se requiere para aplicar el análisis a una matriz de datos básica?


Para poder aplicar el análisis es importante:

1. Tener más de una variable de respuesta ó dependientes a comparar.


2. verificar los supuestos del MANOVA.
3. seleccionar una medida de distancia.

Materiales
Script - perMANOVA

¿Cómo abordar el análisis?


1. verifica los requerimientos.
2. efecute el algoritmo.

PASO 1. Verifica los requerimientos

Cuado revisamos los requerimiento del MANOVA en cuando a los supuestos de normalidad multivariante
y homocedasticidad en las martices de varianza-covarianzas considerando solo las variables ancho y largo
del sépalo de las 3 especies nos dimos cuenta que para los datos sin transformar no era posible garantizar
la igualdad en la matriz de varianza - covarianzas entre las tres especies con el test de Box M, χ2(6) =
35.655, p < 0.001.

library(MVN)
library(biotools)
# Datos de los sépalos sin transformar.
boxM(data = iris[, 1:2], grouping = iris[, 5])

Box’s M-test for Homogeneity of Covariance Matrices

data: iris[, 1:2]


Chi-Sq (approx.) = 35.655, df = 6, p-value = 3.217e-06

9
mvn(data = iris[1:50, 1:2], mvnTest = "mardia")$multivariateNormality #setosa

Test Statistic p value Result


1 Mardia Skewness 0.759503524380438 0.943793240544741 YES
2 Mardia Kurtosis 0.0934600553610254 0.925538081956867 YES
3 MVN <NA> <NA> YES

mvn(data = iris[51:100, 1:2], mvnTest = "mardia")$multivariateNormality #versicolor

Test Statistic p value Result


1 Mardia Skewness 1.76081423820927 0.779643267719773 YES
2 Mardia Kurtosis -0.90648685799867 0.364678217772254 YES
3 MVN <NA> <NA> YES

mvn(data = iris[101:150, 1:2], mvnTest = "mardia")$multivariateNormality #virginica

Test Statistic p value Result


1 Mardia Skewness 5.55961530185445 0.234538733806549 YES
2 Mardia Kurtosis 0.518439311354541 0.604151792783842 YES
3 MVN <NA> <NA> YES

Continuaremos con el gráfico de pares para veririficar si existe linealidad entre las variables dependientes y
el test de correlaciones para corroborar tal linealidad sin evidencia de multicolinealidad al 100% en las tres
poblaciones (especies).

# Linealidad
pairs(iris[, 1:2], col = c("violetRed", "blue", "purple")[iris$Species], pch = 20,
cex = 1.2)

10
2.0 2.5 3.0 3.5 4.0

7.5
6.5
Sepal.Length

5.5
4.5
4.0

Sepal.Width
3.0
2.0

4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0

# Multicolinealidad al 100%
library(tidyverse)
library(rstatix)
iris %>%
group_by(Species) %>%
cor_test(Sepal.Length, Sepal.Width)

# A tibble: 3 x 9
Species var1 var2 cor statistic p conf.low conf.high method
<fct> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
1 setosa Sepal.Le~ Sepal.~ 0.74 7.68 6.71e-10 0.585 0.846 Pears~
2 versicol~ Sepal.Le~ Sepal.~ 0.53 4.28 8.77e- 5 0.290 0.702 Pears~
3 virginica Sepal.Le~ Sepal.~ 0.46 3.56 8.43e- 4 0.205 0.653 Pears~

Siguiendo la interpretación de estos supuestos dada en el apartado de MANOVA, ¿Qué se puede concluir
de los datos sin transformar?
Por último verificaremos si el conjunto cuenta con observaciones atípicas influyentes a nivel multivariado
empleando la función "mahalanobis_distance()"

# Ausencia de datos atípicos influyentes.


iris[, c(1, 2, 5)] %>%
group_by(Species) %>%
mahalanobis_distance()

11
# A tibble: 150 x 4
Sepal.Length Sepal.Width mahal.dist is.outlier
<dbl> <dbl> <dbl> <lgl>
1 5.1 3.5 1.65 FALSE
2 4.9 3 1.37 FALSE
3 4.7 3.2 1.93 FALSE
4 4.6 3.1 2.26 FALSE
5 5 3.6 2.32 FALSE
6 5.4 3.9 3.83 FALSE
7 4.6 3.4 2.63 FALSE
8 5 3.4 1.49 FALSE
9 4.4 2.9 3.36 FALSE
10 4.9 3.1 1.30 FALSE
# ... with 140 more rows

qchisq(0.999, 2)

[1] 13.81551

Siguiendo la interpretación de este supuesto dada en el apartado de MANOVA, ¿Qué se puede concluir
de los datos sin transformar?

PASO 2. Efecute el algoritmo.

Al igual que en el MANOVA el algoritmo se compone de dos parte:

1. la construcción de la tabla de perMANOVA con la distancia escogida.


2. la prueba de contrastes múltiples en caso de un rechazo de la Ho.

Para la primera parte como el supuesto de homocedasticidad no se cumple emplearemos para dar respuesta
a la pregunta ¿Es la especie un factor determinante en la estructura de los sépalos de los iris?
un perMANOVA usando la función "adonis()" ubicada en la librería "vegan" indicando como medida
de distancia la "distancia de mahalanobis" al tratarse las variables dependiente de medidas métricas
correlacionadas entre sí. Para la segunda parte emplearemos la función "pairwise.perm.manova()" ubicada
en la librería "RVAideMemoire".
Las hipótesis a contrastar de forma génerica para el test son:
H0 : No hay diferencias en las posiciones de los centroides de los grupos en el espacio de la medida de
disimilitud elegida.
H1 : Hay diferencias en las posiciones de los centroides de los grupos en el espacio de la medida de disimilitud
elegida.

# perMANOVA
library(vegan)
adonis(iris[, 1:2] ~ Species, data = iris, method = "mahalanobis")

Call:
adonis(formula = iris[, 1:2] ~ Species, data = iris, method = "mahalanobis")

Permutation: free

12
Number of permutations: 999

Terms added sequentially (first to last)

Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)


Species 2 140.85 70.426 65.878 0.47266 0.001 ***
Residuals 147 157.15 1.069 0.52734
Total 149 298.00 1.00000
---
Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

# CONTRASTES MULTIPLES.
library(RVAideMemoire)
pairwise.perm.manova(iris[, 1:2], iris$Species, p.method = "bonf")

| |

# GRAFICA.
library(tidyverse)
iris %>%
group_by(Species) %>%
mutate(L = mean(Sepal.Length), A = mean(Sepal.Width)) %>%
ggplot(aes(Sepal.Length, Sepal.Width, color = Species)) + geom_point() + geom_point(aes(x = L,
y = A), size = 4) + geom_segment(aes(x = Sepal.Length, y = Sepal.Width, xend = L,
yend = A)) + theme_classic()

13
4.5

4.0

3.5
Species
Sepal.Width

setosa
versicolor
3.0 virginica

2.5

2.0

5 6 7 8
Sepal.Length

library(ggplot2)
library(reshape)
ggplot(melt(iris[, c(1, 2, 5)]), aes(variable, value, fill = Species)) + geom_boxplot() +
theme_classic() + scale_fill_brewer(palette = "Set2")

14
8

Species
value

setosa
versicolor
virginica
4

Sepal.Length Sepal.Width
variable

El test permutacional reflejó que el factor especie resulta significativo para afirmar que hay diferencias en la
distribución de los centroide de las medidas de los sépalos entre las especies, F (4, 147) = 65.878, p = 0.001,
determinando con la estadística pillai con ajuste bonferroni en las comparaciones multiples empleando que
todas las especies muestran diferencias en la estructura de sus sépalos, p = 0.003.

Práctica
Replique a manera de práctica el análisis apropiado para comparar la estructura de las flores de las tres
especies de lirios (todas las medidas) y con ello responda:

1. ¿qué condiciones se cumplen para el análisis con el conjunto de datos completo?


2. ¿qué test resulta apropiado para la comparación de acuerdo con la respuesta anterior?
3. ¿hay evidencia de diferencias en la flores entre las tres especies de lirios?
4. en caso de diferencias, ¿las flores de qué especies son diferentes? Explique.

15

También podría gustarte