Escalado Multidimencional

library(readxl)
Warning: package 'readxl' was built under R version 4.2.2
disttancias <- read.table("C:/Users/Edwin/Downloads/distancias_ciudades.csv",header = TRUE,
                 fill = TRUE, sep = ",")
# Verificar la estructura del dataframe
str(df)
function (x, df1, df2, ncp, log = FALSE)  
head(df)
                                              
1 function (x, df1, df2, ncp, log = FALSE)    
2 {                                           
3     if (missing(ncp))                       
4         .Call(C_df, x, df1, df2, log)       
5     else .Call(C_dnf, x, df1, df2, ncp, log)
6 }                                           
#Preparamos los datos
#Hacemos que las provincias sean el nombre de fila
rownames(disttancias) <- disttancias$X
disttancias$X <- NULL
disttancias <- as.dist(disttancias) #Los convertimos en una matriz de distancias
disttancias
            Albacete Alicante Almería Avila Badajoz Barcelona Bilbao Burgos
Alicante         171                                                       
Almería          369      294                                              
Avila            366      537     663                                      
Badajoz          525      696     604   318                                
Barcelona        540      515     809   717    1022                        
Bilbao           646      817     958   401     694       620              
Burgos           488      659     800   243     536       583    158       
Cáceres          504      675     651   229      89       918    605    447
Cádiz            617      688     484   618     342      1284   1058    900
Castellón        256      231     525   532     805       284    607    524
CiudadReal       207      378     407   256     318       811    585    427
Córdoba          354      525     332   457     272       908    795    637
Acoruna          860     1031    1172   538     772      1118    644    535
Cuenca           142      313     511   282     555       562    562    404
Gerona           640      615     909   817    1122       100    720    683
Granada          363      353     166   534     438       868    829    671
Guadalajara      309      480     621   173     459       563    396    238
Huelva           506      703     516   552     251      1140    939    781
Huesca           495      570     830   490     798       274    322    359
Jaén             264      415     228   435     376       804    730    572
León             584      855     896   255     496       784    359    201
Lérida           515      490     802   558     866       156    464    427
Logroño          578      653     899   358     676       468    152    115
Lugo             762      933    1074   440     674      1020    546    437
Madrid           251      422     563   115     401       621    395    237
Málaga           473      482     219   644     436       997    939    781
Murcia           150       75     219   516     675       590    796    638
Orense           772      943    1084   443     645      1027    605    447
Oviedo           702      873    1014   373     614       902    304    322
Palencia         491      662     803   168     461       669    244     86
Pamplona         598      673     970   437     755       437    159    203
Pontevedra       874     1045    1186   545     747      1129    707    549
Salamanca        463      634     763    97     299       778    395    237
S.Sebastián      691      766    1032   475     768       529    119    232
Santander        644      815     956   369     662       693    108    156
Segovia          338      509     650    67     385       650    355    197
Sevilla          492      609     422   493     217      1046    993    775
Soria            473      548     794   261     579       453    257    141
Tarragona        443      417     711   649     935        98    555    518
Teruel           242      317     577   417     703       409    488    372
Toledo           240      411     526   137     368       692    466    308
Valencia         191      166     460   467     716       349    633    517
Valladolid       444      615     756   121     414       663    280    122
Vitoria          602      739     914   357     650       530     66    114
Zamora           499      670     811   159     361       759    376    218
Zaragoza         423      498     758   418     726       296    324    287
            Cáceres Cádiz Castellón CiudadReal Córdoba Acoruna Cuenca Gerona
