REDCAP

Regionalization with dynamically constrained agglomerative clustering and partitioning (REDCAP) is developed by D. Guo (2008). Like SKATER, REDCAP starts from building a spanning tree in 4 different approaches (single-linkage, average-linkage, complete-linkage, and wards-linkage). Then, REDCAP provides 2 different approaches (first‐order and full-order constraining) to prune the tree to find clusters. The REDCAP with first-order approach using a minimum spanning tree is exactly the same as SKATER. For more information, please read https://geodacenter.github.io/workbook/9c_spatial3/lab9c.html#redcap

redcap()

function redcap(
    WeightResult w,
    Number k, 
    Array vals,
    String method,
    Number min_bound, 
    Array bound_vals,
    String scale_method,
    String distance_type)

Arguments

Name

Type

Description

weights

WeightsResult

The weights object WeightsResult

k

Number

The number of clusters

vals

Array

The list of numeric vectors of the selected variable

method

String

The REDCAP method: {'single-linkage', 'average-linkage', 'complete-linkage', 'Ward-linkage'}.

min_bound

Number

The minimum value that the sum value of the bounding variable in each cluster should be greater than

bound_vals

Array

The numeric vector of the selected bounding variable

scale_method

String

The scaling method: {'raw', 'standardize', 'demean', 'mad', 'range_standardize', 'range_adjust'}

distance_method

String

The distance method: {"euclidean", "manhattan"}

Return

Type

Description

ClusteringResult

The Clustering object: {'total_ss', 'within_ss', 'between_ss', 'ratio', 'clusters'}

Examples

const jsgeoda = require('jsgeoda');
const fs = require('fs');

// load data
const data = fs.readFileSync('./data/natregimes.geojson').buffer;

// create jsgeoda instance
const geoda = await jsgeoda.New();

// load geojson in jsgeoda
const nat = geoda.read_geojson(data);

// create a queen contiguity weights
const w = geoda.queen_weights(nat);

// get values
const hr60 = geoda.get_col(nat, "HR60");
const ue60 = geoda.get_col(nat, "UE60");

// set minimum bound
const po60 = geoda.get_col(nat, "PO60");

// apply skater
const skater = geoda.redcap(w, 10, [hr60, ue60], 'single-linkage', 17845200, po60);

Try it yourself in the playground (jsgeoda + deck.gl):

Last updated