Basic Usage
data("countryGDP")
countryGDP
# Cluster Countries using GDP from year 2000 to year 2014, with 2014 as reference year
clubs <- findClubs(countryGDP,
dataCol = 2:35,
regions = 1,
refCol = 35,
time_trim = 1/3,
cstar = 0,
HACmethod = "AQSB")
summary(clubs)
Number of convergence clubs: 5
Number of divergent units: 3
# of regions
----------- ---------------
club1 | 84
club2 | 18
club3 | 26
club4 | 14
club5 | 7
divergent | 3
# Merge clusters using Phillips and Sul (2009) method
mclubs <- mergeClubs(clubs,
mergeMethod ='PS',
mergeDivergent = FALSE)
summary(mclubs)
Number of convergence clubs: 4
Number of divergent units: 3
# of regions | merged clubs
----------- --------------- --------------
club1 | 84 | clubs: 1
club2 | 18 | clubs: 2
club3 | 40 | clubs: 3, 4
club4 | 7 | clubs: 5
divergent | 3 | clubs:
# Merge clusters using von Lyncker and Thoennessen (2016) method
mclubs <- mergeClubs(clubs,
mergeMethod = 'vLT',
mergeDivergent = FALSE)
summary(mclubs)
Number of convergence clubs: 4
Number of divergent units: 3
# of regions | merged clubs
----------- --------------- --------------
club1 | 84 | clubs: 1
club2 | 18 | clubs: 2
club3 | 26 | clubs: 3
club4 | 21 | clubs: 4, 5
divergent | 3 | clubs:
# Plot Transition Paths for all regions in each club and average Transition Path
# for all clubs
plot(mclubs)

# Plot Only average Transition Paths
plot(mclubs, clubs=NULL, legend=TRUE)

Using the World Income Database: ps2009.csv
ps2009 <- read_csv("https://raw.githubusercontent.com/ds777/sample-datasets/master/ps2009.csv")
Parsed with column specification:
cols(
country = col_character(),
year = col_integer(),
pgdp = col_double()
)
Express variables in log terms
ps2009_log <- ps2009 %>%
mutate_if(is.numeric, funs("log" = log(.))) %>%
select(country, y1970_log:y2003_log)
ps2009_log
It would be ideal to have long-run trend of these variables, but for the moment, let us use them as they are.
Finding convergence clubs
Very important for the code to work: the data should be of type data.frame and not tbl_df
ps2009_log <- as.data.frame(ps2009_log)
clubs <- findClubs(ps2009_log, # dataframe containing data
dataCol = 2:35, # integer vector with the column indices of the data
regions = 1, # integer scalar indicating the column with codes of the regions
refCol = 35, # integer scalar indicating the column to use for ordering data
time_trim = 1/3, # PS suggest to discard the first third of the period.
cstar = 0, # the threshold value of the sieve criterion
HACmethod = "AQSB") # for the truncation of the Quadratic Spectral kernel
summary(clubs)
Number of convergence clubs: 5
Number of divergent units: 1
# of regions
----------- ---------------
club1 | 85
club2 | 27
club3 | 20
club4 | 9
club5 | 10
divergent | 1
Merging clusters using Phillips and Sul (2009) method
mclubs_ps <- mergeClubs(clubs,
mergeMethod ='PS',
mergeDivergent = FALSE,
threshold = -1.65)
summary(mclubs_ps)
Number of convergence clubs: 4
Number of divergent units: 1
# of regions | merged clubs
----------- --------------- --------------
club1 | 85 | clubs: 1
club2 | 27 | clubs: 2
club3 | 29 | clubs: 3, 4
club4 | 10 | clubs: 5
divergent | 1 | clubs:
Merging clusters using von Lyncker and Thoennessen (2016).
mclubs_vlt <- mergeClubs(clubs,
mergeMethod ='vLT',
mergeDivergent = FALSE,
threshold = -1.65)
summary(mclubs_vlt)
Number of convergence clubs: 4
Number of divergent units: 1
# of regions | merged clubs
----------- --------------- --------------
club1 | 85 | clubs: 1
club2 | 27 | clubs: 2
club3 | 29 | clubs: 3, 4
club4 | 10 | clubs: 5
divergent | 1 | clubs:
Plot Transition Paths for all regions in each club and the average transition path for each club
For Phillips and Sul (2009)

For von Lyncker and Thoennessen (2016)

Plot Only average Transition Paths
plot(mclubs_ps, clubs=NULL, legend=TRUE)

plot(mclubs_vlt, clubs=NULL, legend=TRUE)

