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
See also
Functions code, recode()
, reclassifyCuts()
, reclassify()
, rescale()
, substute()