Alicante                                                                    
Almería                                                                     
Avila                                                                       
Badajoz                                                                     
Barcelona                                                                   
Bilbao                                                                      
Burgos                                                                      
Cáceres                                                                     
Cádiz           369                                                         
Castellón       701   873                                                   
CiudadReal      324   464       463                                         
Córdoba         319   263       610        201                              
Acoruna         683  1072      1026        799     995                      
Cuenca          451   708       305        244     445     776              
Gerona         1018  1384       384        911    1008    1218    662       
Granada         485   335       584        278     166    1043    479    968
Guadalajara     355   721       396        248     458     667    486    663
Huelva          323   219       856        433     232    1006    677   1240
Huesca          694  1060       355        587     797     905    406    374
Jaén            423   367       520        179     104     944    380    904
León            407   796       725        511     733     334    500    884
Lérida          762  1128       259        655     865     973    472    256
Logroño         595   999       455        526     736     650    464    568
Lugo            585   974       928        696     897      98    678   1120
Madrid          297   663       417        190     400     609    167    721
Málaga          506   265       713        388     187    1153    615   1097
Murcia          654   613       306        357     444    1010    292    690
Orense          556   945       938        699     921     175    689   1127
Oviedo          525   914       868        641     851     340    618   1002
Palencia        372   761       596        424     640     450    407    769
Pamplona        650  1070       458        597     807     738    535    537
Pontevedra      658  1047      1040        701     977     121    791   1229
Salamanca       210   599       629        353     529     473    379    878
S.Sebastián     679  1132       551        659     869     763    636    629
Santander       573  1056       680        583     793     547    560    793
Segovia         296   750       504        277     497     560    254    750
Sevilla         264   125       762        339     138     947    583   1146
Soria           490   894       383        421     631     676    359    553
Tarragona       831  1059       186        649     796    1064    464    198
Teruel          599   873       152        397     596     907    153    509
Toledo          264   583       437        119     320     675    187    792
Valencia        636   808        65        398     545     961    220    449
Valladolid      325   714       563        377     578     455    360    763
Vitoria         561  1014       574        541     751     549    518    630
Zamora          272   661       665        415     616     411    415    859
Zaragoza        622   988       283        515     725     833    334    396
            Granada Guadalajara Huelva Huesca Jaén León Lérida Logroño Lugo
Alicante                                                                   
Almería                                                                    
Avila                                                                      
Badajoz                                                                    
Barcelona                                                                  
Bilbao                                                                     
Burgos                                                                     
Cáceres                                                                    
Cádiz                                                                      
Castellón                                                                  
CiudadReal                                                                 
Córdoba                                                                    
Acoruna                                                                    
Cuenca                                                                     
Gerona                                                                     
Granada                                                                    
Guadalajara     492                                                        
Huelva          350         690                                            
Huesca          831         339   1029                                     
Jaén             99         393    336    732                              
León            761         391    730    560  668                         
Lérida          861         407   1097    118  779  628                    
Logroño         770         278    968    244  671  316    312             
Lugo            945         569    908    807  846  236    875     352     
Madrid          434          58    632    397  335  333    465     336  511
Málaga          129         602    313    941  209  877   1009     880 1055
Murcia          278         459    628    611  340  734    583     694  912
Orense          955         579    879    803  856  271    871     562   95
Oviedo          885         509    821    626  786  118    703     391  242
Palencia        674         298    695    442  575  130    513     201  352
Pamplona        841         349   1039    163  742  404    281      88  640
Pontevedra     1058         681    981    905  957  373    973     664  148
Salamanca       631         270    533    554  532  197    622     352  375
S.Sebastián     903         441   1101    255  804  433    373     169  665
Santander       827         394    962    430  728  293    537     225  449
Segovia         521         145    619    426  422  245    494     299  462
Sevilla         256         596     94    935  242  671   1003     874  849
Soria           665         173    863    229  566  342    297     105  578
Tarragona       770         476   1029    209  707  719     91     403  966
Teruel          605         244    842    253  506  573    319     336  809
Toledo          397         129    552    468  298  392    536     407  577
Valencia        519         410    791    398  455  685    324     481  863
Valladolid      627         251    648    439  528  134    507     237  357
Vitoria         785         352    919    256  686  315    374      86  451
Zamora          682         306    595    535  583  135    603     333  313
Zaragoza        759         267    957     72  660  488    140     172  735
            Madrid Málaga Murcia Orense Oviedo Palencia Pamplona Pontevedra