LS0tCnRpdGxlOiAiQ29udmVyZ2VuY2VDbHViIHBhY2thZ2UiCnN1YnRpdGxlOiAiU3VidGl0bGUiCmF1dGhvcjogIkF1dGhvciIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogZmFsc2UKICAgICAgc21vb3RoX3Njcm9sbDogZmFsc2UKICAgIHRvY19kZXB0aDogNAogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93IgogICAgdGhlbWU6ICJjb3NtbyIKICAgIGhpZ2hsaWdodDogIm1vbm9jaHJvbWUiCiAgICBkZl9wcmludDogImthYmxlIgogIGdpdGh1Yl9kb2N1bWVudDogZGVmYXVsdAotLS0KCjxzdHlsZT4KCmgxLnRpdGxlIHsgCiAgZm9udC1zaXplOiAxOHB0OyAKICBjb2xvcjogRGFya0JsdWU7IAp9IAoKYm9keSwgaDEsIGgyLCBoMywgaDQgewogICAgZm9udC1mYW1pbHk6ICJQYWxhdGlubyIsIHNlcmlmOwp9Cgpib2R5IHsKICAgIGZvbnQtc2l6ZTogMTJwdDsKfQoKLyogSGVhZGVycyAqLwpoMSxoMixoMyxoNCxoNSxoNnsKICBmb250LXNpemU6IDE0cHQ7CiAgY29sb3I6ICMwMDAwOEI7Cn0KCmJvZHkgewogICAgY29sb3I6ICMzMzMzMzM7Cn0KYSwgYTpob3ZlciB7CiAgICBjb2xvcjogIzhCM0E2MjsKfQpwcmUgewogICAgZm9udC1zaXplOiAxMnB4Owp9Cjwvc3R5bGU+CgoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZnVuTW9kZWxpbmcpICAgIyBkZXNjcmlwdGl2ZSBzdGF0aXN0aWNzCmxpYnJhcnkocmV0aWN1bGF0ZSkgICAgIyB0aGUgcHl0aG9uIGVuZ2luZQpsaWJyYXJ5KGh0bWx3aWRnZXRzKSAgICMgaW50ZXJhY3RpdmUgZG9jdW1lbnRzCmxpYnJhcnkobGVhZmxldCkgICAgICAgIyBpbnRlcmFjdGl2ZSBtYXBzCmxpYnJhcnkoZHlncmFwaHMpICAgICAgIyBpbnRlcmFjdGl2ZSB0aW1lIHNlcmllcwpsaWJyYXJ5KHBsb3RseSkgICAgICAgICMgaW50ZXJhY3RpdmUgZmlndXJlcwpsaWJyYXJ5KFdWUGxvdHMpICAgICAgICMgQ29tbW9uIFBsb3RzIGZvciBBbmFseXNpcwpsaWJyYXJ5KERUKSAgICAgICAgICAgICMgaW50ZXJhdGl2ZSB0YWJsZXMKI2xpYnJhcnkoa2FibGVFeHRyYSkgICAjIGh0bWwgdGFibGVzIApsaWJyYXJ5KFJFQVQpICAgICAgICAgICMgcmVnaW9uYWwgYW5kIGVjb25vbWljIGFuYWx5c2lzIHRvb2xib3gKbGlicmFyeShwZGZDbHVzdGVyKSAgICAjIGRlbnNpdHkgYmFzZWQgY2x1c3RlcnMKbGlicmFyeShtYXJrb3ZjaGFpbikgICAjIGRpc2NyZXRlIHRpbWUgbWFya292IGNoYWlucwpsaWJyYXJ5KGRpYWdyYW0pICAgICAgICMgZHJhd2luZyBtYXJrb3YgY2hhaW5zCmxpYnJhcnkoQ29udmVyZ2VuY2VDbHVicykgIyBjb252ZXJnZW5jZSBjbHVicwpgYGAKCgojICBCYXNpYyBVc2FnZQoKYGBge3J9CmRhdGEoImNvdW50cnlHRFAiKQpjb3VudHJ5R0RQCmBgYAoKCmBgYHtyfQojIENsdXN0ZXIgQ291bnRyaWVzIHVzaW5nIEdEUCBmcm9tIHllYXIgMjAwMCB0byB5ZWFyIDIwMTQsIHdpdGggMjAxNCBhcyByZWZlcmVuY2UgeWVhcgpjbHVicyA8LSBmaW5kQ2x1YnMoY291bnRyeUdEUCwgCiAgICAgICAgICAgICAgICAgICBkYXRhQ29sID0gMjozNSwgCiAgICAgICAgICAgICAgICAgICByZWdpb25zID0gMSwgCiAgICAgICAgICAgICAgICAgICByZWZDb2wgPSAzNSwgCiAgICAgICAgICAgICAgICAgICB0aW1lX3RyaW0gPSAxLzMsIAogICAgICAgICAgICAgICAgICAgY3N0YXIgPSAwLCAKICAgICAgICAgICAgICAgICAgIEhBQ21ldGhvZCA9ICJBUVNCIikKc3VtbWFyeShjbHVicykKYGBgCgoKYGBge3J9CiMgTWVyZ2UgY2x1c3RlcnMgdXNpbmcgUGhpbGxpcHMgYW5kIFN1bCAoMjAwOSkgbWV0aG9kCm1jbHVicyA8LSBtZXJnZUNsdWJzKGNsdWJzLCAKICAgICAgICAgICAgICAgICAgICAgbWVyZ2VNZXRob2QgPSdQUycsIAogICAgICAgICAgICAgICAgICAgICBtZXJnZURpdmVyZ2VudCA9IEZBTFNFKQpzdW1tYXJ5KG1jbHVicykKYGBgCgoKYGBge3J9CiMgTWVyZ2UgY2x1c3RlcnMgdXNpbmcgdm9uIEx5bmNrZXIgYW5kIFRob2VubmVzc2VuICgyMDE2KSBtZXRob2QKbWNsdWJzIDwtIG1lcmdlQ2x1YnMoY2x1YnMsIAogICAgICAgICAgICAgICAgICAgICBtZXJnZU1ldGhvZCA9ICd2TFQnLCAKICAgICAgICAgICAgICAgICAgICAgbWVyZ2VEaXZlcmdlbnQgPSBGQUxTRSkKc3VtbWFyeShtY2x1YnMpCmBgYAoKYGBge3J9CiMgUGxvdCBUcmFuc2l0aW9uIFBhdGhzIGZvciBhbGwgcmVnaW9ucyBpbiBlYWNoIGNsdWIgYW5kIGF2ZXJhZ2UgVHJhbnNpdGlvbiBQYXRoCiMgZm9yIGFsbCBjbHVicwpwbG90KG1jbHVicykKYGBgCgoKYGBge3J9CiMgUGxvdCBPbmx5IGF2ZXJhZ2UgVHJhbnNpdGlvbiBQYXRocwpwbG90KG1jbHVicywgY2x1YnM9TlVMTCwgbGVnZW5kPVRSVUUpCmBgYAoKCiMgVXNpbmcgdGhlIFdvcmxkIEluY29tZSBEYXRhYmFzZTogcHMyMDA5LmNzdgoKYGBge3J9CnBzMjAwOSA8LSByZWFkX2NzdigiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2RzNzc3L3NhbXBsZS1kYXRhc2V0cy9tYXN0ZXIvcHMyMDA5LmNzdiIpCnBzMjAwOQpgYGAKCiMjIFJlc2hhcGluZyBmcm9tIGxvbmcgdG8gd2lkZSAoY29udHJvbGluZyBuYW1lcykKVXNlZnVsIHJlZmVyZW5jZSBmb3IgW0hvdyB0byBjb250cm9sIG5ldyB2YXJpYWJsZXMnIG5hbWVzIGFmdGVyIHRpZHlyJ3Mgc3ByZWFkXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTc4ODE5NS9ob3ctdG8tY29udHJvbC1uZXctdmFyaWFibGVzLW5hbWVzLWFmdGVyLXRpZHlycy1zcHJlYWQpCgpgYGB7cn0KcHMyMDA5IDwtIHBzMjAwOSAlPiUgCiAgbXV0YXRlKHllYXIgPSBwYXN0ZSgneScsIHllYXIsIHNlcD0iIikpICU+JSAKICBzcHJlYWQoeWVhciwgcGdkcCkKcHMyMDA5CmBgYAoKCiMjIEV4cHJlc3MgdmFyaWFibGVzIGluIGxvZyB0ZXJtcwoKYGBge3J9CnBzMjAwOV9sb2cgPC0gcHMyMDA5ICU+JSAKICBtdXRhdGVfaWYoaXMubnVtZXJpYywgZnVucygibG9nIiA9IGxvZyguKSkpICU+JSAKICBzZWxlY3QoY291bnRyeSwgeTE5NzBfbG9nOnkyMDAzX2xvZykKcHMyMDA5X2xvZwpgYGAKCgpJdCB3b3VsZCBiZSBpZGVhbCB0byBoYXZlIGxvbmctcnVuIHRyZW5kIG9mIHRoZXNlIHZhcmlhYmxlcywgYnV0IGZvciB0aGUgbW9tZW50LCBsZXQgdXMgdXNlIHRoZW0gYXMgdGhleSBhcmUuCgoKIyMgRmluZGluZyBjb252ZXJnZW5jZSBjbHVicwoKVmVyeSBpbXBvcnRhbnQgZm9yIHRoZSBjb2RlIHRvIHdvcms6IHRoZSBkYXRhIHNob3VsZCBiZSBvZiB0eXBlIGBkYXRhLmZyYW1lYCBhbmQgbm90IGB0YmxfZGZgCgpgYGB7cn0KcHMyMDA5X2xvZyA8LSBhcy5kYXRhLmZyYW1lKHBzMjAwOV9sb2cpCmBgYAoKCmBgYHtyfQpjbHVicyA8LSBmaW5kQ2x1YnMocHMyMDA5X2xvZywgICAgICAjIGRhdGFmcmFtZSBjb250YWluaW5nIGRhdGEgCiAgICAgICAgICAgICAgICAgICBkYXRhQ29sID0gMjozNSwgICMgaW50ZWdlciB2ZWN0b3Igd2l0aCB0aGUgY29sdW1uIGluZGljZXMgb2YgdGhlIGRhdGEKICAgICAgICAgICAgICAgICAgIHJlZ2lvbnMgPSAxLCAgICAgIyBpbnRlZ2VyIHNjYWxhciBpbmRpY2F0aW5nIHRoZSBjb2x1bW4gd2l0aCBjb2RlcyBvZiB0aGUgcmVnaW9ucwogICAgICAgICAgICAgICAgICAgcmVmQ29sID0gMzUsICAgICAjIGludGVnZXIgc2NhbGFyIGluZGljYXRpbmcgdGhlIGNvbHVtbiB0byB1c2UgZm9yIG9yZGVyaW5nIGRhdGEKICAgICAgICAgICAgICAgICAgIHRpbWVfdHJpbSA9IDEvMywgIyBQUyBzdWdnZXN0IHRvIGRpc2NhcmQgdGhlIGZpcnN0IHRoaXJkIG9mIHRoZSBwZXJpb2QuCiAgICAgICAgICAgICAgICAgICBjc3RhciA9IDAsICAgICAgICMgdGhlIHRocmVzaG9sZCB2YWx1ZSBvZiB0aGUgc2lldmUgY3JpdGVyaW9uCiAgICAgICAgICAgICAgICAgICBIQUNtZXRob2QgPSAiQVFTQiIpICMgZm9yIHRoZSB0cnVuY2F0aW9uIG9mIHRoZSBRdWFkcmF0aWMgU3BlY3RyYWwga2VybmVsCnN1bW1hcnkoY2x1YnMpCmBgYAoKIyMgTWVyZ2luZyBjbHVzdGVycyB1c2luZyBQaGlsbGlwcyBhbmQgU3VsICgyMDA5KSBtZXRob2QgCgpgYGB7cn0KbWNsdWJzX3BzIDwtIG1lcmdlQ2x1YnMoY2x1YnMsIAogICAgICAgICAgICAgICAgICAgICAgICBtZXJnZU1ldGhvZCA9J1BTJywgCiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGl2ZXJnZW50ID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IC0xLjY1KQpzdW1tYXJ5KG1jbHVic19wcykKYGBgCgoKIyMgTWVyZ2luZyBjbHVzdGVycyB1c2luZyB2b24gTHluY2tlciBhbmQgVGhvZW5uZXNzZW4gKDIwMTYpLgoKYGBge3J9Cm1jbHVic192bHQgPC0gbWVyZ2VDbHVicyhjbHVicywgCiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlTWV0aG9kID0ndkxUJywgCiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGl2ZXJnZW50ID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IC0xLjY1KQpzdW1tYXJ5KG1jbHVic192bHQpCmBgYAoKIyMgUGxvdCBUcmFuc2l0aW9uIFBhdGhzIGZvciBhbGwgcmVnaW9ucyBpbiBlYWNoIGNsdWIgYW5kIHRoZSBhdmVyYWdlIHRyYW5zaXRpb24gcGF0aCBmb3IgZWFjaCBjbHViCgpGb3IgUGhpbGxpcHMgYW5kIFN1bCAoMjAwOSkKCmBgYHtyfQpwbG90KG1jbHVic19wcykKYGBgCgoKRm9yIHZvbiBMeW5ja2VyIGFuZCBUaG9lbm5lc3NlbiAoMjAxNikKCmBgYHtyfQpwbG90KG1jbHVic192bHQpCmBgYAoKCiMjIFBsb3QgT25seSBhdmVyYWdlIFRyYW5zaXRpb24gUGF0aHMKCmBgYHtyfQpwbG90KG1jbHVic19wcywgY2x1YnM9TlVMTCwgbGVnZW5kPVRSVUUpCmBgYAoKCgpgYGB7cn0KcGxvdChtY2x1YnNfdmx0LCBjbHVicz1OVUxMLCBsZWdlbmQ9VFJVRSkKYGBgCgoKCiMgUmVmZXJlbmNlcwoKLSA8aHR0cHM6Ly9naXRodWIuY29tL3Job2Jpcy9Db252ZXJnZW5jZUNsdWJzPg==