1 Μήτρα απόστασης – δεντρόγραμμα

Στην ενότητα αυτή θα μελετήσουμε το εισόδημα των νοικοκυριών διαφόρων χωρών και θα προσπαθήσουμε να δούμε ποιες έχουν ομοιότητες μεταξύ τους. Αντλήσαμε δεδομένα από τον OECD και τ’ αποθηκεύσαμε σε ένα αρχείο ονόματι eisodima.csv. Για λόγους ταχύτητας εκτέλεσης του παρόντως κώδικα, παρουσιάζονται ακολούθως μόνο οι 100 πρώτες γραμμές.

LOCATION INDICATOR SUBJECT MEASURE FREQUENCY TIME Value Flag.Codes
JPN HHDI GROSSADJ USD_CAP A 1994 16124.254
JPN HHDI GROSSADJ USD_CAP A 1995 16737.559
JPN HHDI GROSSADJ USD_CAP A 1996 17137.574
JPN HHDI GROSSADJ USD_CAP A 1997 17604.818
JPN HHDI GROSSADJ USD_CAP A 1998 17790.334
JPN HHDI GROSSADJ USD_CAP A 1999 18042.118
JPN HHDI GROSSADJ USD_CAP A 2000 19175.531
JPN HHDI GROSSADJ USD_CAP A 2001 19243.809
JPN HHDI GROSSADJ USD_CAP A 2002 20193.960
JPN HHDI GROSSADJ USD_CAP A 2003 20868.044
JPN HHDI GROSSADJ USD_CAP A 2004 21749.982
JPN HHDI GROSSADJ USD_CAP A 2005 23049.175
JPN HHDI GROSSADJ USD_CAP A 2006 23987.061
JPN HHDI GROSSADJ USD_CAP A 2007 24916.381
JPN HHDI GROSSADJ USD_CAP A 2008 25393.939
JPN HHDI GROSSADJ USD_CAP A 2009 25581.219
JPN HHDI GROSSADJ USD_CAP A 2010 26402.021
JPN HHDI GROSSADJ USD_CAP A 2011 27299.674
JPN HHDI GROSSADJ USD_CAP A 2012 28447.428
JPN HHDI GROSSADJ USD_CAP A 2013 30474.352
JPN HHDI GROSSADJ USD_CAP A 2014 30032.209
JPN HHDI GROSSADJ USD_CAP A 2015 30597.028
JPN HHDI GROSSADJ USD_CAP A 2016 29290.346
JPN HHDI GROSSADJ USD_CAP A 2017 29915.593
JPN HHDI GROSSADJ USD_CAP A 2018 30777.441
JPN HHDI GROSSADJ USD_CAP A 2019 30918.214
JPN HHDI GROSSADJ USD_CAP A 2020 32673.061
JPN HHDI GROSSADJ USD_CAP A 2021 32368.423
NLD HHDI GROSSADJ USD_CAP A 1995 16292.588
NLD HHDI GROSSADJ USD_CAP A 1996 16964.923
NLD HHDI GROSSADJ USD_CAP A 1997 17911.922
NLD HHDI GROSSADJ USD_CAP A 1998 18873.977
NLD HHDI GROSSADJ USD_CAP A 1999 19896.848
NLD HHDI GROSSADJ USD_CAP A 2000 22257.565
NLD HHDI GROSSADJ USD_CAP A 2001 23851.051
NLD HHDI GROSSADJ USD_CAP A 2002 25565.105
NLD HHDI GROSSADJ USD_CAP A 2003 24509.683
NLD HHDI GROSSADJ USD_CAP A 2004 25478.582
NLD HHDI GROSSADJ USD_CAP A 2005 25671.351
NLD HHDI GROSSADJ USD_CAP A 2006 27661.459
NLD HHDI GROSSADJ USD_CAP A 2007 29186.943
NLD HHDI GROSSADJ USD_CAP A 2008 30385.765
NLD HHDI GROSSADJ USD_CAP A 2009 30119.922
NLD HHDI GROSSADJ USD_CAP A 2010 29940.808
NLD HHDI GROSSADJ USD_CAP A 2011 30360.104
NLD HHDI GROSSADJ USD_CAP A 2012 31072.644
NLD HHDI GROSSADJ USD_CAP A 2013 31685.554
NLD HHDI GROSSADJ USD_CAP A 2014 31934.999
NLD HHDI GROSSADJ USD_CAP A 2015 32193.957
NLD HHDI GROSSADJ USD_CAP A 2016 33258.289
NLD HHDI GROSSADJ USD_CAP A 2017 34379.958
NLD HHDI GROSSADJ USD_CAP A 2018 36263.623
NLD HHDI GROSSADJ USD_CAP A 2019 38038.638
NLD HHDI GROSSADJ USD_CAP A 2020 39703.217
NLD HHDI GROSSADJ USD_CAP A 2021 41258.356 E
NLD HHDI GROSSADJ USD_CAP A 2022 45215.400 E
CZE HHDI GROSSADJ USD_CAP A 1995 9322.676
CZE HHDI GROSSADJ USD_CAP A 1996 10167.121
CZE HHDI GROSSADJ USD_CAP A 1997 10574.065
CZE HHDI GROSSADJ USD_CAP A 1998 10535.573
CZE HHDI GROSSADJ USD_CAP A 1999 10952.128
CZE HHDI GROSSADJ USD_CAP A 2000 11910.042
CZE HHDI GROSSADJ USD_CAP A 2001 12988.027
CZE HHDI GROSSADJ USD_CAP A 2002 13688.285
CZE HHDI GROSSADJ USD_CAP A 2003 14255.285
CZE HHDI GROSSADJ USD_CAP A 2004 14875.741
CZE HHDI GROSSADJ USD_CAP A 2005 15267.994
CZE HHDI GROSSADJ USD_CAP A 2006 15931.068
CZE HHDI GROSSADJ USD_CAP A 2007 16992.204
CZE HHDI GROSSADJ USD_CAP A 2008 17934.526
CZE HHDI GROSSADJ USD_CAP A 2009 18629.119
CZE HHDI GROSSADJ USD_CAP A 2010 19246.264
CZE HHDI GROSSADJ USD_CAP A 2011 19394.281
CZE HHDI GROSSADJ USD_CAP A 2012 19842.068
CZE HHDI GROSSADJ USD_CAP A 2013 20841.747
CZE HHDI GROSSADJ USD_CAP A 2014 21889.796
CZE HHDI GROSSADJ USD_CAP A 2015 22313.393
CZE HHDI GROSSADJ USD_CAP A 2016 23663.665
CZE HHDI GROSSADJ USD_CAP A 2017 25424.300
CZE HHDI GROSSADJ USD_CAP A 2018 26770.884
CZE HHDI GROSSADJ USD_CAP A 2019 28746.851
CZE HHDI GROSSADJ USD_CAP A 2020 29167.703
CZE HHDI GROSSADJ USD_CAP A 2021 30784.869
CZE HHDI GROSSADJ USD_CAP A 2022 32737.702
EU HHDI GROSSADJ USD_CAP A 1999 15989.777
EU HHDI GROSSADJ USD_CAP A 2000 17409.650
EU HHDI GROSSADJ USD_CAP A 2001 18448.349
EU HHDI GROSSADJ USD_CAP A 2002 19699.645
EU HHDI GROSSADJ USD_CAP A 2003 19795.716
EU HHDI GROSSADJ USD_CAP A 2004 20598.225
EU HHDI GROSSADJ USD_CAP A 2005 20840.763
EU HHDI GROSSADJ USD_CAP A 2006 21876.344
EU HHDI GROSSADJ USD_CAP A 2007 22920.487
EU HHDI GROSSADJ USD_CAP A 2008 24077.420
EU HHDI GROSSADJ USD_CAP A 2009 24016.008
EU HHDI GROSSADJ USD_CAP A 2010 24919.860
EU HHDI GROSSADJ USD_CAP A 2011 25498.447
EU HHDI GROSSADJ USD_CAP A 2012 25991.972
EU HHDI GROSSADJ USD_CAP A 2013 26663.847
EU HHDI GROSSADJ USD_CAP A 2014 27076.528

