Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

cmdscale

El escalado multidimensional clásico

Sintaxis

Y = cmdscale(D)
[Y,e] = cmdscale(D)
[Y,e] = cmdscale(D,p)

Descripción

Y = cmdscale(D) toma una matriz-por-distancia y devuelve una matriz-por-configuración.nnDnpY Las filas de son las coordenadas de los puntos en el espacio dimensional para algunos.Ynpp < n Cuando es una matriz de distancia euclidiana, las distancias entre esos puntos son dadas por. es la dimensión del espacio más pequeño en el que los puntos cuyas distancias inter-punto se dan por se pueden incrustar.DDpnD

[Y,e] = cmdscale(D) también devuelve los valores autovalores de.Y*Y' Cuando es euclidiana, los primeros elementos de son positivos, el resto cero.Dpe Si los primeros elementos son mucho más grandes que los restantes, puede utilizar las primeras columnas de puntos dimensionales cuyas distancias entre puntos sean aproximadas.ke(n-k)kYkD Esto puede proporcionar una reducción de dimensión útil para la visualización, por ejemplo, para.k = 2

no necesita ser una matriz de distancia euclidiana.D Si es no euclidiano o una matriz de dessimilitud más general, entonces algunos elementos de son negativos, y elige como el número de valores eigenpositivos.ecmdscalep En este caso, la reducción a o menos dimensiones proporciona una aproximación razonable sólo si los elementos negativos son de magnitud pequeña.pDe

[Y,e] = cmdscale(D,p) también acepta un entero positivo entre 1 y. Especifica la dimensionalidad de la incrustación deseada.pnpY Si una incrustación dimensional es posible, entonces será de tamaño por-y será de tamaño-por-1.pYnpep Si sólo una incrustación dimensional con es posible, entonces será de tamaño por-y será de tamaño-por-1.qq < pYnqep Especificar puede reducir la carga computacional cuando es muy grande.pn

Puede especificar como una matriz de dessimilitud completa o en forma vectorial de triángulo superior, como la salida por.Dpdist Una matriz de dessimilitud completa debe ser real y simétrica, y tener ceros a lo largo de la diagonal y los elementos positivos en cualquier otro lugar. Una matriz de dessimilitud en forma de triángulo superior debe tener entradas reales y positivas. También puede especificar como una matriz de similitud completa, con unos a lo largo de la diagonal y todos los demás elementos menos de uno. transforma una matriz de similitud en una matriz de dessimilitud de forma que las distancias entre los puntos devueltos sean iguales o aproximadas.DcmdscaleYsqrt(1-D) Para utilizar una transformación diferente, debe transformar las similitudes antes de llamar.cmdscale

Ejemplos

contraer todo

Este ejemplo muestra cómo construir un mapa de 10 ciudades de Estados Unidos en base a las distancias entre esas ciudades, utilizando.cmdscale

Primero, cree la matriz de distancia y pála.cmdscale En este ejemplo, es una matriz de distancia completa: es cuadrada y simétrica, tiene entradas positivas de la diagonal, y tiene ceros en la diagonal.D

cities = ... {'Atl','Chi','Den','Hou','LA','Mia','NYC','SF','Sea','WDC'}; D = [    0  587 1212  701 1936  604  748 2139 2182   543;        587    0  920  940 1745 1188  713 1858 1737   597;       1212  920    0  879  831 1726 1631  949 1021  1494;        701  940  879    0 1374  968 1420 1645 1891  1220;       1936 1745  831 1374    0 2339 2451  347  959  2300;        604 1188 1726  968 2339    0 1092 2594 2734   923;        748  713 1631 1420 2451 1092    0 2571 2408   205;       2139 1858  949 1645  347 2594 2571    0  678  2442;       2182 1737 1021 1891  959 2734 2408  678    0  2329;        543  597 1494 1220 2300  923  205 2442 2329     0]; [Y,eigvals] = cmdscale(D);

A continuación, mire los valores eigendedevueltos por.cmdscale Algunos de estos son negativos, indicando que las distancias originales no son euclidiana. Esto es debido a la curvatura de la tierra.

format short g [eigvals eigvals/max(abs(eigvals))]
ans = 10×2

   9.5821e+06            1
   1.6868e+06      0.17604
       8157.3    0.0008513
       1432.9   0.00014954
       508.67   5.3085e-05
       25.143    2.624e-06
   8.9293e-10   9.3186e-17
       -897.7  -9.3685e-05
      -5467.6   -0.0005706
       -35479   -0.0037026

Sin embargo, en este caso, los dos valores eigenpositivos más grandes son mucho mayores en magnitud que el resto de valores eigenos. Por lo tanto, a pesar de los valores negativos, las dos primeras coordenadas son suficientes para una reproducción razonable de.YD

Dtriu = D(find(tril(ones(10),-1)))'; maxrelerr = max(abs(Dtriu-pdist(Y(:,1:2))))./max(Dtriu)
maxrelerr =      0.0075371  

Aquí hay una parcela de los lugares de la ciudad reconstruida como un mapa. La orientación de la reconstrucción es arbitraria.

plot(Y(:,1),Y(:,2),'.') text(Y(:,1)+25,Y(:,2),cities) xlabel('Miles') ylabel('Miles')

Determine cómo varía la calidad de la reconstrucción cuando reduzca los puntos a distancias utilizando diferentes métricas.

Genere diez puntos en un espacio en 4-D que estén cerca del espacio 3D. Tome una transformación lineal de los puntos para que sus valores transformados estén cerca de un subespacio 3D que no se alinee con los ejes de coordenadas.

rng default   % Set the seed for reproducibility A = [normrnd(0,1,10,3) normrnd(0,0.1,10,1)]; B = randn(4,4); X = A*B;

Reduzca los puntos en distancias utilizando la métrica euclidiana.X Encuentre una configuración con las distancias entre puntos.Y

D = pdist(X,'euclidean'); Y = cmdscale(D);

Compare la calidad de las reconstrucciones cuando utilice 2, 3 o 4 dimensiones. El pequeño valor indica que las 3 primeras dimensiones proporcionan una buena reconstrucción.maxerr3

maxerr2 = max(abs(pdist(X)-pdist(Y(:,1:2)))) 
maxerr2 = 0.1631 
maxerr3 = max(abs(pdist(X)-pdist(Y(:,1:3)))) 
maxerr3 = 0.0187 
maxerr4 = max(abs(pdist(X)-pdist(Y)))
maxerr4 = 2.2427e-14 

Reduzca los puntos en distancias utilizando la métrica.X'cityblock' Encuentre una configuración con las distancias entre puntos.Y

D = pdist(X,'cityblock'); [Y,e] = cmdscale(D);

Evaluar la calidad de la reconstrucción. contiene al menos un elemento negativo de gran magnitud, lo que podría tener en cuenta la mala calidad de la reconstrucción.e

maxerr = max(abs(pdist(X)-pdist(Y)))
maxerr = 9.0488 
min(e)
ans = -5.6586 

Referencias

[1] Seber, G. A. F. Multivariate Observations. Hoboken, NJ: John Wiley & Sons, Inc., 1984.

Consulte también

| |

Introducido antes de R2006a