距離行列

Dm(M=D,md=‘e’,s=F,t=F,d=3)
M:数値行列,s:正規化,t:転置,d:小数桁
md:距離の種類(‘[c]anberra’,‘[e]uclidean’[def.],‘[max]imum’,‘[man]hattan’,‘[mi]nkowski’)

D=Ip('s4.txt') #簡単な例:4人の成績 
## File: s4.txt / Class: data.frame / Rows: 4 / Columns: 3
##  
##         v1.English v2.Physics v3.Latin
## i1.Ana   9         14         18      
## i2.Juan 17          7         11      
## i3.Mary 15         13         14      
## i4.Ken   5         18          8
Dm() #距離行列 
##         i1.Ana i2.Juan i3.Mary i4.Ken
## i1.Ana   0.000  12.728   7.280 11.489
## i2.Juan 12.728   0.000   7.000 16.553
## i3.Mary  7.280   7.000   0.000 12.689
## i4.Ken  11.489  16.553  12.689  0.000
D=USArrests[,-3]; Dt(D,10) #データ:USArrests (-col.3: UrbanPop) 
## Class: data.frame / Rows: 50 / Columns: 3
##  
##             Murder Assault Rape
## Alabama     13.2   236     21.2
## Alaska      10.0   263     44.5
## Arizona      8.1   294     31.0
## Arkansas     8.8   190     19.5
## California   9.0   276     40.6
## Colorado     7.9   204     38.7
## Connecticut  3.3   110     11.1
## Delaware     5.9   238     15.8
## Florida     15.4   335     31.9
## Georgia     17.4   211     25.8
D1=Dm(d=1); Dt(D1,6,6) #距離行列 (d:小数桁=1) 
## Class: matrix, array / Rows: 50 / Columns: 50
##  
##            Alabama Alaska Arizona Arkansas California Colorado
## Alabama     0.0    35.8    59.0    46.2    44.7       36.9    
## Alaska     35.8     0.0    33.9    77.2    13.6       59.3    
## Arizona    59.0    33.9     0.0   104.6    20.4       90.3    
## Arkansas   46.2    77.2   104.6     0.0    88.6       23.8    
## California 44.7    13.6    20.4    88.6     0.0       72.0    
## Colorado   36.9    59.3    90.3    23.8    72.0        0.0
D2=Dm(s=T, d=3); Dt(D2,6,6) #同 +(s:正規化(列)=T, d:小数桁=3) 
## Class: matrix, array / Rows: 50 / Columns: 50
##  
##            Alabama Alaska Arizona Arkansas California Colorado
## Alabama    0.000   2.641  1.735   1.177    2.358      2.285   
## Alaska     2.641   0.000  1.567   2.851    0.506      1.068   
## Arizona    1.735   1.567  0.000   1.776    1.078      1.372   
## Arkansas   1.177   2.851  1.776   0.000    2.503      2.088   
## California 2.358   0.506  1.078   2.503    0.000      0.932   
## Colorado   2.285   1.068  1.372   2.088    0.932      0.000

##クラスター樹形図 gClusterDd(M=D,md=‘e’,mc=‘w’,s=F,t=F,g=0,lx=’‘,ly=’‘,v=F,f=12,m=10,w=F)
M:数値行列,s:正規化(列),t:転置,g:グループ数,lx,ly:ラベル,v:X軸縦,f:文字サイズ,m:マージン幅,w:白黒
md:距離計測法(’[c]anberra’,‘[e]uclidean’,‘[max]imum’,‘[man]hattan’,‘[mi]nkowski’)
mc:クラスタリング方法(‘[a]verage’,‘[s]ingle’,‘[c]omplete’,‘[w]ard.D2’)