Στόχος μας είναι να βρούμε τις αποστάσεις των εισοδημάτων διαφόρων χωρών. Ακολούθως θα εξετάσουμε ποιες χώρες είναι κοντά μεταξύ τους και πιο απόμερα από άλλες. Δηλαδή, ίσως κάποιες χώρες να έχουν μικρή απόσταση η μία από την άλλη, συγκριτικά με τις αποστάσεις που έχουν από τις υπόλοιπες χώρες. Με αυτόν τον τρόπο μπορούμε να σχηματίσουμε ομάδες χωρών που να γειτονεύουν μεταξύ τους στο ζήτημα των εισοδημάτων των νοικοκυριών.

Για να κάνουμε αυτή τη δουλειά θα χρειαστούμε τα πακέτα pheatmap και dplyr:

if(!require(pheatmap)){
  install.packages("pheatmap")
  library(pheatmap)
}
if(!require(dplyr)){
  install.packages("dplyr")
  library(dplyr)
}

Ακολούθως ορίζουμε τη συνάρτηση dentrogramma() εντός της οποίας θα πάει ο πίνακας δεδομένων μας (για την ακρίβεια, το τμήμα του που μας ενδιαφέρει):

dentrogramma <- function(stiles){
  stiles <- stiles %>% select_if(~ !any(is.na(.)))
  stiles_m <- as.matrix(stiles)
  stiles_m.t <- t(stiles_m)
  dist.stiles_m <- dist(stiles_m.t, diag = TRUE, upper = TRUE)
  dist.stiles_m <- as.matrix(dist.stiles_m)
  pheatmap(dist.stiles_m)
}

Η συνάρτηση dentrogramma() θα πρέπει ως όρισμα να δεχτεί έναν πίνακα με στήλες αυτά που θέλουμε να συσχετίσουμε. Δυστυχώς, έτσι όπως μάς δίνεται ο πίνακας eisodima δεν βολεύει, οπότε θα τον αλλάξουμε λιγάκι.

