Why does "mapstd" returns unexpected dimensions when I apply it to a new sample data?

Illustration
rehmat_diya - 2021-07-09T11:50:56+00:00
Question: Why does "mapstd" returns unexpected dimensions when I apply it to a new sample data?

Why does "mapstd" returns unexpected dimensions when I apply it to a new sample data?   I have 4 sample data, each containing 2 predictor variables:   >> X = [ 2 1; 5 0; 3 0; 4 2]; I standardize this using "mapstd" as follow:   >> [Xnew, PS] = mapstd(X); However, when I try standardizing a single new sample data "Xtest", it produces a 4x2 array instead of 1x2 array: >> Xtest = [2 3]; >> XtestNew = mapstd('apply', Xtest, PS) XtestNew = 0.7071 2.1213 -0.1414 0.1414 0.2357 0.7071 -0.7071 0

Expert Answer

Profile picture of Prashant Kumar Prashant Kumar answered . 2025-11-20

The "mapstd" function normalizes the input data row-wise (horizontally). Therefore, with your current implementation, you are actually normalizing each sample individually since you are putting your data one above the other in the following format (4 rows x 2 columns):
 
 
 
   X =
                [ sample1
                  sample2
                  sample3
                  sample4 ]

In order to use "mapstd" function to normalize each of your 2 predictor variables, you would need to store your data in the following format (2 row x 4 columns):

   X = [ sample1  sample2 sample3 sample4]
Then, you can use "mapstd" function and get 2 means and 2 standard deviations (one for each predictor variable).
 
 Making the necessary modification to the original data:
>> X = X';   % store sample column by column instead
>> [Xnew, PS] = mapstd(X);   
>> XtestNew = mapstd('apply', Xtest, PS);

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!