文章期号:20190604
第二章统计进阶,多元统计:多维标度分析
多维标度(Multidimensional scaling,缩写MDS,又译“多维尺度”)也称作“相似度结构分析”(Similarity structure analysis),属于多重变量分析的方法之一,是社会学、数量心理学、市场营销等统计实证分析的常用方法。
运用R工具进行实战演练如下:
案例:古典多维标度法 [8个城市的距离矩阵]
代码语言:javascript复制> X<-read.table(pipe("pbpaste"),header=T)
> X
北京 天津 济南 青岛 郑州 上海 杭州 南京
北京 0 118 439 668 714 1259 1328 1065
天津 118 0 363 571 729 1145 1191 936
济南 439 363 0 362 443 886 872 626
青岛 668 571 362 0 772 776 828 617
郑州 714 729 443 772 0 984 962 710
上海 1259 1145 886 776 984 0 203 322
杭州 1328 1191 872 828 962 203 0 305
南京 1065 936 626 617 710 322 305 0
>
> dd<-cmdscale(X,k=2,eig=T)
> dd
$points
[,1] [,2]
北京 -658.14610 -52.301759
天津 -522.00992 -133.917153
济南 -229.30657 32.365307
青岛 -80.72182 -277.225217
郑州 -171.98297 474.047645
上海 610.52727 -102.636996
杭州 659.93216 5.717159
南京 391.70794 53.951014
$eig
[1] 1.756015e 06 3.367695e 05 7.888679e 04 3.770390e 04 1.320482e 04 -7.275958e-12 -1.434722e 04 -3.259473e 04
$GOF
[1] 0.9221257 0.9416014
> sum(abs(dd$eig[1:2]))/sum(abs(dd$eig))
[1] 0.9221257
> sum(abs(dd$eig[1:2]^2))/sum(abs(dd$eig^2))
[1] 0.9971656
> x<-dd$points[,1]
> y<-dd$points[,2]
> plot(x,y, xlim=c(-700, 800),ylim=c(-300,600))
> text(x,y, labels=row.names(X), adj=c(0,-0.5), cex=0.8, family = 'SimSun')
上图R计算结果可知,矩阵B的八个特征值为:
$eig [1] 1.756015e 06 3.367695e 05 7.888679e 04 3.770390e 04 1.320482e 04 -7.275958e-12 -1.434722e 04 -3.259473e 04
由于存在两个特征值为负数,小于0,表明距离矩阵不是欧拉矩阵。用两个特征向量可以很好的拟合出8个构造点,在二维空间中 表示8个城市的距离和相等位置。
距离矩阵拟合图
案例:非度量多维标度法
代码语言:javascript复制> X<-read.table(pipe("pbpaste"),header=T)
> X
x1 x2 x3 x4 x5 x6 x7 x8
北京 2994.66 699.42 1990.21 473.62 1112.44 950.61 840.61 193.21
天津 2060.83 365.86 888.32 233.02 467.48 462.25 360.47 98.50
河北 1351.41 250.92 839.66 218.90 464.80 462.25 360.47 78.87
山西 1372.49 315.78 614.70 173.62 357.74 420.21 328.92 80.40
内蒙古 1675.04 317.71 751.99 177.91 598.61 374.19 467.97 97.41
辽宁 1714.15 369.15 745.03 185.23 448.97 500,28 413.83 112.87
吉林 1523.32 309.75 752.79 171.92 368.64 454.05 462.42 104.47
黑龙江 1483.95 387.17 793.80 164.63 455.90 560.71 443.16 101.86
上海 3806.82 554.13 2020.25 528.01 1459.45 997.65 584.51 209.66
江苏 2491.51 350.01 1170.88 327.69 785.53 908.10 362.28 146.87
浙江 3055.59 551.53 2044.32 410.62 1145.99 839.19 709.30 172.34
安徽 1632.96 232.20 867.51 231.23 338.99 363.92 264.39 82.10
福建 2537.15 310.14 865.50 292.71 638.07 462.17 251.36 141.23
江西 1812.66 174.61 782.72 205.27 331.81 285.23 243.84 75.48
山东 1804.45 305.56 832.95 324.70 649.21 421.91 383.89 84.51
河南 1371.17 261.52 765.18 254.47 401.44 250.47 287.83 90.14
湖北 1763.05 217.61 816.42 262.26 331.35 288.12 295.24 116.73
湖南 2087.85 209.85 719.20 243.90 343.82 315.93 293.59 96.23
广东 2630.05 215.51 986.70 235.01 637.08 326.53 307.43 177.27
广西 1675.41 110.46 692.51 192.77 310.30 182.55 228.99 62.30
海南 1724.47 117.36 609.77 135.22 312.53 318.04 138.35 90.49
重庆 1750.01 224.13 548.00 260.71 281.73 239.03 270.31 50.70
四川 1881.18 226.62 625.28 239.48 360.70 218.62 276.06 69.59
贵州 1319.43 137.49 621.80 135.64 229.66 186.19 178.07 44.21
云南 1604.50 160.72 638.09 167.66 337.85 206.45 239.94 43.11
西藏 1325.71 326.65 352.88 181.27 282.43 51.06 71.16 75.77
陕西 1299.22 237.87 837.54 233.37 336.22 397.61 376.20 75.77
甘肃 1315.25 184.23 551.63 146.93 256.70 238.03 203.13 46.09
青海 1442.88 255.19 944.23 193.59 369.60 198.53 307.92 62.55
宁夏 1541.77 302.61 776.44 188.12 444.02 241.08 417.92 101.22
新疆 1394.38 303.66 695.17 137.69 382.14 170.15 314.73 59.94
> dd<-as.matrix(X)
> dd
> d<-dist(dd)
Warning message:
In dist(dd) : 强制改变过程中产生了NA
> library(MASS)
> fit<-isoMDS(d,k=2)
initial value 3.267778
final value 3.267686
converged
> fit
$points
[,1] [,2]
北京 -1882.08165 -405.5501799
天津 -181.18356 83.5568197
河北 378.06842 -316.9090361
山西 519.63551 -161.3723531
内蒙古 140.53475 -118.3236722
辽宁 239.59269 -57.3466211
吉林 311.06135 -196.5769112
黑龙江 257.18237 -303.2689490
上海 -2574.54791 164.4633867
江苏 -864.88942 19.9653109
浙江 -1891.26840 -273.7180203
安徽 241.99333 -56.7533361
福建 -562.74468 426.2460037
江西 187.41927 149.4628003
山东 -23.94055 -68.0772001
河南 480.52386 -165.0996828
湖北 186.03261 68.3345125
湖南 -11.86522 317.5767900
广东 -645.99328 471.6486570
广西 377.05811 164.2765177
海南 362.23481 229.5403989
重庆 360.53994 226.6307228
四川 206.07019 261.9414880
贵州 708.60794 -0.5224843
云南 435.30179 117.9074584
西藏 836.32175 163.8641180
陕西 475.58204 -309.3702220
甘肃 712.09253 -10.0972309
青海 372.00020 -192.4072738
宁夏 321.09711 -124.8186386
新疆 529.56410 -105.2031733
$stress
[1] 3.267686