INSTRUCCIONES
El siguiente taller busca afianzar sus conocimientos sobre visualización de un conjunto de datos multivariados.
Problema
Busque un conjunto de datos multivariados relacionados con un área de conocimiento de su dominio que tenga al menos 50 observaciones, 5 variables numéricas y 3 categóricas.
Usando esta base e datos:
- Encuentre el vector de medias \(\overline{x}\), la matriz de covarianzas \(\textbf{S}\) y la matriz de correlaciones \(\textbf{R}\) de las variables numéricas, Interprete los resultados.
Primero debemos conoce los datos que vamos a usar, por lo tanto:
| Variable | Descripción |
|---|---|
| Alcohol | Contenido de alcohol absoluto en 100cc en % |
| Malic acid | Acidificante para corregir la acidez en g/l |
| Ash | Se determina mediante la destrucción de la materia orgánica presente en la muestra por calcinación y determinación gravimétrica del residuo. Se expresa en porcentaje g/100g de muestra |
| Alcalinity of ash | Es la suma de los cationes de amonio que se encuentran mezclados en los ácidos orgánicos del vino en meqv/l |
| Magnesium | Se determina directamente en el vino por espectrofotometría de absorción atómica. Se expresa en mmg/l |
| Total Phenols | Contribuyen a las características organolépticas del vino, así como el grado de propiedades antioxidante. Se expresa en porcentaje |
| Flavanoids | Sustancias naturales que dan color, sabor y olor y se mide en mg/kg |
| Nonflavanoid phenols | Se encuentran en el racimo y la pulpa de las uvas, se miden en mg/kg |
| Proanthocyanins | De las moléculas más significativas de algunas de las características organolépticas de los vinos tintos, sobre todo color y sabor |
| Color intensity | Se mide por la suma de las absorbancias del vino para un espesor de 1cm, correspondientes a las longitudes de onda de 420nm y 520nm |
| Hue | Matiz o tonalidad y se expresa, en grados sexagesimales, por el ángulo que forma con eleje de longitudes de onda la cuerda que une los puntos de la curva espectrofotométrica representativos de las absorbancias correspondientes a las longitudes de onda de 420 y 520 nm. |
| OD280/OD315 of diluted wines | OD280/OD315 en vino diluido |
| Proline | Es un aminoácido apolar no aromático |
Estos datos son los resultados de un análisis químico de vinos cultivados en la misma región de Italia pero derivados de tres diferentes cultivares.El análisis determinó las cantidades de 13 constituyentes que se encuentran en cada uno de los tres tipos de vinos. El número total de puntos de datos es 178, dividido entre las clases como sigue.
- Clase 1: 59
- Clase 2: 71
- Clase 3: 48
Cargamos el dataset:
library(data.table)
data =fread("https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data")
setnames(data,names(data),c("wine","Alcohol",
"Malic_acid",
"Ash",
"Alcalinity_of_ash",
"Magnesium",
"Total_phenols",
"Flavanoids",
"Nonflavanoid_phenols",
"Proanthocyanins",
"Color_intensity",
"Hue",
"OD280_OD315_of_diluted_wines",
"Proline"))
data$wine<-as.factor(data$wine)
library(DT)
DT::datatable(data)str(data)## Classes 'data.table' and 'data.frame': 178 obs. of 14 variables:
## $ wine : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
## $ Alcohol : num 14.2 13.2 13.2 14.4 13.2 ...
## $ Malic_acid : num 1.71 1.78 2.36 1.95 2.59 1.76 1.87 2.15 1.64 1.35 ...
## $ Ash : num 2.43 2.14 2.67 2.5 2.87 2.45 2.45 2.61 2.17 2.27 ...
## $ Alcalinity_of_ash : num 15.6 11.2 18.6 16.8 21 15.2 14.6 17.6 14 16 ...
## $ Magnesium : int 127 100 101 113 118 112 96 121 97 98 ...
## $ Total_phenols : num 2.8 2.65 2.8 3.85 2.8 3.27 2.5 2.6 2.8 2.98 ...
## $ Flavanoids : num 3.06 2.76 3.24 3.49 2.69 3.39 2.52 2.51 2.98 3.15 ...
## $ Nonflavanoid_phenols : num 0.28 0.26 0.3 0.24 0.39 0.34 0.3 0.31 0.29 0.22 ...
## $ Proanthocyanins : num 2.29 1.28 2.81 2.18 1.82 1.97 1.98 1.25 1.98 1.85 ...
## $ Color_intensity : num 5.64 4.38 5.68 7.8 4.32 6.75 5.25 5.05 5.2 7.22 ...
## $ Hue : num 1.04 1.05 1.03 0.86 1.04 1.05 1.02 1.06 1.08 1.01 ...
## $ OD280_OD315_of_diluted_wines: num 3.92 3.4 3.17 3.45 2.93 2.85 3.58 3.58 2.85 3.55 ...
## $ Proline : int 1065 1050 1185 1480 735 1450 1290 1295 1045 1045 ...
## - attr(*, ".internal.selfref")=<externalptr>
Ahora bien para encontrar los vectores correspondientes a las medias, las covarianzas y la matriz de correlaciones de las variables numéricas tenemos:
- Vector de medias:
vec_media_g = round(apply(data[,2:14], 2, mean),3)
vec_media_g## Alcohol Malic_acid
## 13.001 2.336
## Ash Alcalinity_of_ash
## 2.367 19.495
## Magnesium Total_phenols
## 99.742 2.295
## Flavanoids Nonflavanoid_phenols
## 2.029 0.362
## Proanthocyanins Color_intensity
## 1.591 5.058
## Hue OD280_OD315_of_diluted_wines
## 0.957 2.612
## Proline
## 746.893
- Vector de desviación estándar:
vec_desvesta = round(apply(data[,2:14], 2, sd),3)
vec_desvesta## Alcohol Malic_acid
## 0.812 1.117
## Ash Alcalinity_of_ash
## 0.274 3.340
## Magnesium Total_phenols
## 14.282 0.626
## Flavanoids Nonflavanoid_phenols
## 0.999 0.124
## Proanthocyanins Color_intensity
## 0.572 2.318
## Hue OD280_OD315_of_diluted_wines
## 0.229 0.710
## Proline
## 314.907
- Observemos el comportamiento de los histogramas para cada variable independientemente de la clase de vino o la forma en que se cultivó
library(dplyr)
library(gridExtra)
library(tidyverse) # metapackage of all tidyverse packages
options(repr.plot.width=12, repr.plot.height=12)
f1 <- ggplot(data, aes(x=Alcohol)) + geom_histogram()
f2 <- ggplot(data, aes(x=Malic_acid)) + geom_histogram()
f3 <- ggplot(data, aes(x=Ash)) + geom_histogram()
f4 <- ggplot(data, aes(x=Alcalinity_of_ash)) + geom_histogram()
f5 <- ggplot(data, aes(x=Magnesium)) + geom_histogram()
f6 <- ggplot(data, aes(x=Total_phenols)) + geom_histogram()
f7 <- ggplot(data, aes(x=Flavanoids)) + geom_histogram()
f8 <- ggplot(data, aes(x=Nonflavanoid_phenols)) + geom_histogram()
f9 <- ggplot(data, aes(x=Proanthocyanins)) + geom_histogram()
f10 <- ggplot(data, aes(x=Color_intensity)) + geom_histogram()
f11 <- ggplot(data, aes(x=Hue)) + geom_histogram()
f12 <- ggplot(data, aes(x=OD280_OD315_of_diluted_wines)) + geom_histogram()
f13 <- ggplot(data, aes(x=Proline)) + geom_histogram()
grid.arrange(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13, ncol=3, nrow=5)Tomando en cuenta la media, la desviación estándar y los histogramas podemos hacer algunas hipótesis:
- la variable Ash, alcalinity of ash y Proanthocyanins presentan un comportamiento normal significativo y centrado
- Las variables Color_intensity, Proline y Magnesium tienden a ser de la forma normal pero sesgada hacia la derecha, por lo que el valor más representativo para este caso es la mediana puesto que los datos se concentran demasiado hacia un solo lado
- Las correlaciones lineales más representativas son las siguientes:
| Variables | Correlación de Pearson |
|---|---|
| Total phenols-Flavanoids | 0.86 |
| Flavanoids-OD280/OD315 of diluted wines | 0.79 |
| Total_phenols-OD280/OD315 of diluted wines | 0.7 |
| Flavanoids-Proanthocyanins | 0.65 |
| Alcohol-Prolin | 0.64 |
| Total phenols-Proanthocyanins | 0.61 |
| Hue-OD280/OD315 of diluted wines | 0.57 |
| Malic acid-Hue | -0.56 |
| Alcohol-Color intensity | 0.55 |
| Flavanoids-Nonflavanoid phenols | -0.54 |
| Flavanoids-Hue | 0.54 |
| Proanthocyanins-OD280/OD315 of diluted wines | 0.52 |
| Color intesity-Hue | -0.52 |
De acuerdo a la descripción de las variables, observamos que Total Phenols contribuyen a las características organolépticas del vino y los flavanoids dan color, sabor y olor. Así que tienden a hacer lo mismo; además su correlación también se debe a que los flavanoids son un subgrupo de los compuestos fenólicos, por lo que si se deseara tomar la menor cantidad de variables para un posterior análisis habría la posibilidad elegir una de estas dos para el modelo final.
Matriz de covarianzas:
mat_cov_g = round(cov(data[,2:14]),3)
mat_cov_g## Alcohol Malic_acid Ash Alcalinity_of_ash
## Alcohol 0.659 0.086 0.047 -0.841
## Malic_acid 0.086 1.248 0.050 1.076
## Ash 0.047 0.050 0.075 0.406
## Alcalinity_of_ash -0.841 1.076 0.406 11.153
## Magnesium 3.140 -0.871 1.123 -3.975
## Total_phenols 0.147 -0.234 0.022 -0.671
## Flavanoids 0.192 -0.459 0.032 -1.172
## Nonflavanoid_phenols -0.016 0.041 0.006 0.150
## Proanthocyanins 0.064 -0.141 0.002 -0.377
## Color_intensity 1.028 0.645 0.165 0.145
## Hue -0.013 -0.143 -0.005 -0.209
## OD280_OD315_of_diluted_wines 0.042 -0.292 0.001 -0.656
## Proline 164.567 -67.549 19.320 -463.355
## Magnesium Total_phenols Flavanoids
## Alcohol 3.140 0.147 0.192
## Malic_acid -0.871 -0.234 -0.459
## Ash 1.123 0.022 0.032
## Alcalinity_of_ash -3.975 -0.671 -1.172
## Magnesium 203.989 1.916 2.793
## Total_phenols 1.916 0.392 0.540
## Flavanoids 2.793 0.540 0.998
## Nonflavanoid_phenols -0.456 -0.035 -0.067
## Proanthocyanins 1.933 0.219 0.373
## Color_intensity 6.621 -0.080 -0.399
## Hue 0.181 0.062 0.124
## OD280_OD315_of_diluted_wines 0.669 0.311 0.558
## Proline 1769.159 98.171 155.447
## Nonflavanoid_phenols Proanthocyanins
## Alcohol -0.016 0.064
## Malic_acid 0.041 -0.141
## Ash 0.006 0.002
## Alcalinity_of_ash 0.150 -0.377
## Magnesium -0.456 1.933
## Total_phenols -0.035 0.219
## Flavanoids -0.067 0.373
## Nonflavanoid_phenols 0.015 -0.026
## Proanthocyanins -0.026 0.328
## Color_intensity 0.040 -0.034
## Hue -0.007 0.039
## OD280_OD315_of_diluted_wines -0.044 0.211
## Proline -12.204 59.554
## Color_intensity Hue
## Alcohol 1.028 -0.013
## Malic_acid 0.645 -0.143
## Ash 0.165 -0.005
## Alcalinity_of_ash 0.145 -0.209
## Magnesium 6.621 0.181
## Total_phenols -0.080 0.062
## Flavanoids -0.399 0.124
## Nonflavanoid_phenols 0.040 -0.007
## Proanthocyanins -0.034 0.039
## Color_intensity 5.374 -0.277
## Hue -0.277 0.052
## OD280_OD315_of_diluted_wines -0.706 0.092
## Proline 230.767 17.000
## OD280_OD315_of_diluted_wines Proline
## Alcohol 0.042 164.567
## Malic_acid -0.292 -67.549
## Ash 0.001 19.320
## Alcalinity_of_ash -0.656 -463.355
## Magnesium 0.669 1769.159
## Total_phenols 0.311 98.171
## Flavanoids 0.558 155.447
## Nonflavanoid_phenols -0.044 -12.204
## Proanthocyanins 0.211 59.554
## Color_intensity -0.706 230.767
## Hue 0.092 17.000
## OD280_OD315_of_diluted_wines 0.504 69.928
## Proline 69.928 99166.717
- Matriz de correlación:
mat_cor_g = round(cor(data[,2:14]),3)
mat_cor_g## Alcohol Malic_acid Ash Alcalinity_of_ash
## Alcohol 1.000 0.094 0.212 -0.310
## Malic_acid 0.094 1.000 0.164 0.289
## Ash 0.212 0.164 1.000 0.443
## Alcalinity_of_ash -0.310 0.289 0.443 1.000
## Magnesium 0.271 -0.055 0.287 -0.083
## Total_phenols 0.289 -0.335 0.129 -0.321
## Flavanoids 0.237 -0.411 0.115 -0.351
## Nonflavanoid_phenols -0.156 0.293 0.186 0.362
## Proanthocyanins 0.137 -0.221 0.010 -0.197
## Color_intensity 0.546 0.249 0.259 0.019
## Hue -0.072 -0.561 -0.075 -0.274
## OD280_OD315_of_diluted_wines 0.072 -0.369 0.004 -0.277
## Proline 0.644 -0.192 0.224 -0.441
## Magnesium Total_phenols Flavanoids
## Alcohol 0.271 0.289 0.237
## Malic_acid -0.055 -0.335 -0.411
## Ash 0.287 0.129 0.115
## Alcalinity_of_ash -0.083 -0.321 -0.351
## Magnesium 1.000 0.214 0.196
## Total_phenols 0.214 1.000 0.865
## Flavanoids 0.196 0.865 1.000
## Nonflavanoid_phenols -0.256 -0.450 -0.538
## Proanthocyanins 0.236 0.612 0.653
## Color_intensity 0.200 -0.055 -0.172
## Hue 0.055 0.434 0.543
## OD280_OD315_of_diluted_wines 0.066 0.700 0.787
## Proline 0.393 0.498 0.494
## Nonflavanoid_phenols Proanthocyanins
## Alcohol -0.156 0.137
## Malic_acid 0.293 -0.221
## Ash 0.186 0.010
## Alcalinity_of_ash 0.362 -0.197
## Magnesium -0.256 0.236
## Total_phenols -0.450 0.612
## Flavanoids -0.538 0.653
## Nonflavanoid_phenols 1.000 -0.366
## Proanthocyanins -0.366 1.000
## Color_intensity 0.139 -0.025
## Hue -0.263 0.296
## OD280_OD315_of_diluted_wines -0.503 0.519
## Proline -0.311 0.330
## Color_intensity Hue
## Alcohol 0.546 -0.072
## Malic_acid 0.249 -0.561
## Ash 0.259 -0.075
## Alcalinity_of_ash 0.019 -0.274
## Magnesium 0.200 0.055
## Total_phenols -0.055 0.434
## Flavanoids -0.172 0.543
## Nonflavanoid_phenols 0.139 -0.263
## Proanthocyanins -0.025 0.296
## Color_intensity 1.000 -0.522
## Hue -0.522 1.000
## OD280_OD315_of_diluted_wines -0.429 0.565
## Proline 0.316 0.236
## OD280_OD315_of_diluted_wines Proline
## Alcohol 0.072 0.644
## Malic_acid -0.369 -0.192
## Ash 0.004 0.224
## Alcalinity_of_ash -0.277 -0.441
## Magnesium 0.066 0.393
## Total_phenols 0.700 0.498
## Flavanoids 0.787 0.494
## Nonflavanoid_phenols -0.503 -0.311
## Proanthocyanins 0.519 0.330
## Color_intensity -0.429 0.316
## Hue 0.565 0.236
## OD280_OD315_of_diluted_wines 1.000 0.313
## Proline 0.313 1.000
De igual manera, debido a que en este caso la correlación lineal es de acuerdo al coeficiente de correlación de Pearson podemos hacer lo siguiente para obtener una imagen más estructurada:
library(corrplot)
correlacion<-round(cor(data[,2:14]), 2)
corrplot(correlacion, method="number", type="upper")También podemos agrupar los vinos de acuerdo a su clase y realizar comparaciones entre la misma clase así:
library(dplyr) # Paquete para manipular los datos
data_1= data %>% filter(wine==1)
data_2= data %>% filter(wine==2)
data_3= data %>% filter(wine==3)
nrow(data_1)+nrow(data_2)+nrow(data_3)==nrow(data)## [1] TRUE
- Histogramas para el vino 1:
library(dplyr)
library(gridExtra)
library(tidyverse) # metapackage of all tidyverse packages
options(repr.plot.width=12, repr.plot.height=12)
f1 <- ggplot(data_1, aes(x=Alcohol)) + geom_histogram()
f2 <- ggplot(data_1, aes(x=Malic_acid)) + geom_histogram()
f3 <- ggplot(data_1, aes(x=Ash)) + geom_histogram()
f4 <- ggplot(data_1, aes(x=Alcalinity_of_ash)) + geom_histogram()
f5 <- ggplot(data_1, aes(x=Magnesium)) + geom_histogram()
f6 <- ggplot(data_1, aes(x=Total_phenols)) + geom_histogram()
f7 <- ggplot(data_1, aes(x=Flavanoids)) + geom_histogram()
f8 <- ggplot(data_1, aes(x=Nonflavanoid_phenols)) + geom_histogram()
f9 <- ggplot(data_1, aes(x=Proanthocyanins)) + geom_histogram()
f10 <- ggplot(data_1, aes(x=Color_intensity)) + geom_histogram()
f11 <- ggplot(data_1, aes(x=Hue)) + geom_histogram()
f12 <- ggplot(data_1, aes(x=OD280_OD315_of_diluted_wines)) + geom_histogram()
f13 <- ggplot(data_1, aes(x=Proline)) + geom_histogram()
grid.arrange(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13, ncol=3, nrow=5) - Histogramas para el vino 2:
library(dplyr)
library(gridExtra)
library(tidyverse) # metapackage of all tidyverse packages
options(repr.plot.width=12, repr.plot.height=12)
f1 <- ggplot(data_2, aes(x=Alcohol)) + geom_histogram()
f2 <- ggplot(data_2, aes(x=Malic_acid)) + geom_histogram()
f3 <- ggplot(data_2, aes(x=Ash)) + geom_histogram()
f4 <- ggplot(data_2, aes(x=Alcalinity_of_ash)) + geom_histogram()
f5 <- ggplot(data_2, aes(x=Magnesium)) + geom_histogram()
f6 <- ggplot(data_2, aes(x=Total_phenols)) + geom_histogram()
f7 <- ggplot(data_2, aes(x=Flavanoids)) + geom_histogram()
f8 <- ggplot(data_2, aes(x=Nonflavanoid_phenols)) + geom_histogram()
f9 <- ggplot(data_2, aes(x=Proanthocyanins)) + geom_histogram()
f10 <- ggplot(data_2, aes(x=Color_intensity)) + geom_histogram()
f11 <- ggplot(data_2, aes(x=Hue)) + geom_histogram()
f12 <- ggplot(data_2, aes(x=OD280_OD315_of_diluted_wines)) + geom_histogram()
f13 <- ggplot(data_2, aes(x=Proline)) + geom_histogram()
grid.arrange(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13, ncol=3, nrow=5)- Histogramas para el vino 3:
library(dplyr)
library(gridExtra)
library(tidyverse) # metapackage of all tidyverse packages
options(repr.plot.width=12, repr.plot.height=12)
f1 <- ggplot(data_3, aes(x=Alcohol)) + geom_histogram()
f2 <- ggplot(data_3, aes(x=Malic_acid)) + geom_histogram()
f3 <- ggplot(data_3, aes(x=Ash)) + geom_histogram()
f4 <- ggplot(data_3, aes(x=Alcalinity_of_ash)) + geom_histogram()
f5 <- ggplot(data_3, aes(x=Magnesium)) + geom_histogram()
f6 <- ggplot(data_3, aes(x=Total_phenols)) + geom_histogram()
f7 <- ggplot(data_3, aes(x=Flavanoids)) + geom_histogram()
f8 <- ggplot(data_3, aes(x=Nonflavanoid_phenols)) + geom_histogram()
f9 <- ggplot(data_3, aes(x=Proanthocyanins)) + geom_histogram()
f10 <- ggplot(data_3, aes(x=Color_intensity)) + geom_histogram()
f11 <- ggplot(data_3, aes(x=Hue)) + geom_histogram()
f12 <- ggplot(data_3, aes(x=OD280_OD315_of_diluted_wines)) + geom_histogram()
f13 <- ggplot(data_3, aes(x=Proline)) + geom_histogram()
grid.arrange(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13, ncol=3, nrow=5) Lo más caracterítico al realizar este tipo de comparaciones, es que para el vino de tipo 3 existe una dispersión de los datos significativas y no existen un comportamiento lineal. En cambio el vino tipo 2 en las variables ash, Flavanoids y color intensity tienden a tener un comportamiento lineal.
- Construya las siguientes gráficas para los datos:
- Una matriz de diagramas de dispersión.
pairs(~ Alcohol+Malic_acid+Ash+Alcalinity_of_ash+Magnesium+Total_phenols+Flavanoids+Nonflavanoid_phenols+Proanthocyanins+Color_intensity+Hue+OD280_OD315_of_diluted_wines+Proline, data = data)colnames(data[2:14])## [1] "wine" "Alcohol"
## [3] "Malic_acid" "Ash"
## [5] "Alcalinity_of_ash" "Magnesium"
## [7] "Total_phenols" "Flavanoids"
## [9] "Nonflavanoid_phenols" "Proanthocyanins"
## [11] "Color_intensity" "Hue"
## [13] "OD280_OD315_of_diluted_wines" "Proline"
data[2:14]## wine Alcohol Malic_acid Ash Alcalinity_of_ash Magnesium Total_phenols
## 1: 1 13.20 1.78 2.14 11.2 100 2.65
## 2: 1 13.16 2.36 2.67 18.6 101 2.80
## 3: 1 14.37 1.95 2.50 16.8 113 3.85
## 4: 1 13.24 2.59 2.87 21.0 118 2.80
## 5: 1 14.20 1.76 2.45 15.2 112 3.27
## 6: 1 14.39 1.87 2.45 14.6 96 2.50
## 7: 1 14.06 2.15 2.61 17.6 121 2.60
## 8: 1 14.83 1.64 2.17 14.0 97 2.80
## 9: 1 13.86 1.35 2.27 16.0 98 2.98
## 10: 1 14.10 2.16 2.30 18.0 105 2.95
## 11: 1 14.12 1.48 2.32 16.8 95 2.20
## 12: 1 13.75 1.73 2.41 16.0 89 2.60
## 13: 1 14.75 1.73 2.39 11.4 91 3.10
## Flavanoids Nonflavanoid_phenols Proanthocyanins Color_intensity Hue
## 1: 2.76 0.26 1.28 4.38 1.05
## 2: 3.24 0.30 2.81 5.68 1.03
## 3: 3.49 0.24 2.18 7.80 0.86
## 4: 2.69 0.39 1.82 4.32 1.04
## 5: 3.39 0.34 1.97 6.75 1.05
## 6: 2.52 0.30 1.98 5.25 1.02
## 7: 2.51 0.31 1.25 5.05 1.06
## 8: 2.98 0.29 1.98 5.20 1.08
## 9: 3.15 0.22 1.85 7.22 1.01
## 10: 3.32 0.22 2.38 5.75 1.25
## 11: 2.43 0.26 1.57 5.00 1.17
## 12: 2.76 0.29 1.81 5.60 1.15
## 13: 3.69 0.43 2.81 5.40 1.25
## OD280_OD315_of_diluted_wines Proline
## 1: 3.40 1050
## 2: 3.17 1185
## 3: 3.45 1480
## 4: 2.93 735
## 5: 2.85 1450
## 6: 3.58 1290
## 7: 3.58 1295
## 8: 2.85 1045
## 9: 3.55 1045
## 10: 3.17 1510
## 11: 2.82 1280
## 12: 2.90 1320
## 13: 2.73 1150
- Diagrama de estrellas.
palette(rainbow(12, s = 0.6, v = 0.75))
#windows()
stars(data[0:nrow(data)/2, 2:14], key.loc = c(14, 1.5))stars(data[nrow(data)/2+1:nrow(data), 2:14], key.loc = c(14, 1.5))#windows()
stars(data[0:nrow(data)/2, 2:14], len = 0.8, key.loc = c(12, 1.5), draw.segments = TRUE)stars(data[nrow(data)/2+1:nrow(data), 2:14], len = 0.8, key.loc = c(12, 1.5), draw.segments = TRUE) Con estos gráficos de estrellas podemos observar cómo se ven a grandes rasgos los tres tipos de vinos. Por ejemplo el primero correspondiente a las primeras observaciones que existe una magnitud considerable para todas las variables. Esto significa que el peso de las variables que caracterizan el primer vino son todas muy significativas claramente hablando a grandes rasgos; si se observan con más detalle y de forma general para el primer la variable Nonflavanoid phenols y Malic_acid son las que tienden a tener una magnitud menor.
Los vinos del tipo 2 tienden a tener mucha diferencia en la magnitud de sus componentes o variables, esto quiere decir que hay unas que sobresalen más que las otras. La variable que más sobresale es Hue o Matiz indicando que es la variable que más lo identifica.
Para los vinos de tipo 3 las variables de mayor peso son: Proanthocyanins y Alcohol. Esto es interesante porque podemos de manera general clasificar los tipos de vinos teniendo una vista espacial del “peso” o valores característicos que más influyen en la observación.
- Caras de Chernoff.
library(aplpack)
faces(data[1:59,2:14])## effect of variables:
## modified item Var
## "height of face " "Alcohol"
## "width of face " "Malic_acid"
## "structure of face" "Ash"
## "height of mouth " "Alcalinity_of_ash"
## "width of mouth " "Magnesium"
## "smiling " "Total_phenols"
## "height of eyes " "Flavanoids"
## "width of eyes " "Nonflavanoid_phenols"
## "height of hair " "Proanthocyanins"
## "width of hair " "Color_intensity"
## "style of hair " "Hue"
## "height of nose " "OD280_OD315_of_diluted_wines"
## "width of nose " "Proline"
## "width of ear " "Alcohol"
## "height of ear " "Malic_acid"
faces(data[60:130,2:14])## effect of variables:
## modified item Var
## "height of face " "Alcohol"
## "width of face " "Malic_acid"
## "structure of face" "Ash"
## "height of mouth " "Alcalinity_of_ash"
## "width of mouth " "Magnesium"
## "smiling " "Total_phenols"
## "height of eyes " "Flavanoids"
## "width of eyes " "Nonflavanoid_phenols"
## "height of hair " "Proanthocyanins"
## "width of hair " "Color_intensity"
## "style of hair " "Hue"
## "height of nose " "OD280_OD315_of_diluted_wines"
## "width of nose " "Proline"
## "width of ear " "Alcohol"
## "height of ear " "Malic_acid"
faces(data[131:179,2:14])## [1] "Warning: NA elements have been exchanged by mean values!!"
## effect of variables:
## modified item Var
## "height of face " "Alcohol"
## "width of face " "Malic_acid"
## "structure of face" "Ash"
## "height of mouth " "Alcalinity_of_ash"
## "width of mouth " "Magnesium"
## "smiling " "Total_phenols"
## "height of eyes " "Flavanoids"
## "width of eyes " "Nonflavanoid_phenols"
## "height of hair " "Proanthocyanins"
## "width of hair " "Color_intensity"
## "style of hair " "Hue"
## "height of nose " "OD280_OD315_of_diluted_wines"
## "width of nose " "Proline"
## "width of ear " "Alcohol"
## "height of ear " "Malic_acid"
nrow(data)## [1] 178
De este tipo de gráfico podemos observar y obtener otras conclusiones que no observamos con el gráfico de estrellas y es la diferencia que existía entre los de tipo 1 y tipo 2 con el tipo 3. Salvo algunas excepciones los vinos de tipo 3 tienden a ser anchos en la cara por lo que indica que Malic_acid o ácido Málico es una variable que tiene peso sobre la muestra. De igual manera para los vinos de tipo 3 en general la medición de los ojos en forma vertical es pequeña indicando que existe una ausencia de Flavanoids.
- Curvas de Andrews. Realizamos 3 curvas de Andrews de acuerdo al tipo de vino, para esto es necesario crear variables dummies de la siguiente manera
library(fastDummies)## Warning: package 'fastDummies' was built under R version 4.1.2
library(tidyverse)
data_d = dummy_cols(data, select_columns = "wine")Ahora si, realizamos los gráficos correspondientes:
library(pracma)## Warning: package 'pracma' was built under R version 4.1.2
##
## Attaching package: 'pracma'
## The following object is masked from 'package:purrr':
##
## cross
data_matrix<- as.matrix(data[,2:14])
data_f1 = as.matrix(data_d[,15])
data_f2 = as.matrix(data_d[,16])
data_f3 = as.matrix(data_d[,17])
windows()
andrewsplot(data_matrix, data_f1, style = "cart")andrewsplot(data_matrix, data_f2, style = "cart")andrewsplot(data_matrix, data_f3, style = "cart")- Podemos también agrupar los vinos, usando la media como valor representativo para cada variable y obtener los gráficos multivariados, asi:
wine_1_mean = apply(data_1[,2:14], 2, mean)
wine_2_mean = apply(data_2[,2:14], 2, mean)
wine_3_mean = apply(data_3[,2:14], 2, mean)
palette(rainbow(12, s = 0.6, v = 0.75))
df_1=t(data.frame(wine_1_mean))
df_2=t(data.frame(wine_2_mean))
df_3=t(data.frame(wine_3_mean))
df=rbind(df_1,df_2,df_3)
palette(rainbow(12, s = 0.6, v = 0.75))
windows()
stars(df, key.loc = c(14, 1.5))windows()
stars(df, len = 0.8, key.loc = c(12, 1.5), draw.segments = TRUE)Aquí al hacer comparación de los vinos de acuerdo a la media de cada variable podemos dar soporte a las conclusiones anteriores realizadas cuando se realiza una exploración general de manera visual para todas las observaciones. Por ejemplo vemos que los de tipo 1 la mayoría de variables tienden a ser de igual magnitud; las del tipo 2 sobresale la Hue y para el tipo 3 la Proanthocyanins y Alcohol.
- ¿Provienen los datos métricos disponibles de una población normal multivariada?
Seguimos los diferentes tipos de test de la siguiente fuente: https://rpubs.com/edgarcarpio/562854
Realizando Test de hipótesis
- Prueba de Mardia
#install.packages("MVN")
library(MVN)## Warning: package 'MVN' was built under R version 4.1.2
result = mvn(data = data[,2:14], mvnTest = "mardia")
result$multivariateNormality## Test Statistic p value Result
## 1 Mardia Skewness 1290.76386454407 4.92981408824459e-81 NO
## 2 Mardia Kurtosis 10.1722361968417 0 NO
## 3 MVN <NA> <NA> NO
Para el test Skewness y Kurtosis observamos que el valor de p_value < 0.05 porque 4.092*10^-81 < 0.05, entonces la prueba estadística es significativa por lo que no existe normalidad en los datos.
- Test de Henze Zirkler
result <- mvn(data = data[,2:14], mvnTest = "hz")
result$multivariateNormality## Test HZ p value MVN
## 1 Henze-Zirkler 1.074339 0 NO
el p_value es 0 por lo que es menor a 0.05. De modo que no sigue una normalidad multivariada.
Valores atípicos multivariantes (Multivariate outliers)
Los valores atípicos multivariados son la razón común para violar la suposición de MVN. O sea la suposición de MVN requiere la ausencia de valores atípicos multivariados. Así que es mejor validar la presencia de valores atípicos multivariantes antes de comenzar un análisis multivariado.
- Usando la técnica de Mahalanobis distance
# Valores atipicos multivariantes (Multivariate outliers)
# Mahalanobis distance
result <- mvn(data = data[,2:14], mvnTest = "hz", multivariateOutlierMethod = "quan")# Adjusted Mahalanobis distance
result <- mvn(data=data[,2:14],mvnTest="hz",multivariateOutlierMethod="adj") Podemos observar de las gráficas que la distancia de Mahalanobis declara 68 observaciones como valores atípicos multivariados, mientras que la distancia de Mahalanobis ajustada declara 66. Como vemos son demasiado datos atípicos multivariados por lo que podríamos concluir que no los datos métricos no provienen de una población normal multivariada