Alicante                                                                   
Almería                                                                    
Avila                                                                      
Badajoz                                                                    
Barcelona                                                                  
Bilbao                                                                     
Burgos                                                                     
Cáceres                                                                    
Cádiz                                                                      
Castellón                                                                  
CiudadReal                                                                 
Córdoba                                                                    
Acoruna                                                                    
Cuenca                                                                     
Gerona                                                                     
Granada                                                                    
Guadalajara                                                                
Huelva                                                                     
Huesca                                                                     
Jaén                                                                       
León                                                                       
Lérida                                                                     
Logroño                                                                    
Lugo                                                                       
Madrid                                                                     
Málaga         544                                                         
Murcia         401    407                                                  
Orense         521   1065    922                                           
Oviedo         451    995    852    337                                    
Palencia       240    784    641    361    248                             
Pamplona       407    951    714    650    463      289                    
Pontevedra     623   1153   1024    102    390      463      752           
Salamanca      212    756    613    346    315      162      440        448
S.Sebastián    469   1013    807    679    423      318       92        781
Santander      393    937    794    544    207      201      267        666
Segovia         87    631    488    467    363      158      370        569
Sevilla        538    219    534    820    789      636      945        922
Soria          231    775    589    574    463      213      176        676
Tarragona      534    899    492    962    835      604      372       1064
Teruel         302    715    385    805    694      444      356        907
Toledo          71    507    390    580    510      305      478        682
Valencia       352    648    241    873    803      592      501        975
Valladolid     193    737    594    356    252       47      325        458
Vitoria        351    895    752    561    340      200       93        663
Zamora         248    792    649    284    253      143      421        386
Zaragoza       325    869    539    731    604      373      175        833
            Salamanca S.Sebastián Santander Segovia Sevilla Soria Tarragona
Alicante                                                                   
Almería                                                                    
Avila                                                                      
Badajoz                                                                    
Barcelona                                                                  
Bilbao                                                                     
Burgos                                                                     
Cáceres                                                                    
Cádiz                                                                      
Castellón                                                                  
CiudadReal                                                                 
Córdoba                                                                    
Acoruna                                                                    
Cuenca                                                                     
Gerona                                                                     
Granada                                                                    
Guadalajara                                                                
Huelva                                                                     
Huesca                                                                     
Jaén                                                                       
León                                                                       
Lérida                                                                     
Logroño                                                                    
Lugo                                                                       
Madrid                                                                     
Málaga                                                                     
Murcia                                                                     
Orense                                                                     
Oviedo                                                                     
Palencia                                                                   
Pamplona                                                                   
Pontevedra                                                                 
Salamanca                                                                  
S.Sebastián       469                                                      
Santander         363         227                                          
Segovia           164         429       359                                
Sevilla           474        1007       837     560                        
Soria             325         268       297     194     769                
Tarragona         713         464       628     585     949   388          
Teruel            514         449       528     389     748   231       311
Toledo            234         540       464     158     458   302       605
Valencia          564         594       673     439     697   376       251
Valladolid        115         354       248     111     589   210       598
Vitoria           351         118       174     311     825   191       489
Zamora             62         450       344     182     536   306       694
Zaragoza          482         268       397     354     863   157       231
            Teruel Toledo Valencia Valladolid Vitoria Zamora
Alicante                                                    
Almería                                                     
Avila                                                       
Badajoz                                                     
Barcelona                                                   
Bilbao                                                      
Burgos                                                      
Cáceres                                                     
Cádiz                                                       
Castellón                                                   
CiudadReal                                                  
Córdoba                                                     
Acoruna                                                     
Cuenca                                                      
Gerona                                                      
Granada                                                     
Guadalajara                                                 
Huelva                                                      
Huesca                                                      
Jaén                                                        
León                                                        
Lérida                                                      
Logroño                                                     
Lugo                                                        
Madrid                                                      
Málaga                                                      
Murcia                                                      
Orense                                                      
Oviedo                                                      
Palencia                                                    
Pamplona                                                    
Pontevedra                                                  
Salamanca                                                   
S.Sebastián                                                 
Santander                                                   
Segovia                                                     
Sevilla                                                     
Soria                                                       
Tarragona                                                   
Teruel                                                      
Toledo         340                                          
Valencia       145    372                                   
Valladolid     441    258      545                          
Vitoria        422    422      576        236               
Zamora         537    296      600         96     332       
Zaragoza       181    396      326        367     258    463
# Cargamos la librería MASS
library(MASS)
Warning: package 'MASS' was built under R version 4.2.3
# Supongamos que tienes un data frame 'df' con los datos originales
# Primero, calculamos la matriz de distancias
dist_matrix <- dist(disttancias)