D=Ip('s4.txt') #簡単な例:4人の成績 
## File: s4.txt / Class: data.frame / Rows: 4 / Columns: 3
##  
##         v1.English v2.Physics v3.Latin
## i1.Ana   9         14         18      
## i2.Juan 17          7         11      
## i3.Mary 15         13         14      
## i4.Ken   5         18          8
Dt(Dm(),5,5) #距離行列 
## Class: matrix, array / Rows: 4 / Columns: 4
##  
##         i1.Ana i2.Juan i3.Mary i4.Ken
## i1.Ana   0.000 12.728   7.280  11.489
## i2.Juan 12.728  0.000   7.000  16.553
## i3.Mary  7.280  7.000   0.000  12.689
## i4.Ken  11.489 16.553  12.689   0.000
gClusterDd() #クラスター樹形図 

gClusterDd(g=2) #g:グループ数=2 

gClusterDd(g=2,lx='Persona',ly='Distancia') #lx,ly:ラベル 

gClusterDd(g=2,lx='Persona',ly='Distancia',m=5) #m:マージン=5 

D=USArrests[,-3]; Dt(D,10) #データ:USArrests (-col.3: UrbanPop) 
## Class: data.frame / Rows: 50 / Columns: 3
##  
##             Murder Assault Rape
## Alabama     13.2   236     21.2
## Alaska      10.0   263     44.5
## Arizona      8.1   294     31.0
## Arkansas     8.8   190     19.5
## California   9.0   276     40.6
## Colorado     7.9   204     38.7
## Connecticut  3.3   110     11.1
## Delaware     5.9   238     15.8
## Florida     15.4   335     31.9
## Georgia     17.4   211     25.8
NS(D,2) #データを正規化(2:列/std) 表示 
##                   Murder   Assault      Rape
## Alabama        3.0614129 2.8606035 2.2863928
## Alaska         2.3192522 3.1878759 4.7992679
## Arizona        1.8785943 3.5636331 3.3433102
## Arkansas       2.0409419 2.3030282 2.1030500
## California     2.0873269 3.3454515 4.3786579
## Colorado       1.8322092 2.4727250 4.1737453
## Connecticut    0.7653532 1.3333321 1.1971207
## Delaware       1.3683588 2.8848459 1.7040097
## Florida        3.5716483 4.0606024 3.4403740
## Georgia        4.0354988 2.5575734 2.7824969
## Hawaii         1.2292036 0.5575752 2.1785441
## Idaho          0.6030056 1.4545441 1.5314518
## Illinois       2.4120223 3.0181791 2.5883692
## Indiana        1.6698616 1.3696957 2.2648230
## Iowa           0.5102355 0.6787873 1.2186905
## Kansas         1.3915513 1.3939381 1.9412769
## Kentucky       2.2496746 1.3212109 1.7579341
## Louisiana      3.5716483 3.0181791 2.3942415
## Maine          0.4870430 1.0060597 0.8412200
## Maryland       2.6207549 3.6363603 2.9981943
## Massachusetts  1.0204710 1.8060590 1.7579341
## Michigan       2.8062951 3.0909063 3.7854899
## Minnesota      0.6261981 0.8727265 1.6069459
## Mississippi    3.7339960 3.1393911 1.8442130
## Missouri       2.0873269 2.1575738 3.0413338
## Montana        1.3915513 1.3212109 1.7687189
## Nebraska       0.9972784 1.2363625 1.7795038
## Nevada         2.8294876 3.0545427 4.9610409
## New Hampshire  0.4870430 0.6909085 1.0245628
## New Jersey     1.7162466 1.9272710 2.0275559
## New Mexico     2.6439475 3.4545423 3.4619438
## New York       2.5743699 3.0787851 2.8148515
## North Carolina 3.0150278 4.0848448 1.7363643
## North Dakota   0.1855402 0.5454540 0.7872956
## Ohio           1.6930541 1.4545441 2.3079625
## Oklahoma       1.5307064 1.8303014 2.1569743
## Oregon         1.1364336 1.9272710 3.1599674
## Pennsylvania   1.4611289 1.2848473 1.6069459
## Rhode Island   0.7885457 2.1090890 0.8951443
## South Carolina 3.3397231 3.3818151 2.4265961
## South Dakota   0.8813158 1.0424233 1.3804636
## Tennessee      3.0614129 2.2787858 2.9011305
## Texas          2.9454502 2.4363614 2.7501423
## Utah           0.7421607 1.4545441 2.4697356
## Vermont        0.5102355 0.5818177 1.2079056
## Virginia       1.9713643 1.8909074 2.2324684
## Washington     0.9277009 1.7575742 2.8256364
## West Virginia  1.3219737 0.9818173 1.0029931
## Wisconsin      0.6030056 0.6424237 1.1647661
## Wyoming        1.5770915 1.9515134 1.6824400
Dx=Dm(s=T,d=3); Dt(Dx,6,6) #距離行列(s:正規化=T,d:小数桁=3) 
## Class: matrix, array / Rows: 50 / Columns: 50
##  
##            Alabama Alaska Arizona Arkansas California Colorado
## Alabama    0.000   2.641  1.735   1.177    2.358      2.285   
## Alaska     2.641   0.000  1.567   2.851    0.506      1.068   
## Arizona    1.735   1.567  0.000   1.776    1.078      1.372   
## Arkansas   1.177   2.851  1.776   0.000    2.503      2.088   
## California 2.358   0.506  1.078   2.503    0.000      0.932   
## Colorado   2.285   1.068  1.372   2.088    0.932      0.000
gClusterDd(s=T,lx='States',ly='Distance') #s:正規化=T,lx,ly:ラベル 

