center and/or scale a set of data
Scale( V )
Scale( V, options )
list, matrix, vector, DataFrame, DataSeries; numeric list of elements
(optional) equation(s) of the form option=value
center : truefalse, numeric, procedure; controls if the returned list of values is centered or not. The default is set to true, which uses the Statistics[Mean] command to compute the center. If this is set to false, the list is not centered and the list of values will have the same central mean value as before. If a numeric value is entered, the list is centered using that value as its center. If a procedure is entered, the list is centered using the value returned from the procedure. If a procedure is entered as the first value of a list, subsequent arguments in the list are passed to the procedure.
scale : truefalse, numeric, procedure; controls if the returned list of values is scaled or not. The default is set to true, which uses the Statistics[StandardDeviation] command to compute the standard deviation. If this is set to false, the list is not scaled and has the same standard deviation as before. If a numeric value is entered, the list is scaled using that value as its standard deviation. If a procedure is entered, the list is scaled using the value returned from the procedure. If a procedure is entered as the first value of a list, subsequent arguments in the list are passed to the procedure.
ignore : truefalse; controls how missing data is handled. Missing items are represented by undefined or Float(undefined). If ignore=false and V contains missing data, the Scale command will return undefined. If ignore = true all missing items in V will be ignored. The default value is false. The ignore option is not passed to any procedures entered for either of the center or scale options.
The Scale command is used to center and scale list of elements. If V is a matrix, the Scale command will scale each column of the matrix.
The Scale command can also be used with arbitrary numeric values for the center and scaling factor. In addition, either center or scale can be turned off in order to just return a new scaled or centered set of values respectively.
An application for the Scale command is to compute standard scores (z-scores) for a list of values. Standardized scores are useful measures to determine how far a given element is from the sample mean. Standardized scores are computed by first subtracting the mean of the set of data from each element and then dividing the result by the standard deviation of the data set, resulting in a new set of values with mean 0 and standard deviation 1. Given a list of values corresponding to grades on a final examination with a highest possible grade of 100, we can determine how each of the grades rank in terms of the sample mean, and what percentage of scores are higher or lower than a particular grade.
Grades := [34, 55, 61, 75, 80, 91];
Say that we wanted to compare a grade of 75 with the other grades. Computing the standard scores using the Scale command, we see that:
Scale( Grades );
A grade of 75 corresponds to a standardized score of 0.44, which means that the grade is approximately 1/2 standard deviation above the sample mean.
The percentage of grades that are lower than this standardized score can be found from a standard normal distribution probability table.
Student:-Statistics:-ProbabilityTable( 'Normal', .442112339189170811);
From the above, 67% of the grades are lower than a grade of 75, or conversely, a grade of 75 is in the top 33% percentile.
Standard scores can also be used to compare two sets of data from different distributions. Say that we wanted to again investigate how a score of 75 ranks for another set of data taken from another examination with a with a highest possible grade of 120:
Grades2 := [60, 75, 90, 100, 111, 115];
The two lists of grades can be put into a grade matrix:
GradeMatrix := Matrix( [ Grades, Grades2 ] )^%T;
Applying scale to a matrix results in two new columns of data both with mean 0 and standard deviation 1:
Scale( GradeMatrix );
In this case, the grade of 75 has a standard score of -0.79, which corresponds to a probability value of:
Student:-Statistics:-ProbabilityTable( 'Normal', -.789882505875832 );
In the first set of grades, a score of 75 is in the top 33% of the grades. In the second, a score of 75 is in the bottom 21%.
The Scale command can also be used to just center data:
Scale( Grades, scale = false );
Or just scale the data by a numeric factor:
Scale( Grades, scale = 2 );
The following plot illustrates the differences between applying various options to the Scale command. In order to show a greater contrast between transformed data, we will use the grades as decimal percentages:
PercentGrades := Grades/100.0;
dataplot( Matrix( [Vector(PercentGrades), Scale(PercentGrades, center = false), Scale(PercentGrades), Scale(PercentGrades, scale = false)]), 'axes' = boxed, 'legend' = ["Data", "Scaled Data", "Scaled and Centered Data", "Centered Data"], 'color' = ["Red","DarkBlue","RoyalBlue","Orange"], 'axes' = framed, 'axis' = [color = white] );
The red line shows the original data and the orange line shows the data minus the center value. The dark blue line shows the data divided by the scale value (the standard deviation) and the light blue line shows the data minus the center then divided by the scale value.
It is possible to use another procedure or command from Statistics to determine the center or scale.
Scale( Grades2, center = Median, scale = Variance );
It is also possible to send arguments to the procedures used for the center or scale options by entering the procedure in a list:
W := [ 10, 5, 10, 5, 10, 20 ]:
Scale( Grades2, center = [ Mean, weights = W ] );
If the collection of data has any undefined values, these can optionally be ignored using the ignore option:
Grades3 := [34, 55, 61, Float(undefined), 75, 80, 91];
Scale( Grades3, ignore = true );
If the center or scale options are called with a procedure, the ignore option is not passed to the procedure. To pass ignore to another procedure, it can be given in the list of options for the procedure:
Scale( Grades3, center = [ Mean, ignore = true ], scale = [Variance, ignore = true] );
The Statistics[Scale] command was introduced in Maple 2015.
For more information on Maple 2015 changes, see Updates in Maple 2015.
Download Help Document
What kind of issue would you like to report? (Optional)