# Luego, aplicamos el escalamiento multidimensional (MDS) en la matriz de distancias
mds <- isoMDS(dist_matrix, k = 2, trace = FALSE)

# Mostramos los resultados
print(mds$points)  # Coordenadas proyectadas en 2 dimensiones
                  [,1]         [,2]
Albacete     -678.8189   685.287905
Alicante    -1015.2236  1118.121153
Almería     -2109.9272   589.953344
Avila         330.4207  -508.699159
Badajoz     -1108.3262  -937.659517
Barcelona     407.9061  1654.448000
Bilbao       1304.1497   -98.368302
Burgos       1160.6879  -221.893431
Cáceres      -648.1770  -859.659531
Cádiz       -2483.0613  -765.173109
Castellón    -130.7038  1479.823021
CiudadReal   -780.5929   -57.739609
Córdoba     -1823.3788  -124.079020
Acoruna       498.5072 -1717.810606
Cuenca       -167.1394   511.224562
Gerona        234.1363  1667.772370
Granada     -1934.6034   153.948206
Guadalajara   390.1523   151.315828
Huelva      -2219.5359  -796.451696
Huesca        998.4376  1078.638832
Jaén        -1535.0872   107.165421
León          896.9486 -1037.106149
Lérida        841.5995  1363.174655
Logroño      1382.6897   194.063965
Lugo          684.6760 -1583.048921
Madrid        263.0212   -25.452768
Málaga      -2358.5818    -1.730514
Murcia      -1181.1036   895.552624
Orense        550.0985 -1591.433471
Oviedo        903.6808 -1191.688572
Palencia      981.9435  -609.903538
Pamplona     1364.3065   460.288357
Pontevedra    390.8740 -1746.306331
Salamanca     434.4881  -856.042036
S.Sebastián  1344.4448   265.097386
Santander    1192.6413  -400.256609
Segovia       511.7117  -294.172547
Sevilla     -2078.1660  -662.572570
Soria        1053.5107   346.413365
Tarragona     391.9706  1618.864444
Teruel        269.7134  1088.249993
Toledo       -111.1764   -69.229166
Valencia     -263.4383  1287.097553
Valladolid    851.9636  -595.896924
Vitoria      1362.1306   -30.563002
Zamora        644.7060  -918.848891
Zaragoza      985.5246   985.285003
#Aplicamos el modelo con diferentes valores de k
Resultados <- rep(NA, 5)
for(i in 1:length(Resultados)){
  Resultados[i] = isoMDS(disttancias, k = i,
              trace = FALSE)$stress
}

#Representamos los valores de ajuste
plot(Resultados, type = "b",
     xlab = "K", ylab = "% stress")
  abline(h = 5, col = "orange")

library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.2.3
# Crear el data frame de los resultados del MDS usando tu objeto mds
DatosGrafico <- data.frame(
  Dim1 = mds$points[, 1], 
  Dim2 = mds$points[, 2],
  Ciudad = rownames(mds$points)
)

# Graficar el MDS con ggplot2
ggplot(DatosGrafico, aes(x = Dim2, y = Dim1, label = Ciudad)) +
  geom_point(color = "black", size = 2) +                               # Puntos en azul y tamaño moderado
  geom_text(vjust = -0.5, hjust = 0.5, size = 3.0, color = "purple") +  # Reducir el tamaño de las etiquetas
  labs(x = "Dimensión 2",
       y = "Dimensión 1",
       title = "Representación Bidimensional del MDS") +
  theme_minimal() +                                                    # Tema minimalista para limpieza
  theme(
    text = element_text(size = 16),                                    # Tamaño general del texto
    plot.title = element_text(hjust = 0.5, size = 18, face = "bold"),  # Título centrado y en negrita
    axis.title = element_text(size = 15),                              # Tamaño de los títulos de los ejes
    axis.text = element_text(size = 13),                               # Tamaño del texto de los ejes
    panel.grid.major = element_line(color = "gray90"),                 # Líneas de cuadrícula suaves
    panel.grid.minor = element_blank()                                 # Sin líneas de cuadrícula menores
  )