2.5 数据的变换
对于多元数据,当各变量的量纲和数量级不一致时,往往需要对数据进行变换处理,以消除量纲和数量级的限制,将各变量的观测值转换到某一指定的范围,如[-1,1]、[0,1]等,以便进行后续的统计分析。本节介绍两种常用的数据变换方法:标准化变换和极差规格化变换。
注:进行多维数据评估时候,最常用的方式是加权的方法,即将不同量纲、不同意义的数据按一定的权重加起来。在进行加权时,关于模型或标准的内在原理需要事前明白。
2.5.1 数据的标准化变换
1. 变换公式
设P维向量X=(X1,X2....,Xp)的观测值矩阵为:

标准化变换后的观测值矩阵为:


2. zscore函数
MATLAB统计工具箱中的zscore函数用来进行数据的标准化变换,其调用方式如下:


(1) Z=zscore(X)
对X进行标准化变换,这里X可以是一个向量、矩阵或高维数组。若X是一个向量,则返回变换后结果向量Z=(X-mean(X)/std(X);若X是一个矩阵,则用X 的每一列的均值和标准差对该列进行标准化变换,返回变换后矩阵Z;若X 是一个高维数组,则沿X的首个非单一维方向计算均值和标准差,然后对X进行标准化变换,返回变换后高维数组Z。例如,X是一个1x1x1x10的4维数组,由于X的前三维均为单一维,于是计算X的第4维方向上的均值和标准差,对X进行标准化变换,返回的Z也是一个1x1x1x10的4维数组。
(2) [Z,mu,sigma]=zscore(X)。
返回X的均值mu=mean(X)和标准差sigma=std(X)。
(3) […]=zscore(X,1)。

(4) [… ]=zscore(X,flag,dim)。
用flag参数指定标准差的计算公式。若flag=0,则使用公式:
用dim参数指定沿X的哪个维进行标准化变换。若dim=1,则表示对X的各列进行标准化变换:若dim=2,则表示对X的各行进行标准化变换。
调用rand函数产生一个随机矩阵,然后调用zscore函数将其按列标准化,代码如下:


2.5.2 数据的极差规格化变换
1.变换公式
对于观测值矩阵X,极差规格化变换后的矩阵为:



2.MATLAB实现
MATLAB中没有提供用来进行极差规格化变换的函数,作者根据极差规格化变换的远离编写了rscore函数,代码如下:



从以上结果可以看到矩阵x经过极差规格化变换后得到的矩阵R,以及矩阵x各列的最小值构成的向量xmin、各列的极差构成的向量xrange。矩阵x的各列的最小值变为0,最大值变为1,因此变换后的矩阵R的每个元素的取值均在0~1之间。