gClusterDd(s=T,lx='States',ly='Distance',f=8) #+f:文字サイズ=8 

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5) #+m:マージン=5 

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,v=T) #+v:縦X軸=T 

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,v=T,w=T) #+w:白黒=T 

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,g=3) #g:グループ=3 

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,md='c',g=3) #md:距離計測法=[c]anberra

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,md='e',g=3) #md:距離計測法=[e]uclidean(defaut

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,md='max',g=3) #md:距離計測法=[max]imum)

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,md='man',g=3) #md:距離計測法=[man]hattan

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,md='min',g=3) #md:距離計測法=[mi]nkowski

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,mc='a',g=3) #mc:クラスタリング方法=[a]verage

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,mc='s',g=3) #mc:クラスタリング方法=[s]ingle

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,mc='c',g=3) #mc:クラスタリング方法=[c]omplete

gClusterDd(s=T,lx='States',ly='Distance',f=8,m=5,mc='w',g=3) #mc:クラスタリング方法=[w]ard.D2*(defaut)

文字行列

D=Ip('santander') #データ:santander.txt 
## File: santander.txt / Class: data.frame / Rows: 3962 / Columns: 4
##  
##    Forma Sexo Edad Nivel
## 1  eh    H    E1   N1   
## 2  eh    H    E1   N1   
## 3  eh    H    E1   N1   
## 4  eh    H    E1   N1   
## 5  eh    H    E1   N1   
## 6  eh    H    E1   N1   
## 7  eh    H    E1   N1   
## 8  eh    H    E1   N1   
## 9  eh    H    E1   N1   
## 10 eh    H    E1   N1
D=L2M(); Dt() ##文字行列=>数値行列 
## Class: matrix, array / Rows: 31 / Columns: 8
##  
##               H   M   E1  E2  E3  N1  N2  N3 
## ah             24  51  16  13  46  21  40  14
## ay              8  40   4   1  43   7  32   9
## bueno         488 461 280 347 322 362 253 334
## claramente     13   0   0  10   3  11   1   1
## claro         118 218  54  98 184 128  90 118
## directamente   12   8  10   9   1  13   6   1
## efectivamente  11  19   0   7  23   1   6  23
## eh            828 317 329 456 360 505 290 350
## exactamente    39   7   0  26  20  17   7  22
## generalmente   18   7   4  14   7   0  14  11
D=round(RS()*100,0); Dt(); gChart() #行を相対化(パーセント) 
## Class: matrix, array / Rows: 31 / Columns: 8
##  
##               H  M  E1 E2 E3 N1 N2 N3
## ah            11 23  7  6 20  9 18  6
## ay             6 28  3  1 30  5 22  6
## bueno         17 16 10 12 11 13  9 12
## claramente    33  0  0 26  8 28  3  3
## claro         12 22  5 10 18 13  9 12
## directamente  20 13 17 15  2 22 10  2
## efectivamente 12 21  0  8 26  1  7 26
## eh            24  9 10 13 10 15  8 10
## exactamente   28  5  0 19 14 12  5 16
## generalmente  24  9  5 19  9  0 19 15