if(!require(reshape)){
  install.packages("reshape")
  library(reshape)
}
if(!require(reshape2)){
  install.packages("reshape2")
  library(reshape2)
}
eis <- eisodima[eisodima$SUBJECT == "GROSSADJ", c(1,6,7)]
eis_wide <- dcast(eis, TIME ~ LOCATION, value.var="Value")
TIME AUS AUT BEL CAN CHE CHL CRI CZE DEU DNK EA ESP EST EU FIN FRA GBR GRC HUN IRL ITA JPN KOR LTU LUX LVA MEX NLD NOR NZL POL PRT RUS SVK SVN SWE TUR USA
1970 3485.885 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 2832.119 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3377.988 NA 4105.496
1971 3641.872 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3099.704 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3579.003 NA 4436.849
1972 3946.028 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3356.174 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3739.747 NA 4771.308
1973 4432.880 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3733.819 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4011.567 NA 5284.992
1974 4908.010 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4244.231 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4589.083 NA 5748.871
1975 5318.220 NA NA NA NA NA NA NA NA NA NA NA NA NA 3435.589 4735.066 NA NA NA NA NA NA 1104.547 NA NA NA NA NA NA NA NA NA NA NA NA 5160.348 NA 6341.297
1976 5713.696 NA NA NA NA NA NA NA NA NA NA NA NA NA 3631.909 5106.246 NA NA NA NA NA NA 1303.207 NA NA NA NA NA NA NA NA NA NA NA NA 5619.641 NA 6840.435
1977 6077.951 NA NA NA NA NA NA NA NA NA NA NA NA NA 3844.817 5568.402 NA NA NA NA NA NA 1502.720 NA NA NA NA NA NA NA NA NA NA NA NA 6112.616 NA 7442.222
1978 6629.144 NA NA NA NA NA NA NA NA NA NA NA NA NA 4265.829 6288.025 NA NA NA NA NA NA 1760.093 NA NA NA NA NA 5495.748 NA NA NA NA NA NA 6442.328 NA 8217.870
1979 7194.022 NA NA NA NA NA NA NA NA NA NA NA NA NA 4927.451 6901.495 NA NA NA NA NA NA 1997.590 NA NA NA NA NA 6025.312 NA NA NA NA NA NA 7275.178 NA 9026.176
1980 8130.576 NA NA NA NA NA NA NA NA NA NA NA NA NA 5698.220 7661.887 NA NA NA NA NA NA 1996.101 NA NA NA NA NA 6871.999 NA NA NA NA NA NA 8198.404 NA 9945.435
1981 9194.158 NA NA NA NA NA NA NA NA NA NA NA NA NA 6266.981 8449.256 NA NA NA NA NA NA 2277.044 NA NA NA NA NA 7656.377 NA NA NA NA NA NA 8554.011 NA 10948.406
1982 9487.389 NA NA NA NA NA NA NA NA NA NA NA NA NA 6887.993 9113.494 NA NA NA NA NA NA 2550.252 NA NA NA NA NA 8104.736 NA NA NA NA NA NA 8904.959 NA 11655.913
1983 10136.780 NA NA NA NA NA NA NA NA NA NA NA NA NA 7447.896 9485.531 NA NA NA NA NA NA 2917.534 NA NA NA NA NA 8563.715 NA NA NA NA NA NA 9238.309 NA 12395.473
1984 10673.692 NA NA NA NA NA NA NA NA NA NA NA NA NA 7873.398 9783.906 NA NA NA NA NA NA 3329.729 NA NA NA NA NA 9139.470 NA NA NA NA NA NA 9701.912 NA 13563.239
1985 11253.906 NA NA NA NA NA NA NA NA NA NA NA NA NA 8414.575 10205.761 NA NA NA NA NA NA 3666.304 NA NA NA NA NA 9640.603 NA NA NA NA NA NA 10247.772 NA 14291.960
1986 11343.864 NA NA NA NA NA NA NA NA NA NA NA NA NA 8867.325 10663.260 NA NA NA NA NA NA 4215.515 NA NA NA NA NA 10026.399 NA NA NA NA NA NA 10782.531 NA 15026.052
1987 11809.622 NA NA NA NA NA NA NA NA NA NA NA NA NA 9605.111 11141.316 NA NA NA NA NA NA 4859.552 NA NA NA NA NA 10359.502 NA NA NA NA NA NA 11323.752 NA 15740.713
1988 12712.412 NA NA NA NA NA NA NA NA NA NA NA NA NA 10203.698 11881.954 NA NA NA NA NA NA 5550.632 NA NA NA NA NA 10776.929 NA NA NA NA NA NA 11749.885 NA 16957.776
1989 13563.115 NA NA NA NA NA NA NA NA NA NA NA NA NA 11226.770 12762.563 NA NA NA NA NA NA 6185.203 NA NA NA NA NA 11373.651 NA NA NA NA NA NA 12563.568 NA 18041.500
1990 14001.585 NA NA NA NA NA NA NA NA NA NA NA NA NA 11973.952 13791.425 NA NA NA NA NA NA 7038.669 NA NA NA NA NA 12038.215 NA NA NA NA NA NA 13419.565 NA 19018.803
1991 14390.616 NA NA NA NA NA NA NA NA NA NA NA NA NA 12500.020 14412.075 NA NA NA NA NA NA 8046.168 NA NA NA NA NA 12805.010 NA NA NA NA NA NA 14250.347 NA 19555.443
1992 14945.962 NA NA NA NA NA NA NA NA NA NA NA NA NA 12440.692 15108.959 NA NA NA NA NA NA 8642.596 NA NA NA NA NA 13604.695 NA NA NA NA NA NA 14958.209 NA 20624.052
1993 15514.533 NA NA 16631.04 NA NA NA NA NA NA NA NA NA NA 11991.971 15554.385 NA NA NA NA NA NA 9277.927 NA NA NA NA NA 14365.517 NA NA NA NA NA NA 14320.661 NA 21234.088
1994 16281.316 NA NA 16867.87 NA NA NA NA NA NA NA NA NA NA 11870.241 15920.023 NA NA NA NA NA 16124.25 9936.063 NA NA NA NA NA 14906.466 NA NA NA NA NA NA 14462.210 NA 22008.929
1995 16978.343 18508.10 17545.80 17172.78 20376.55 NA NA 9322.676 19221.72 15098.90 NA 12198.45 5371.263 NA 12926.274 16511.423 15336.25 13180.77 7913.345 12478.75 17947.35 16737.56 10665.440 4830.033 21933.09 3802.952 NA 16292.59 15534.270 NA 6482.480 11890.85 NA 6322.611 10678.73 14766.597 NA 22882.921
1996 17818.468 18923.76 17781.45 17417.80 20824.33 NA NA 10167.121 19863.79 15408.37 NA 12738.89 5605.009 NA 13145.381 17033.156 16379.89 13481.66 7885.117 13420.50 18437.59 17137.57 11475.794 5136.531 22215.84 4147.787 NA 16964.92 16516.947 NA 7011.874 12310.10 NA 7684.052 11210.99 15068.707 NA 23758.407
1997 18431.899 19225.73 18124.76 17919.34 22325.43 NA NA 10574.065 20065.94 15720.95 NA 13546.08 6046.528 NA 14038.978 17645.856 16779.04 13801.54 8021.232 14074.04 18886.72 17604.82 11775.035 5773.239 23515.41 4933.220 NA 17911.92 17226.052 NA 7587.631 12845.44 NA 8448.959 12017.11 15116.003 NA 24715.928
1998 19126.795 20111.57 18462.41 18498.48 22805.01 NA NA 10535.573 20352.32 16503.62 NA 14311.59 6309.131 NA 14724.251 18319.488 16812.33 14460.88 8264.326 15371.96 19165.22 17790.33 11662.327 6445.258 24250.31 5084.256 NA 18873.98 18199.823 13905.03 8095.991 13481.35 NA 8773.121 12382.23 15576.385 NA 26049.711
1999 20037.942 21027.50 19180.48 19270.55 23919.57 NA NA 10952.128 21299.52 16491.38 18428.78 14908.45 6509.669 15989.78 15726.963 19030.628 17699.95 14579.76 8558.932 15803.25 19666.52 18042.12 11982.712 6904.852 26252.79 5307.182 NA 19896.85 18708.594 14919.70 8565.941 14470.62 NA 8436.986 12987.71 16777.611 NA 27065.951
2000 21646.509 22906.55 21610.60 20296.17 25471.21 NA NA 11910.042 22437.31 17656.67 20059.72 16886.99 7230.047 17409.65 17212.733 21227.637 20018.88 15716.06 9404.981 17540.19 21229.26 19175.53 12496.052 7428.439 29560.73 6209.222 NA 22257.56 20394.844 14707.98 9317.449 15890.17 NA 9058.422 14351.00 18580.941 NA 28784.193
2001 22758.122 22909.95 22538.19 21295.05 26585.70 NA NA 12988.027 23545.71 18333.24 21176.15 18119.68 7687.426 18448.35 17500.839 22663.309 21416.60 16983.07 10222.954 19364.75 22056.92 19243.81 13034.264 7962.014 30833.10 6807.934 NA 23851.05 20683.187 15551.01 9912.086 16480.16 NA 9918.076 15166.63 19652.431 NA 29945.625
2002 23506.386 24433.16 24006.63 21851.11 27740.55 NA NA 13688.285 24520.58 19944.79 22496.90 19726.97 8433.636 19699.64 18888.246 24402.080 22764.18 18883.28 11420.774 20544.04 23210.11 20193.96 13878.622 9060.930 34486.70 7893.620 NA 25565.11 23283.042 15609.51 10616.662 17407.10 NA 10889.808 16515.26 21136.548 NA 31093.339
2003 24508.954 25103.18 23794.06 22332.98 27087.10 6991.815 NA 14255.285 25070.20 19934.46 22510.46 19863.00 9034.632 19795.72 19275.582 23597.840 23158.15 19470.47 11984.587 21085.78 23305.28 20868.04 14261.136 10024.146 34355.12 8426.765 9520.136 24509.68 23982.005 16373.17 10644.971 17600.79 NA 10632.477 16414.71 21093.610 NA 32345.470
2004 26247.551 26077.79 24222.50 23443.33 28050.71 7489.615 NA 14875.741 25971.50 20886.06 23314.20 20570.12 9841.056 20598.23 20787.004 24223.459 24874.05 20562.62 12776.072 22371.40 23880.47 21749.98 15244.055 11599.437 34446.87 9408.730 10162.472 25478.58 25345.252 17374.75 10963.838 18199.48 NA 11397.432 17191.53 21773.127 NA 33958.251
2005 26566.575 27118.16 24523.13 24238.49 28467.13 8042.508 NA 15267.994 26000.95 21067.22 23541.77 21092.42 10744.995 20840.76 20876.731 24746.963 24567.88 20437.17 13312.070 23489.77 23955.02 23049.17 15814.997 12045.450 34372.85 10330.037 10469.428 25671.35 26802.715 17600.15 10749.806 18875.55 NA 11766.725 17702.05 22067.487 NA 35202.533
2006 27700.588 28474.98 25592.28 25244.39 30329.13 9825.468 NA 15931.068 26889.65 22504.03 24675.28 22101.65 12072.913 21876.34 22155.819 25713.514 25787.06 22139.60 13806.451 24573.94 25102.99 23987.06 16656.659 13327.571 36305.26 11847.303 11533.187 27661.46 26353.428 19104.76 11504.303 19596.47 NA 12572.861 18426.68 23777.234 NA 37201.802
2007 29524.379 29403.53 26344.88 26587.71 33191.00 10216.699 NA 16992.204 27926.10 23709.72 25657.65 22364.83 13398.394 22920.49 24261.625 26992.067 26564.49 22952.81 13603.516 25428.33 26195.89 24916.38 17814.603 13959.607 36911.93 13236.459 11899.969 29186.94 28473.511 20622.43 12779.771 20045.30 NA 14208.597 19342.44 25738.981 NA 38661.992
2008 31051.323 30475.13 27855.56 27380.75 34749.28 11154.093 NA 17934.526 29093.34 24628.50 26711.95 23317.35 15100.499 24077.42 25978.242 27756.530 27163.08 24398.73 14139.740 26122.26 27278.69 25393.94 18514.727 15823.232 38702.35 14681.828 12568.167 30385.76 29772.301 21181.81 13760.153 20962.28 NA 16057.503 20688.68 27299.472 NA 40004.983
2009 30789.699 30400.99 27868.54 27327.32 34952.90 11106.267 NA 18629.119 29162.21 25269.41 26523.62 22991.20 14353.041 24016.01 26334.730 27878.784 26910.65 24535.09 14246.604 24867.80 26562.27 25581.22 18642.429 15040.675 38479.59 12783.557 12607.388 30119.92 30494.574 21493.45 14415.739 21057.70 NA 16397.992 19856.98 27267.492 11766.76 39622.459
2010 32599.999 31177.53 28779.45 28472.10 35143.96 11991.953 NA 19246.264 30704.56 27066.73 27360.75 22897.55 14690.851 24919.86 27630.554 29168.885 27632.94 22097.89 15220.738 25652.91 27571.64 26402.02 19674.989 16206.732 37908.74 13304.413 13016.870 29940.81 31286.700 22208.62 16204.693 21540.90 NA 18167.632 20514.56 27803.107 13264.28 40752.996
2011 33941.087 31746.48 29401.73 29113.96 35755.52 13349.621 NA 19394.281 32107.49 27671.86 27848.68 22982.97 15645.221 25498.45 28489.450 29757.890 27563.10 20129.69 16287.574 24627.06 27784.80 27299.67 20438.865 17293.575 39248.29 13227.527 14019.809 30360.10 32290.471 23343.70 16963.493 20912.36 15756.25 18149.415 21101.69 28934.173 14997.27 42186.857
2012 33934.614 33296.53 30451.08 29745.72 37098.35 14873.148 11946.29 19842.068 33295.39 28226.80 28241.20 22402.21 16236.752 25991.97 29373.984 30369.375 28630.65 18709.58 16531.752 25361.17 27218.03 28447.43 21244.041 18333.548 40660.67 14457.257 14254.292 31072.64 33728.837 23865.00 18043.957 20930.66 17162.98 18730.359 21099.82 30565.816 15597.32 43903.241
2013 36048.428 33971.82 31616.38 30676.67 38885.32 15937.145 12262.59 20841.747 34223.52 29302.66 28983.88 23021.40 17465.741 26663.85 30093.211 31388.021 29252.68 18672.50 17193.917 25043.76 27534.86 30474.35 21573.320 19736.420 43403.07 15351.141 14573.643 31685.55 35727.922 24794.44 18512.563 21837.33 18078.03 19313.862 21370.29 30645.242 17002.40 43860.834
2014 36816.129 34326.23 32229.04 31379.91 39673.36 16106.539 12876.30 21889.796 35129.69 29543.83 29391.38 23479.10 18319.152 27076.53 30263.213 31699.914 29726.97 19285.92 17543.066 24714.56 27373.35 30032.21 21915.956 20332.628 43282.86 16226.336 15097.599 31935.00 36475.100 24986.69 19291.696 21837.83 18620.04 19547.500 21463.65 31112.045 18268.46 45786.293
2015 37553.197 34413.53 32596.75 31939.54 40101.22 15766.643 13519.59 22313.393 35492.40 30507.18 29887.62 24640.78 19321.329 27598.42 30849.122 31890.702 30915.30 19593.34 17974.186 25600.05 27712.08 30597.03 23958.297 21186.422 43476.14 17350.203 16019.172 32193.96 36417.818 25507.73 19960.594 22627.67 18184.05 20429.691 21849.12 31745.777 19693.68 47228.490
2016 38951.606 36227.96 33824.04 33594.30 41097.63 16718.900 14675.89 23663.665 37893.96 31950.53 31591.45 26018.39 20727.317 29267.37 32273.223 33550.670 31697.77 20285.62 18933.322 27111.00 29475.29 29290.35 24190.598 23290.251 44505.60 18769.073 17120.379 33258.29 36933.122 27383.14 21330.685 23946.10 18163.07 19929.424 23387.75 32921.146 20641.01 48258.378
2017 38813.740 36984.31 34777.22 34554.28 40421.34 16874.575 16130.49 25424.300 39272.16 33441.28 32617.54 27136.46 21826.468 30339.07 33377.126 34316.313 32417.63 20670.30 19791.348 28262.88 30434.96 29915.59 24484.535 24464.784 46535.09 19936.933 16924.633 34379.96 39225.340 28766.35 22072.020 24508.13 19082.87 20040.425 24665.90 33389.359 21799.98 50047.203
2018 39522.009 38190.87 35932.89 35338.52 41191.34 17977.755 16619.16 26770.884 41169.93 34714.16 33861.81 27746.24 23485.990 31587.07 34675.191 35280.413 33296.77 21202.73 21482.318 29187.32 31469.14 30777.44 25736.627 25808.382 48794.24 21259.527 17156.358 36263.62 40477.565 29567.18 23176.713 26052.47 19843.44 21195.000 26141.81 34174.338 NA 52451.297
2019 40000.975 40065.86 38140.76 34928.14 42806.02 18768.180 17161.12 28746.851 42752.84 36126.09 35733.39 29804.62 24916.118 33488.86 36302.856 37576.942 34823.11 22824.60 23137.542 30885.33 33054.37 30918.21 26307.279 28781.826 50089.43 22763.723 17315.863 38038.64 41853.073 32605.69 25081.293 27747.04 20590.29 22840.521 28202.94 35654.613 NA 54747.165
2020 42423.425 39851.89 39526.31 37643.60 43637.31 20602.715 16331.38 29167.703 43760.28 36639.35 36190.37 28802.28 25793.088 34096.34 37106.520 38534.440 34909.47 22156.81 23316.052 31761.59 33046.60 32673.06 27892.381 30631.798 50856.62 23596.965 16348.793 39703.22 41855.066 NA 26686.187 27334.19 NA 23075.991 29489.30 35622.158 NA 58653.433
2021 45052.297 41858.51 40778.80 38871.19 44406.87 22274.738 NA 30784.869 44443.73 37395.27 37288.90 29547.68 26945.285 35295.43 37699.063 39851.514 36793.16 23878.64 25051.244 33017.67 34227.10 32368.42 28991.052 30873.771 51465.38 25734.731 17324.380 41258.36 43850.823 NA 26199.303 28180.87 NA 23804.962 30892.60 36993.173 NA 62334.170
2022 NA NA NA 40904.26 NA NA NA 32737.702 48071.69 40497.19 40525.45 NA NA 38473.40 40327.246 NA NA NA NA NA 37400.72 NA NA NA NA NA NA 45215.40 NA NA NA 31068.96 NA 25849.352 NA 40113.308 NA NA

