拓端tecdat|R語言使用灰色關聯分析(Grey Relation Analysis,GRA)中國經濟社會發展指標


原文鏈接:http://tecdat.cn/?p=16881

 

 

灰色關聯分析包括兩個重要功能。
第一項功能:灰色關聯度,與correlation系數相似,如果要評估某些單位,在使用此功能之前轉置數據。第二個功能:灰色聚類,如層次聚類。 

灰色關聯度

灰色關聯度有兩種用法。該算法用於測量兩個變量的相似性,就像`cor`一樣。如果要評估某些單位,可以轉置數據集。

*一種是檢查兩個變量的相關性,數據類型如下:

| 參考| v1 | v2 | v3 |
| ----------- |||| ---- | ---- |
| 1.2 | 1.8 | 0.9 | 8.4 |
| 0.11 | 0.3 | 0.5 | 0.2 |
| 1.3 | 0.7 | 0.12 | 0.98 |
| 1.9 | 1.09 | 2.8 | 0.99 |

reference:參考變量,reference和v1之間的灰色關聯度...近似地測量reference和v1的相似度。


*另一個是評估某些單位的好壞。

| 單位| v1 | v2 | v3 |
| ----------- |||| ---- | ---- |
| 江蘇| 1.8 | 0.9 | 8.4 |
| 浙江| 0.3 | 0.5 | 0.2 |
| 安徽 0.7 | 0.12 | 0.98 |
| 福建| 1.09 | 2.8 | 0.99 |

 示例

  1.  
     
  2.  
    ##生成數據
  3.  
     
  4.  
    #' economyCompare = data.frame(refer, liaoning, shandong, jiangsu, zhejiang, fujian, guangdong)
  5.  
     
  6.  
    #
  7.  
    # 異常控制 #
  8.  
    if (any(is.na(df))) stop("'df' have NA" )
  9.  
    if (distingCoeff<0 | distingCoeff>1) stop("'distingCoeff' must be in range of [0,1]" )
  10.  
     
  11.  
     
  12.  
     
  13.  
     
  14.  
    diff = X #設置差學列矩陣空間
  15.  
     
  16.  
    for (i in
  17.  
    mx = max(diff)
  18.  
     
  19.  
     
  20.  
    #計算關聯系數#
  21.  
    relations = (mi+distingCoeff*mx) / (diff + distingCoeff*mx)
  22.  
     
  23.  
    #計算關聯度#
  24.  
    # 暫時簡單處理, 等權
  25.  
    relDegree = rep(NA, nc)
  26.  
    for (i in 1:nc) {
  27.  
    relDegree[i] = mean(relations[,i]) # 等權
  28.  
    }
  29.  
     
  30.  
     
  31.  
    #排序: 按關聯度大到小#
  32.  
    X_order = X[ order(relDegree,
  33.  
    relDes = rep(NA, nc) #分配空間 關聯關系描述(說明誰和誰的關聯度)
  34.  
    X_names = names(X_o
  35.  
    names(relationalDegree) = relDes
  36.  
     
  37.  
     
  38.  
    if (cluster) {
  39.  
     
  40.  
    greyRelDegree = GRA(economyC
  41.  
     
  42.  
     
  43.  
    # 得到差異率矩陣 #
  44.  
    grey_diff = matrix( 0
  45.  
     
  46.  
    grey_diff[i,j] = abs(rel
  47.  
    #得到距離矩陣#
  48.  
    grey_dist = matrix( 0, nrow
  49.  
    iff[i,j]+grey_diff[j,i]
  50.  
    }
  51.  
    }
  52.  
     
  53.  
    # 得到灰色相關系數矩陣 #
  54.  
    grey_dist_max = max(grey_dist)
  55.  
    grey_correl = matrix( 0, nrow = nc, ncol = nc)
  56.  
    for (i in 1:nc) {
  57.  
    for (j in 1:nc) {
  58.  
    grey_correl[i,j] = 1 - grey_dist[i,j] / grey_dist_max
  59.  
    }
  60.  
    }
  61.  
     
  62.  
     
  63.  
     
  64.  
    d = as.dist( 1-grey_correl) # 得到無對角線的下三角矩陣(數值意義反向了, 值越小表示越相關 )
  65.  
    # 主對角線其實表示了各個對象的相近程度, 畫圖的時候, 相近的對象放在一起
  66.  
     
  67.  
    hc = hclust(d, method = clusterMethod) # 系統聚類(分層聚類)函數, single: 單一連接(最短距離法/最近鄰)
  68.  
    # hc$height, 是上面矩陣的對角元素升序
  69.  
    # hc$order, 層次樹圖上橫軸個體序號
  70.  
    plot(hc,hang= -1) #hang: 設置標簽懸掛位置
  71.  
     
  72.  
    }
  73.  
     
  74.  
    #輸出#
  75.  
     
  76.  
    if (cluster) {
  77.  
    lst = list(relationalDegree=relationalDegree,
  78.  
     
  79.  
    return(lst)
  80.  
     
  81.  
    }
  82.  
    ```
  83.  
     
  84.  
     
  85.  
     
  86.  
    ```{r}
  87.  
    ## 生成數據
  88.  
    rownames(economyCompare) = c( "indGV", "indVA", "profit", "incomeTax")
  89.  
    ## 灰色關聯度
  90.  
    greyRelDegree = greya(economyCompare)
  91.  
    greyRelDegree
  92.  
    ```
  93.  
     
  94.  
     
  95.  
     

灰色關聯度 

 

灰色聚類,如層次聚類 

  1.  
     
  2.  
    ## 灰色聚類
  3.  
     
  4.  
    greya(economyCompare, cluster = T)
  5.  
     

 

 


最受歡迎的見解

1.R語言k-Shape算法股票價格時間序列聚類

2.R語言中不同類型的聚類方法比較

3.R語言對用電負荷時間序列數據進行K-medoids聚類建模和GAM回歸

4.r語言鳶尾花iris數據集的層次聚類

5.Python Monte Carlo K-Means聚類實戰

6.用R進行網站評論文本挖掘聚類

7.用於NLP的Python:使用Keras的多標簽文本LSTM神經網絡

8.R語言對MNIST數據集分析 探索手寫數字分類數據

9.R語言基於Keras的小數據集深度學習圖像分類


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM