rescale

Purpose

Scales the columns of a matrix

Format

{ x_s, location, scale_factor } = rescale(x, method)
x_s = rescale(x, location, scale_factor)
Parameters:
  • x (NxK matrix or NxK array) – data to be rescaled
  • location (1xK vector) – used for column centering
  • scale_factor (1xK vector) – used for column scaling
  • method (string) –

    name of scaling and centering method:

    Method Location scale_factor
    ”euclidean” 0 Euclidean length: \(\sqrt{\sum_{i=1}^nx_i^2}\)
    ”mad” Median Absolute deviation from the median
    ”maxabs” 0 Maximum absolute value
    ”midrange” \(\frac{(Max+Min)}{2}\) \(\frac{Range}{2}\)
    ”range” Minimum Range
    ”standardize” Mean Standard deviation
    ”sum” 0 Sum
    ”ustd” 0 Standard deviation about the origin
Returns:
  • x_s (matrix or multi-dimensional array) – containing the scaled columns of x
  • location (1xK vector) – containing the values used to center the columns of the input matrix x
  • scale_factor (1xK vector) – containing the values used to scale the columns of the input matrix x

Examples

Specifying a scaling method

// Create a column vector
x = {   12.5,
        18.2,
        10.8,
         8.3,
        15.4,
        21.5,
        14.6,
        16.7 };

// Standardize 'x' and return the location and scaling factors
{ x_s, location, scale_factor} = rescale(x, "standardize");

print "x_s = " x_s;
print "location = " location;
print "scale_factor = " scale_factor;

After the code above:

x_s =
    -0.53463295
     0.81977052
    -0.93857785
     -1.5326145
     0.15444952
      1.6038989
   -0.035642197
     0.46334856

location =        14.750000
scale_factor =    4.2084948

Specifying a scaling method for multiple columns

// Create a matrix with 2 columns
x = {   12.5 1088.5,
        18.2  879.3,
        10.8 1232.0,
         8.3 1189.8,
        15.4  932.1,
        21.5 1009.2,
        14.6  656.7,
        16.7 1251.5 };

// Standardize 'x' and return the location and scaling factors
{ x_s, location, scale_factor } = rescale(x, "standardize");

print "x_s = " x_s;
print "location = " location;
print "scale_factor = " scale_factor;

After the code above:

x_s =
    -0.53463295       0.28751716
     0.81977052      -0.73869039
    -0.93857785       0.99144060
     -1.5326145       0.78443315
     0.15444952      -0.47968581
      1.6038989      -0.10148025
   -0.035642197       -1.8306302
     0.46334856        1.0870957

location =        14.750000        1029.8875
scale_factor =    4.2084948        203.85740

Applying previously created location and scaling factors

Continuing with the variables used in the previous example, we can apply the returned location and scaling factors to standardize additional observations of our two variables.

// Additional observations
x_new = { 9.3  964.1,
         10.9 1173.7,
         11.1 1232.0,
          9.1 1051.2,
         14.6 1124.1,
         18.4  815.3,
         20.2 1292.6,
         18.5  833.1 };

// Standardize 'x' using the location and scaling factors
print "location = " location;
print "scale_factor = " scale_factor;

// returned in the previous example
x_new_s = rescale(x_new, location, scale_factor);

print "x_new_s = " x_new_s;
print "x_new = " x_new;

After the code above:

location =        14.750000        1029.8875
scale_factor =    4.2084948        203.85740

x_new_s =
     -1.2949998      -0.32271333
    -0.91481638       0.70545637
    -0.86729345       0.99144060
     -1.3425227       0.10454612
   -0.035642197       0.46214904
     0.86729345       -1.0526353
      1.2949998        1.2887072
     0.89105492      -0.96531940

x_new =
      9.3000000        964.10000
      10.900000        1173.7000
      11.100000        1232.0000
      9.1000000        1051.2000
      14.600000        1124.1000
      18.400000        815.30000
      20.200000        1292.6000
      18.500000        833.10000