Βλέπουμε ότι κάθε χώρα έχει μια στήλη με τα εισοδήματα των νοικοκυριών της σε διάφορα έτη. Προφανώς η πρώτη στήλη με τα έτη δεν είναι επιθυμητή, οπότε κάθε φορά θα την αφαιρούμε.

Σημειωταίον ότι η εντολή %>% select_if(~ !any(is.na(.))) στον ορισμό της συνάρτησης dentrogramma() εξοστρακίζει τις στήλες που έχουν έστω και μία μη διαθέσιμη τιμή (NA). Οπότε, αν γράψουμε:

dentrogramma(eis_wide[,-1])

εξαφανίζονται όλες οι στήλες, αφού κάθε μία τους περιέχει μία τουλάχιστον μη διαθέσιμη τιμή (NA). Συνεπώς παίρνουμε το μήνυμα σφάλματος: Error in hclust(d, method = method) : must have n >= 2 objects to cluster.

Σε πρώτη φάση, λοιπόν, θα εξετάσουμε την απόκλιση των χωρών αν συνυπολογίσουμε τις οικονομίες τους τα έτη 2012 έως 2020, οπότε κάνουμε την ανάλογη επιλογή από τον πίνακα eis_wide:

eis12_20 <- eis_wide[43:51,-1]

