zscore
标准化 z 分数
语法
说明
示例
两个数据向量的 Z 分数
计算并绘制两个数据向量的 分数,然后比较结果。
加载样本数据。
load lawdata
在工作区中加载两个变量:gpa
和 lsat
。
在同一坐标区上绘制这两个变量。
plot([gpa,lsat]) legend('gpa','lsat','Location','East')
很难对这两种测度进行比较,因为其尺度差异很大。
在相同的坐标区上绘制 gpa
和 lsat
的 分数。
Zgpa = zscore(gpa); Zlsat = zscore(lsat); plot([Zgpa, Zlsat]) legend('gpa z-scores','lsat z-scores','Location','Northeast')
现在,您可以看到各个人员在 gpa
和 lsat
成绩上的相对表现。例如,第三个人的 gpa
和 lsat
结果都比样本均值低一个标准差。第十个人的 gpa
接近样本均值,但其 lsat
分数几乎比样本均值高出 1.25 倍标准差。
检查您创建的 分数的均值和标准差。
mean([Zgpa,Zlsat])
ans = 1×2
10-14 ×
-0.1088 0.0357
std([Zgpa,Zlsat])
ans = 1×2
1 1
根据定义,gpa
和 lsat
的 分数的均值为 0,标准差为 1。
总体与样本的 Z 分数
加载样本数据。
load lawdata
在工作区中加载两个变量:gpa
和 lsat
。
使用标准差的总体公式计算 gpa
的 分数。
Z1 = zscore(gpa,1); % population formula Z0 = zscore(gpa,0); % sample formula disp([Z1 Z0])
1.2554 1.2128 0.8728 0.8432 -1.2100 -1.1690 -0.2749 -0.2656 1.4679 1.4181 -0.1049 -0.1013 -0.4024 -0.3888 1.4254 1.3771 1.1279 1.0896 0.1502 0.1451 0.1077 0.1040 -1.5076 -1.4565 -1.4226 -1.3743 -0.9125 -0.8815 -0.5724 -0.5530
对于来自总体的一个样本,分母为 的总体标准差公式对应于总体标准差的最大似然估计,可能有偏差。另一方面,样本标准差公式是一个样本的总体标准差的无偏估计量。
数据矩阵的 Z 分数
使用沿数据矩阵的列或行计算的均值和标准差计算 分数。
加载样本数据。
load flu
数据集数组 flu
已在工作区中加载。flu
包含涉及 11 个变量的 52 个观测值。第一个变量包含日期(以周为单位)。其他变量包含美国不同地区的流感估计值。
将该数据集数组转换为一个数据矩阵。
flu2 = double(flu(:,2:end));
新数据矩阵 flu2
是一个 52×10 双精度数据矩阵。在数据集数组 flu
中,行对应于周,列对应于美国各地区。
标准化每个地区(flu2
的列)的流感估计值。
Z1 = zscore(flu2,[ ],1);
双击在工作区中创建的矩阵 Z1
,可以在变量编辑器中看到 分数。
标准化每周(flu2
的行)的流感估计值。
Z2 = zscore(flu2,[ ],2);
多维数组的 Z 分数
通过指定沿不同维度标准化数据来求出一个多维数组的 Z 分数。比较使用 'all'
、dim
和 vecdim
输入参数时的结果。
创建一个 3×4×2 数组。
X = reshape(1:24,[3 4 2])
X = X(:,:,1) = 1 4 7 10 2 5 8 11 3 6 9 12 X(:,:,2) = 13 16 19 22 14 17 20 23 15 18 21 24
通过使用 X
中所有值的均值和标准差来标准化 X
。
Zall = zscore(X,0,'all')
Zall = Zall(:,:,1) = -1.6263 -1.2021 -0.7778 -0.3536 -1.4849 -1.0607 -0.6364 -0.2121 -1.3435 -0.9192 -0.4950 -0.0707 Zall(:,:,2) = 0.0707 0.4950 0.9192 1.3435 0.2121 0.6364 1.0607 1.4849 0.3536 0.7778 1.2021 1.6263
生成的由 Z 分数组成的多维数组的均值为 0,标准差为 1。例如,计算 Zall
的均值和标准差。
mZall = mean(Zall(:,:,:),'all')
mZall = -9.2519e-18
sZall = std(Zall(:,:,:),0,'all')
sZall = 1.0000
现在沿第二个维度标准化 X
。
Zdim = zscore(X,0,2)
Zdim = Zdim(:,:,1) = -1.1619 -0.3873 0.3873 1.1619 -1.1619 -0.3873 0.3873 1.1619 -1.1619 -0.3873 0.3873 1.1619 Zdim(:,:,2) = -1.1619 -0.3873 0.3873 1.1619 -1.1619 -0.3873 0.3873 1.1619 -1.1619 -0.3873 0.3873 1.1619
Zdim
的每页的每行中的元素的均值为 0,标准差为 1。例如,计算 Zdim
的第二页的第一行的均值和标准差。
mZdim = mean(Zdim(1,:,2),'all')
mZdim = 0
sZdim = std(Zdim(1,:,2),0,'all')
sZdim = 1
最后,根据第二个和第三个维度标准化 X
。
Zvecdim = zscore(X,0,[2 3])
Zvecdim = Zvecdim(:,:,1) = -1.4289 -1.0206 -0.6124 -0.2041 -1.4289 -1.0206 -0.6124 -0.2041 -1.4289 -1.0206 -0.6124 -0.2041 Zvecdim(:,:,2) = 0.2041 0.6124 1.0206 1.4289 0.2041 0.6124 1.0206 1.4289 0.2041 0.6124 1.0206 1.4289
每个 Zvecdim(i,:,:)
切片中的元素的均值为 0,标准差为 1。例如,计算 Zvecdim(1,:,:)
中元素的均值和标准差。
mZvecdim = mean(Zvecdim(1,:,:),'all')
mZvecdim = 2.7756e-17
sZvecdim = std(Zvecdim(1,:,:),0,'all')
sZvecdim = 1
Z 分数、均值和标准差
返回用于计算 分数的均值和标准差。
加载样本数据。
load lawdata
在工作区中加载两个变量:gpa
和 lsat
。
返回 gpa
的 分数、均值和标准差。
[Z,gpamean,gpastdev] = zscore(gpa)
Z = 15×1
1.2128
0.8432
-1.1690
-0.2656
1.4181
-0.1013
-0.3888
1.3771
1.0896
0.1451
⋮
gpamean = 3.0947
gpastdev = 0.2435
输入参数
X
— 输入数据
向量 | 矩阵 | 多维数组
输入数据,指定为向量、矩阵或多维数组。
数据类型: double
| single
dim
— 维度
正整数标量
沿其计算 X
的 z 分数的维度,指定为正整数标量。如果不指定值,则默认值是大小不等于 1 的第一个数组维度。
例如,对于矩阵 X
,如果 dim
= 1,则 zscore
使用沿 X
的列的均值和标准差;如果 dim
= 2,则 zscore
使用沿 X
的行的均值和标准差。
输出参数
Z
— z 分数
向量 | 矩阵 | 多维数组
z 分数,以向量、矩阵或多维数组形式返回。Z
与 X
具有相同的维度。
Z
的值取决于您指定 'all'
、dim
还是 vecdim
。如果未指定上述输入参数中的任一项,则适用以下条件:
如果
X
是向量,则Z
是均值为 0、方差为 1 的 z 分数组成的向量。如果
X
是数组,则zscore
沿X
的第一个非单一维度进行标准化。
有关说明在使用 'all'
、dim
和 vecdim
时 Z
中差异的示例,请参阅多维数组的 Z 分数。
详细信息
Z 分数
对于具有均值 μ 和标准差 σ 的随机变量 X,值 x 的 z 分数为
。对于具有均值 和标准差 S 的采样数据,数据点 x 的 z 分数为
z 分数以标准差为单位测量数据点与均值的距离。这也称为数据的标准化。标准化后的数据集均值为 0,标准差为 1,并保留原始数据集的形状属性(相同的偏度和峰度)。
在进一步分析之前,您可以使用 z 分数将数据置于同一尺度上。这使您能够比较两个或更多具有不同单位的数据集。
多维数组
多维数组是具有两个以上维度的数组。例如,如果 X 是 1×3×4 数组,则 X
是三维数组。
第一个非单一维度
第一个非单一维度是其大小不等于 1 的数组的第一个维度。例如,如果 X
是 1×2×3×4 数组,则第二个维度是 X
的第一个非单一维度。
样本标准差
总体标准差
算法
zscore
对任何包含 NaN
的样本返回 NaN
。
zscore
对任何常量样本(所有值都相同)返回 0
。例如,如果 X
是一个由相同数值组成的向量,则 Z
是一个由 0
组成的向量。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
此函数完全支持 tall 数组。有关详细信息,请参阅tall 数组。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
不支持
'all'
和vecdim
输入参数。dim
输入参数必须为编译时常量。如果未指定
dim
输入参数,则生成的代码中的工作(或运算)维度可能不同。因此,可能会出现运行时错误。有关详细信息,请参阅Automatic dimension restriction (MATLAB Coder)。
有关代码生成的详细信息,请参阅 Introduction to Code Generation 和 General Code Generation Workflow。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
不支持
'all'
和vecdim
输入参数。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)