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 = ",")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
)