Ακολούθως γράφουμε:

dentrogramma(eis12_20)

Έτσι προκύπτει ένας πίνακας που αφενός παρουσιάζει τις αποστάσεις μεταξύ των χωρών, αφετέρου ένα δεντρόγραμμα που δείχνει τις ομοδοποιήσεις που σχηματίζονται.

Στον πίνακα αυτόν όσο πιο κόκκινο είναι ένα κελί, τόσο πιο μεγάλη είναι η απόσταση των χωρών που αυτό αντιστοιχεί. Έτσι, η Κόστα Ρίκα (CRI) φαίνεται να έχει μεγάλη απόσταση από τις ΗΠΑ (USA), ενώ η Γαλλία (FRA) φαίνεται να έχει μικρή απόσταση από τον Καναδά (CAN). Η δε Ελλάδα (GRC) έχει μικρή απόσταση από τη Σλοβακία (SVK), την Εσθονία (EST) και την Πολωνία (POL) και γι’ αυτό το λόγο το δεντρόγραμμα υποδεικνύει ότι αυτές σχηματίζουν μιαν ομάδα. Γειτονική ομάδα σε αυτές, αλλά πάντως διαφορετική, είναι η ομάδα της Κόστα Ρίκα (CRI), της Χιλής (CHL) και του Μεξικού (MEX). Από την άλλη, εντελώς απόμακρη είναι αυτή που σχηματίζει η Γαλλία (FRA) με το Βέλγιο (BEL).

