El escalamiento multidimensional no métrico es una técnica de reducción de dimensionalidad a través de aprendizaje no supervisado que se aplica sobre variables \(categóricas\) \(ordinales\). Descarga aquí el conjunto de datos utilizado para este ejercicio: Índice de Rezago Social en México (Sugerencia: abrir en una nueva pestaña).
library(vegan)
library(car)
datos = read.csv("C:/Users/Pablo/Documents/rezago.csv") # Mi ubicación
datos # Ver datos
## cve_ent ent pob_tot i_analf i_asistesc i_edbasinc i_sdsalud i_ptierra
## 1 1 AGU 1425607 2.108761 5.011983 23.47936 18.38431 0.751015
## 2 2 BCN 3769020 1.821198 6.513760 24.62045 22.18924 1.972994
## 3 3 BCS 798447 2.330508 4.231975 23.85499 16.19018 4.693388
## 4 4 CAM 928363 5.854886 6.399813 29.68353 21.89919 2.747664
## 5 5 COA 3146771 1.666687 4.976955 21.26340 18.98368 0.807531
## 6 6 COL 731391 3.367777 5.966263 27.65500 16.82739 2.541898
## 7 7 CHP 5543828 13.687469 10.523720 48.05334 32.73518 11.088231
## 8 8 CHH 3741869 2.622688 6.865735 27.12712 15.34281 1.902749
## 9 9 CMX 9209944 1.423562 5.242769 17.52849 27.17486 0.588590
## 10 10 DUR 1832650 2.719656 5.383499 27.40916 25.17633 3.579091
## 11 11 GUA 6166934 5.284970 7.006114 33.44531 20.67786 2.340624
## 12 12 GRO 3540685 12.456393 6.275503 42.46984 25.19176 14.043994
## 13 13 HID 3082841 6.612616 3.752544 29.81050 30.11995 2.851267
## 14 14 JAL 8348151 2.890534 6.971490 29.40057 29.37799 1.536777
## 15 15 MEX 16992418 2.895743 5.671544 24.85939 33.38297 2.033638
## 16 16 MIC 4748846 7.030449 7.984100 42.26630 37.58027 5.214326
## 17 17 MOR 1971520 4.438220 5.858555 27.44995 28.00732 3.851176
## 18 18 NAY 1235456 4.479029 5.365439 28.93714 22.10026 3.132368
## 19 19 NLE 5784442 1.459111 4.867864 18.83904 18.54395 0.842643
## 20 20 OAX 4132148 11.812375 5.814697 45.22990 29.42755 13.296834
## 21 21 PUE 6583278 6.966557 6.262602 36.77973 29.19435 5.098019
## 22 22 QUE 2368467 3.471752 5.552356 23.52675 20.53932 1.928562
## 23 23 ROO 1857985 3.060679 6.760623 22.42768 25.21980 2.230006
## 24 24 SLP 2822255 5.004788 4.703316 29.16502 17.37207 4.891231
## 25 25 SIN 3026943 3.551563 4.866079 28.73729 18.99986 2.284570
## 26 26 SON 2944840 1.989570 4.635632 22.25764 18.59955 2.439094
## 27 27 TAB 2402598 5.083036 4.918910 29.12237 31.44446 3.440611
## 28 28 TAM 3527735 2.572906 5.853670 25.60984 20.23562 1.500192
## 29 29 TLA 1342977 3.347890 4.902319 26.86483 26.55600 1.833678
## 30 30 VER 8062579 8.490989 6.627817 39.77429 27.63979 5.735212
## 31 31 YUC 2320898 5.986056 4.212394 31.38800 21.76347 1.408114
## 32 32 ZAC 1622138 3.751950 5.293621 32.19748 20.11161 1.329073
## i_nosan i_noagua i_nodren i_noelec i_nolav i_noref irs
## 1 0.622521 0.553611 0.616304 0.313463 13.03098 5.394147 -1.101561
## 2 0.659209 2.081973 3.473451 0.781909 17.26929 5.071003 -0.642387
## 3 1.250428 5.002131 2.577729 1.180658 31.46918 8.168935 -0.317027
## 4 3.616541 3.974698 5.102970 1.351159 22.67880 15.982953 0.244535
## 5 0.708561 0.976257 1.247952 0.266141 13.35825 3.257449 -1.147587
## 6 0.752942 0.721588 0.458831 0.495043 24.75877 6.557442 -0.690655
## 7 3.223710 9.911394 8.495332 1.778200 56.22025 35.418903 2.644224
## 8 1.535734 1.522636 3.242795 1.492335 14.05476 5.548361 -0.518357
## 9 0.304051 1.053860 0.152861 0.069654 17.17707 6.251724 -1.115345
## 10 3.079235 1.962112 5.048444 1.809012 22.67623 8.896018 -0.045956
## 11 2.559574 2.710505 3.086948 0.475255 19.39900 7.573411 -0.209212
## 12 9.453408 11.063002 11.813223 1.582253 54.19276 19.345758 2.450336
## 13 2.737343 3.892712 5.001344 0.891532 39.92872 17.243144 0.320126
## 14 1.281256 0.703456 0.737393 0.331988 16.94025 5.172880 -0.616826
## 15 1.485405 2.595902 2.460790 0.323696 27.46431 14.211069 -0.298102
## 16 1.758461 2.711150 4.194808 0.597565 25.74707 11.127279 0.529919
## 17 1.160075 4.045058 1.805395 0.428187 33.85375 9.809659 -0.126541
## 18 3.337601 2.593598 3.730293 1.707125 26.49446 10.420491 0.044037
## 19 0.531859 0.731351 0.884416 0.172228 12.93587 3.567830 -1.254735
## 20 2.796819 9.809724 19.389471 2.250041 52.65821 29.594793 2.590888
## 21 1.684118 4.449022 4.822751 0.764472 41.35854 25.403796 0.744487
## 22 2.231889 2.054686 2.548098 0.552130 24.74086 8.469044 -0.524491
## 23 2.423867 1.608363 1.891577 0.929242 25.28844 12.831549 -0.317166
## 24 2.042086 7.409510 9.074959 1.440605 25.27821 12.178427 0.319126
## 25 1.931403 1.523047 2.994536 0.554591 22.91729 4.984293 -0.567552
## 26 1.097512 1.414780 4.674606 0.970331 23.88004 5.797509 -0.650546
## 27 2.310744 6.165425 2.419348 0.669274 24.65272 13.466550 0.076399
## 28 0.590425 1.745788 5.083129 0.635309 20.20367 5.779626 -0.622628
## 29 2.971955 0.977258 1.899376 0.545235 41.87984 24.249019 -0.040526
## 30 1.883103 8.478764 8.915445 1.343163 37.03790 18.272309 1.143246
## 31 6.476411 1.187383 7.617517 0.907434 25.12791 15.859170 0.152467
## 32 2.908903 1.856361 3.604190 0.578163 15.77998 7.649973 -0.452588
## grs lugar
## 1 e) Muy bajo 29
## 2 d) Bajo 26
## 3 d) Bajo 18
## 4 c) Medio 9
## 5 e) Muy bajo 31
## 6 d) Bajo 28
## 7 a) Muy alto 1
## 8 d) Bajo 21
## 9 e) Muy bajo 30
## 10 c) Medio 14
## 11 d) Bajo 16
## 12 a) Muy alto 3
## 13 b) Alto 7
## 14 d) Bajo 24
## 15 d) Bajo 17
## 16 b) Alto 6
## 17 d) Bajo 15
## 18 c) Medio 12
## 19 e) Muy bajo 32
## 20 a) Muy alto 2
## 21 b) Alto 5
## 22 d) Bajo 22
## 23 d) Bajo 19
## 24 b) Alto 8
## 25 d) Bajo 23
## 26 d) Bajo 27
## 27 c) Medio 11
## 28 d) Bajo 25
## 29 c) Medio 13
## 30 a) Muy alto 4
## 31 c) Medio 10
## 32 d) Bajo 20
Elaboramos una recodificación de las variables para convertirlas a variables categóricas ordinales
rownames(datos) = datos[,2] #colocamos nombres a filas
datos = datos[,4:14] #filtramos variables
for(i in 1:32){
for(j in 1:11){
datos[i,j] = datos[i,j]/56.22025*100}} #recodificación
datos = round(datos)
for(i in 1:32){
for(j in 1:11){
datos[i,j] = recode(datos[i,j],
"0:20=1; 21:40=2; 40:60=3; 60:80=4; 81:100=5")}}
datos #datos ahora en escala categórica ordinal
## i_analf i_asistesc i_edbasinc i_sdsalud i_ptierra i_nosan i_noagua i_nodren
## AGU 1 1 3 2 1 1 1 1
## BCN 1 1 3 2 1 1 1 1
## BCS 1 1 3 2 1 1 1 1
## CAM 1 1 3 2 1 1 1 1
## COA 1 1 2 2 1 1 1 1
## COL 1 1 3 2 1 1 1 1
## CHP 2 1 5 3 1 1 1 1
## CHH 1 1 3 2 1 1 1 1
## CMX 1 1 2 3 1 1 1 1
## DUR 1 1 3 3 1 1 1 1
## GUA 1 1 3 2 1 1 1 1
## GRO 2 1 4 3 2 1 1 2
## HID 1 1 3 3 1 1 1 1
## JAL 1 1 3 3 1 1 1 1
## MEX 1 1 3 3 1 1 1 1
## MIC 1 1 4 4 1 1 1 1
## MOR 1 1 3 3 1 1 1 1
## NAY 1 1 3 2 1 1 1 1
## NLE 1 1 2 2 1 1 1 1
## OAX 2 1 4 3 2 1 1 2
## PUE 1 1 4 3 1 1 1 1
## QUE 1 1 3 2 1 1 1 1
## ROO 1 1 2 3 1 1 1 1
## SLP 1 1 3 2 1 1 1 1
## SIN 1 1 3 2 1 1 1 1
## SON 1 1 2 2 1 1 1 1
## TAB 1 1 3 3 1 1 1 1
## TAM 1 1 3 2 1 1 1 1
## TLA 1 1 3 3 1 1 1 1
## VER 1 1 4 3 1 1 1 1
## YUC 1 1 3 2 1 1 1 1
## ZAC 1 1 3 2 1 1 1 1
## i_noelec i_nolav i_noref
## AGU 1 2 1
## BCN 1 2 1
## BCS 1 3 1
## CAM 1 2 2
## COA 1 2 1
## COL 1 3 1
## CHP 1 5 4
## CHH 1 2 1
## CMX 1 2 1
## DUR 1 2 1
## GUA 1 2 1
## GRO 1 5 2
## HID 1 4 2
## JAL 1 2 1
## MEX 1 3 2
## MIC 1 3 1
## MOR 1 3 1
## NAY 1 3 1
## NLE 1 2 1
## OAX 1 5 3
## PUE 1 4 3
## QUE 1 3 1
## ROO 1 3 2
## SLP 1 3 2
## SIN 1 3 1
## SON 1 3 1
## TAB 1 3 2
## TAM 1 2 1
## TLA 1 4 3
## VER 1 4 2
## YUC 1 3 2
## ZAC 1 2 1
Si tus datos se encuentran ya en escala categórica ordinal, no es necesario hacer recodificación.
analizamosnmds = metaMDS(datos, k=2, trymax=100)
#HACEMOS UN PLOT DE LA ORDENACIÓN DEL STRESS
stressplot(analizamosnmds)
La función metaMDS realiza un escalado multidimensional no métrico (NMDS) e intenta encontrar una solución estable utilizando varios inicios aleatorios. Además, estandariza la escala en el resultado, para que las configuraciones sean más fáciles de interpretar, y agrega puntajes de especies a la ordenación del sitio.
Algunos valores de referencia para conocer si el valor del stress es bueno, es el siguiente: < 0.05 muy buena representación; con < 0.1 buena, < 0.2 es adecuada, y < 0.3 la representación es un poco pobre
plot(analizamosnmds, type = "t")
Otra opción:
ordiplot(analizamosnmds,type="n")
orditorp(analizamosnmds,display="sites",cex=1.2,air=0.01)