Dt(Dm(),6,6) #距離行列 
## Class: matrix, array / Rows: 31 / Columns: 31
##  
##              ah     ay     bueno  claramente claro  directamente
## ah            0.000 14.933 18.547 46.915     12.610 30.578      
## ay           14.933  0.000 32.634 59.414     23.875 45.233      
## bueno        18.547 32.634  0.000 34.044     11.790 18.412      
## claramente   46.915 59.414 34.044  0.000     40.596 29.496      
## claro        12.610 23.875 11.790 40.596      0.000 27.423      
## directamente 30.578 45.233 18.412 29.496     27.423  0.000
gClusterDd() #クラスター樹形図 

gClusterDd(g=3) #g:グループ数=2 

クラスター・ヒートチャート

gHeatDd(M=D,md=‘e’,mc=‘w’,d=F,r=4,c=4,s=F,gr=2,gc=2,lx=’‘,ly=’‘,l=F,v=F,f=12,k=F,t=F,w=F,dn=0)
M:数値行列=D,md(),mc(),d:対角化,r:樹形図の高さ(行)(0:なし),c:樹形図の高さ(行)(0:なし)
s:正規化(列),gr:行グループ数=2,gc:列グループ数=2
lx,ly:ラベル,l:凡例表示,v;縦X軸ラベル,f:フォントサイズ,k:数値表示,t:行列転置,w:白黒,dn:小数桁
md():距離計測方法(’[c]anberra’,’[e]uclidean’,’[max]imum’,’[man]hattan’,’[mi]nkowski’)
mc(
):クラスタリング方法(’[a]verage’,‘[s]ingle’,‘[c]omplete’,‘[w]ard.D2’)

D=Ip('s4.txt') #簡単な例: 4人の成績 
## File: s4.txt / Class: data.frame / Rows: 4 / Columns: 3
##  
##         v1.English v2.Physics v3.Latin
## i1.Ana   9         14         18      
## i2.Juan 17          7         11      
## i3.Mary 15         13         14      
## i4.Ken   5         18          8
gHeatDd() #クラスター・ヒートチャート 

gHeatDd(gr=3,gc=0) #gr:行分割=3,gc:列分割=0 

gHeatDd(r=2,c=0) #樹形図の高さ(行)=2,(列)=0(無表示) 

gHeatDd(lx='Subject',ly='Person',v=T) #ラベル(x,y), v:縦X軸ラベル=T 

gHeatDd(f=15) #f:フォントサイズ=15 

gHeatDd(k=T) #k:数値出力=T 

gHeatDd(k=T,l=T) #l:凡例出力=T 

gHeatDd(t=T) #行列転置 

gHeatDd(w=T) #白黒 

D=Ip('santander-m') #データ: santander-m 
## File: santander-m.txt / Class: data.frame / Rows: 31 / Columns: 8
##  
##               H  M  E1 E2 E3 N1 N2 N3
## ah            11 23  7  6 20  9 18  6
## ay             6 28  3  1 30  5 22  6
## bueno         17 16 10 12 11 13  9 12
## claramente    33  0  0 26  8 28  3  3
## claro         12 22  5 10 18 13  9 12
## directamente  20 13 17 15  2 22 10  2
## efectivamente 12 21  0  8 26  1  7 26
## eh            24  9 10 13 10 15  8 10
## exactamente   28  5  0 19 14 12  5 16
## generalmente  24  9  5 19  9  0 19 15
gHeatDd() #クラスター・ヒートチャート 

—–

参考

トップページ

(東京大学 上田博人 Hiroto Ueda, 2022)