Αν θελήσουμε να εξετάσουμε τις αποστάσεις των χωρών (από άποψη εισοδημάτων των νοικοκυριών, φυσικά) το έτος 2021, γράφουμε:

eis2021 <- eis_wide[52,-1]
dentrogramma(eis2021)

Αυτή τη φορά η Ελλάδα (GRC) σχηματίζει μιαν ομάδα με τη Χιλή (CHL) και το Μεξικό (MEX). Η Εσθονία πλέον γειτονεύει (οικονομικά) με την Πορτογαλία (PRT).

Κλείνοντας, θα πρέπει να αναφέρουμε κάτι που μπορεί να σκέφτηκε ήδη ο αναγνώστης. Πώς ορίστηκε η απόσταση μεταξύ των εισοδημάτων; Αν π.χ. εγώ βγάλω τους τελευταίους 3 μήνες 1200€, 1000€ και 1100€, ενώ η Γιάννα 1150€, 1300€ και 1000€, τότε πώς μπορώ να μετρήσω την απόσταση των εισοδημάτων μας; Όλοι καταλαβαίνουμε πώς μετράμε την γεωγραφική απόσταση Ελλάδας-Χιλής. Πώς μετράμε όμως την εισοδηματική τους απόσταση;

Η συνηθισμένη απάντηση είναι «Με την ευκλείδεια μετρική, λες και τα εισοδήματα σχηματίζουν σημεία στο χώρο». Έτσι, στην περίπτωση εμού και της Γιάννας έχουμε δύο σημεία σ’ ένα χώρο 3 διαστάσεων, όπου το ένα σημείο έχει συντεταγμένες τα εισοδήματα του ενός και το άλλο τα εισοδήματα του άλλου. Η απόσταση των εισοδημάτων μας είναι η μεταξύ τους απόσταση σε αυτόν τον τρισδιάστατο χώρο.

Φαντάζει λίγο αυθαίρετο να παρομοιάζουμε τα λεφτά με σημεία στο χώρο, ίσως και παράλογο. Στην πραγματικότητα όμως πολλά μαθηματικά εργαλεία βασίζονται στην ευκλείδεια μετρική, όπως π.χ. η τυπική απόκλιση. Αν μάλιστα λάβουμε υπ’ όψιν την ισοδυναμία της ευκλείδιας μετρικής με άλλες που προτείνονται, παύουμε να αισθανόμαστε τόσο αυθαίρετη την υιοθέτησή της ως τρόπο υπολογισμού αποστάσεων. Σε παρόμοια πλαίσια συνηγορεί και η ανισότητα Chebyshev στη γενικευμένη της μορφή. Ήδη όμως είπαμε πολλά. Όπως και να ’χει, ο αναγνώστης καλό είναι να έχει σκεφτεί ποια μετρική θα χρησιμοποιήσει, πριν αρχίσει να βασίζεται πάνω της για εξαγωγή συμπερασμάτων (για περισσότερα βλ. εδώ).

2 Κυκλικό δεντρόγραμμα

Στην περίπτωση που δεν ενδιαφερόμαστε να έχουμε τη μήτρα απόσταση, αλλά θέλουμε να έχουμε μόνο το δεντροδιάγραμμα, τότε μπορούμε να πράξουμε ως ακολούθως. Αρχικά εγκαθιστούμε τα πακέτα dendextend και circlize.

if(!require(dendextend)){
  install.packages("dendextend")
  library(dendextend)
}
if(!require(circlize)){
  install.packages("circlize")
  library(circlize)
}

Ακολούθως ορίζουμε την συνάρτηση kykliko_dentrogrammaBW().

kykliko_dentrogrammaBW <- function(stiles,mikos){
  stiles <- stiles %>% select_if(~ !any(is.na(.)))
  stiles_m <- as.matrix(stiles)
  stiles_m.t <- t(stiles_m)
  dist.stiles_m <- dist(stiles_m.t, diag = TRUE, upper = TRUE)
  hc <- as.dendrogram(hclust(dist.stiles_m))
  circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = mikos)
}

Η πρώτη παράμετρος είναι ίδια με αυτή που χρησιμοποιούσε η συνάρτηση dentrogramma(). Η δεύτερη είναι ένας αριθμός πουδείχνει πόσο μεγάλα «κλαδιά» θέλουμε να έχει το δεντροδιάγραμμά μας. Προσοχή! Πολύ μεγάλα κλαδιά μπορεί να οδηγήσουν σε μηνύματα σφάλματος! Ας το δούμε όμως και πρακτικά:

kykliko_dentrogrammaBW(eis2021, mikos = 0.2)

Το δεντρόγραμμα το φτιάξαμε κυκλικό, για να μπορεί να χωράει όσον το δυνατόν περισσότερα αντικείμενα προς σύγκριση. Ας αλλάξουμε τώρα την mikos = 0.2 σε mikos = 0.7

kykliko_dentrogrammaBW(eis2021, mikos = 0.7)

Παρατηρούμε ότι το μήκος των κλαδιών μεγάλωσε.

Με αυτή την κατασκευή μπορούμε να αυτοματοποιήσουμε και την εύρεση των ομάδων των πλησιέστερων γειτώνων. Θα αλλάξουμε λίγο τη συνάρτηση kykliko_dentrogrammaBW() και θα φτιάξουμε μια νέα, την kykliko_dentrogrammaCOL().

kykliko_dentrogrammaCOL <- function(stiles,mikos,omades){
  stiles <- stiles %>% select_if(~ !any(is.na(.)))
  stiles_m <- as.matrix(stiles)
  stiles_m.t <- t(stiles_m)
  dist.stiles_m <- dist(stiles_m.t, diag = TRUE, upper = TRUE)
  hc <- as.dendrogram(hclust(dist.stiles_m))
  hc <- hc %>%
  color_branches(k = omades) %>%
  color_labels(k = omades)

# Fan tree plot with colored labels
circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = mikos) 
}

Η παράμετρος omades είναι για να μας χωρίσει τις προς σύγκριση χώρες σε ομάδες, το πλήθος των οποίων καθορίζεται από την τιμή της εν λόγω παραμέτρου. Έτσι γράφοντας omades = 5 χωρίζονται οι χώρες σε 5 ομάδες βάσει των μεταξύ τους αποστάσεων.

kykliko_dentrogrammaCOL(eis2021, mikos = 0.7, omades = 5)

Από την άλλη, αν γράψουμε omades = 10, οι ομάδες που σχηματίζονται είνα πλέον 10.

kykliko_dentrogrammaCOL(eis2021, mikos = 0.7, omades = 10)

Συνολικά γράψαμε τον παρακάτω κώδικα:

if(!require(pheatmap)){
  install.packages("pheatmap")
  library(pheatmap)
}
if(!require(dplyr)){
  install.packages("dplyr")
  library(dplyr)
}
dentrogramma <- function(stiles){
  stiles <- stiles %>% select_if(~ !any(is.na(.)))
  stiles_m <- as.matrix(stiles)
  stiles_m.t <- t(stiles_m)
  dist.stiles_m <- dist(stiles_m.t, diag = TRUE, upper = TRUE)
  dist.stiles_m <- as.matrix(dist.stiles_m)
  pheatmap(dist.stiles_m)
}
if(!require(reshape)){
  install.packages("reshape")
  library(reshape)
}
if(!require(reshape2)){
  install.packages("reshape2")
  library(reshape2)
}
eis <- eisodima[eisodima$SUBJECT == "GROSSADJ", c(1,6,7)]
eis_wide <- dcast(eis, TIME ~ LOCATION, value.var="Value")
dentrogramma(eis_wide[,-1])
eis12_20 <- eis_wide[43:51,-1]
dentrogramma(eis12_20)
eis2021 <- eis_wide[52,-1]
dentrogramma(eis2021)
if(!require(dendextend)){
  install.packages("dendextend")
  library(dendextend)
}
if(!require(circlize)){
  install.packages("circlize")
  library(circlize)
}
kykliko_dentrogrammaBW <- function(stiles,mikos){
  stiles <- stiles %>% select_if(~ !any(is.na(.)))
  stiles_m <- as.matrix(stiles)
  stiles_m.t <- t(stiles_m)
  dist.stiles_m <- dist(stiles_m.t, diag = TRUE, upper = TRUE)
  hc <- as.dendrogram(hclust(dist.stiles_m))
  circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = mikos)
}
kykliko_dentrogrammaBW(eis2021, mikos = 0.2)
kykliko_dentrogrammaBW(eis2021, mikos = 0.7)
kykliko_dentrogrammaCOL <- function(stiles,mikos,omades){
  stiles <- stiles %>% select_if(~ !any(is.na(.)))
  stiles_m <- as.matrix(stiles)
  stiles_m.t <- t(stiles_m)
  dist.stiles_m <- dist(stiles_m.t, diag = TRUE, upper = TRUE)
  hc <- as.dendrogram(hclust(dist.stiles_m))
  hc <- hc %>%
  color_branches(k = omades) %>%
  color_labels(k = omades)

# Fan tree plot with colored labels
circlize_dendrogram(hc,
                    labels_track_height = NA,
                    dend_track_height = mikos) 
}
kykliko_dentrogrammaCOL(eis2021, mikos = 0.7, omades = 5)
kykliko_dentrogrammaCOL(eis2021, mikos = 0.7, omades = 10)