26.3 基本统计函数

Octave 支持各种实用的统计函数。其中许多是准备数据集以进行进一步分析的初始步骤。另一些则提供了与基本描述性统计不同的度量标准。

 
y = center (x)
y = center (x, dim)
y = center (x, vecdim)
y = center (x, "all")
y = center (…, nanflag)

通过减去均值使数据居中(中心化)。

如果 x 是一个向量,那么 center (x) 通过从 x 的每个元素中减去 x 的均值来计算中心化数据。

如果 x 是一个矩阵,那么 center (x) 返回一个行向量,其中每个元素包含 x 每一列的中心化数据。

如果 x 是一个数组,那么 center (x) 沿着 x 的第一个非单一维度对数据进行中心化。

x 中的数据必须是数值类型。y 的尺寸与 x 相同。

可选的输入参数 dim 指定要操作的维度,必须是正整数。指定 x 的任何单一维度(包括超过 ndims (x) 的维度)将返回 x 本身。

通过输入 vecdim(一个包含非重复维度的向量)来指定多个维度,将沿着 vecdim 定义的数组切片进行操作。如果 vecdim 索引了 x 的所有维度,则等效于 "all" 选项。vecdim 中大于 ndims (x) 的任何维度将被忽略。

将维度指定为 "all" 将使 center 计算 x 所有元素的中心,等效于 center (x(:))

可选的变量 nanflag 指定在计算均值时是否包含或排除 NaN 值,可与之前指定的任何输入参数组合使用。nanflag 的默认值为 "includenan",表示在计算中保留 NaN 值。若要排除 NaN 值,请将 nanflag 设置为 "omitnan"。操作维度上的任何 NaN 值将导致 y 中所有对应元素为 NaN。

编程说明:center 对统计数据的归一化有明显用途。它也有助于提高一般数值计算的精度。当一批数据中存在较大的公共值时,可以先减去均值,执行计算,然后再加回均值以获得最终答案。

另请参阅: zscore

 
z = zscore (x)
z = zscore (x, opt)
z = zscore (x, opt, dim)
z = zscore (x, opt, vecdim)
z = zscore (x, opt, "all")
z = zscore (…, nanflag)
[z, mu, sigma] = zscore (…)

计算 x 的 Z 分数。

对于向量 x,Z 分数通过减去均值并除以标准差来计算。如果标准差为零,则除以 1。

如果 x 是一个向量,则 zscore (x) 返回 x 中元素的 Z 分数。

如果 x 是一个矩阵,则 zscore (x) 返回一个行向量,其中每个元素包含 x 中相应列的 Z 分数。

如果 x 是一个数组,则 zscore (x) 沿着 x 的第一个非单一维度计算 Z 分数。

可选参数 opt 确定计算标准差时所使用的归一化方式,其定义与 std 的相应参数相同。

可选的输入参数 dim 指定要操作的维度,必须是正整数。指定 x 的任何单一维度(包括超过 ndims (x) 的维度)将返回 zeros (size (x))

通过输入 vecdim(一个包含非重复维度的向量)来指定多个维度,将沿着 vecdim 定义的数组切片进行操作。如果 vecdim 索引了 x 的所有维度,则等效于 "all" 选项。vecdim 中大于 ndims (x) 的任何维度将被忽略。

将维度指定为 "all" 将使 zscorex 的所有元素进行操作,等效于 zscore (x(:))

可选的变量 nanflag 指定在计算时是否包含或排除 NaN 值,可与之前指定的任何输入参数组合使用。nanflag 的默认值为 "includenan",表示在计算中保留 NaN 值。若要排除 NaN 值,请将 nanflag 设置为 "omitnan"。输出中与 x 相同位置仍会包含 NaN 值。

可选的输出 musigma 包含均值和标准差。

另请参阅: meanstdcenter

 
z = normalize (x)
z = normalize (x, dim)
z = normalize (…, method)
z = normalize (…, method, option)
z = normalize (…, scale, scaleoption, center, centeroption)
[z, c, s] = normalize (…)

使用几种可用的缩放和居中方法之一,返回 x 中数据的归一化结果。

normalize 默认返回 xzscore(Z 分数),定义为每个元素与 x 均值的标准差倍数。这相当于以数据均值为中心并按标准差进行缩放。x 必须是双精度或单精度浮点数的数值数组。

返回值 z 的大小与 x 相同。可选返回变量 cs 是归一化中使用的中心化和缩放因子,满足:

  z = (x - c) ./ s

如果 x 是一个向量,normalize 将对 x 中的数据进行操作。

如果 x 是一个矩阵,normalize 将对 x 中的每一列独立操作。

如果 x 是一个 N 维数组,normalize 将对 x 的第一个非单一维度独立操作。

如果给定了可选的第二个参数 dim,则沿着该维度进行操作。

normalize 忽略 x 中的 NaN 值,类似于 stdmeanmedian 中 omitnan 选项的行为。

可选的输入参数 methodoption 可用于指定对 x 执行的归一化类型。请注意,只有 scalecenter 选项可以使用下面定义的任何方法一起指定。有效的归一化方法有:

zscore

(默认)将 x 中的元素归一化为到中心值的缩放距离。有效选项:

std

(默认)数据以 mean (x) 为中心,并按标准差缩放。

robust

数据以 median (x) 为中心,并按中位数绝对偏差缩放。

norm

zx 的一般向量范数,option 是确定向量范数类型的归一化因子 p,其规则如下:

  z = [sum (abs (x) .^ p)] ^ (1/p)

p 可以是任何正标量,特定值包括:

p = 1

xsum (abs (x)) 归一化。

p = 2

(默认)x 按元素的欧几里得范数(即向量幅度)归一化。

p = Inf

xmax (abs (x)) 归一化。

scale

x 按由 option 确定的因子进行缩放,option 可以是数值标量或以下之一:

std

(默认)x 按其标准差缩放。

mad

x 按其中位数绝对偏差缩放。

first

x 按其第一个元素缩放。

iqr

x 按其四分位距缩放。

range

x 按比例缩放到由 option 指定的范围,option 是一个包含两个元素的标量行向量。默认范围为 [0, 1]。

center

xoption 确定的量进行平移,option 可以是数值标量或以下之一:

mean

(默认)xmean (x) 平移。

median

xmedian (x) 平移。

medianiqr

xmedian (x) 平移,并按四分位距缩放。

已知 MATLAB 不兼容性:

  1. DataVariables 选项仅在输入 x 为表类时可用,而核心 Octave 尚未实现该功能。有关可用的重载方法,请参阅数据类型和 tablicious Octave 包。

另请参阅: zscoreiqrnormrescalestdmedianmeanmad

 
n = histc (x, edges)
n = histc (x, edges, dim)
[n, idx] = histc (…)

计算直方图计数。

x 是一个向量时,该函数统计 x 中落入由 edges 定义的直方图区间中的元素数量。edges 必须是一个单调递增的向量,用于定义直方图区间的边界。n(k) 包含 x 中满足 edges(k) <= x < edges(k+1) 的元素数量。n 的最后一个元素包含 x 中恰好等于 edges 最后一个元素的元素数量。

x 是一个 N 维数组时,计算将沿着 dim 维度进行。如果未指定,dim 默认为第一个非单一维度。

当请求第二个输出参数时,还将返回一个索引矩阵。idx 矩阵与 x 具有相同的大小。idx 的每个元素包含 x 中对应元素所落入的直方图区间的索引。

另请参阅: hist

unique 函数(参见 unique)通常也用于统计。

 
c = nchoosek (n, k)
c = nchoosek (set, k)

计算 n 的二项式系数,或列出 set 中所有可能的组合。

如果 n 是一个标量,则计算 nk 的二项式系数,定义为:

 /   \
 | n |    n (n-1) (n-2) ... (n-k+1)       n!
 |   |  = ------------------------- =  ---------
 | k |               k!                k! (n-k)!
 \   /

这是从 n 个元素中每次取 k 个的组合数。

如果第一个参数是一个向量 set,则生成 set 中元素的所有组合,每次取 k 个,每个组合占一行。结果 ck 列和 nchoosek (length (set), k) 行。

例如:

三个物品可以有多少种方式分成两两一组?

nchoosek (3, 2)
   ⇒  3

可能的配对有哪些?

nchoosek (1:3, 2)
   ⇒   1   2
       1   3
       2   3

编程说明:在计算二项式系数时,nchoosek 仅适用于非负整数参数。对于非整数和负标量参数,或需要同时计算多个二项式系数(使用向量作为 nk 的输入)的情况,请使用 bincoeff

另请参阅: bincoeffperms

 
P = perms (v)
P = perms (v, "unique")

生成向量 v 的所有排列,每个排列占一行。

如果 v 按升序排列,则结果按逆字典序返回。如果 v 是其他排列顺序,则结果也会相应地排列。因此,降序输入将产生按正常字典序排列的结果。结果的大小为 factorial (n) * n,其中 nv 的长度。任何重复元素都会包含在输出中。

如果指定了可选参数 "unique",则只返回唯一的排列,比调用 unique (perms (v), "rows") 使用更少的内存和时间。

示例 1

perms ([1, 2, 3])
⇒ 
3   2   1
3   1   2
2   3   1
2   1   3
1   3   2
1   2   3

示例 2

perms ([1, 1, 2, 2], "unique")
⇒ 
2   2   1   1
2   1   2   1
2   1   1   2
1   2   2   1
1   2   1   2
1   1   2   2

编程说明:如果未使用 "unique" 选项,v 的长度不应超过 10-12 以限制内存消耗。即使使用 "unique"v 中的唯一元素也不应超过 10-12 个。

另请参阅: permuterandpermnchoosek

 
y = ranks (x)
y = ranks (x, dim)
y = ranks (x, dim, rtype)

返回 x 沿着第一个非单一维度(针对结进行调整)的秩(即顺序统计量意义上的排名)。

如果给定了可选参数 dim,则沿着该维度进行操作。

可选参数 rtype 确定如何处理结。以下所有示例均假设输入为 [ 1, 2, 2, 4 ]

0 或 "fractional"(默认)分数排名(1, 2.5, 2.5, 4);
1 或 "competition" 竞赛排名(1, 2, 2, 4);
2 或 "modified" 修正竞赛排名(1, 3, 3, 4);
3 或 "ordinal" 序数排名(1, 2, 3, 4);
4 或 "dense" 密集排名(1, 2, 2, 3)。

另请参阅: spearmankendall

 
cnt = run_count (x, n)
cnt = run_count (x, n, dim)

统计 x 沿着第一个非单一维度的向上游程,长度为 1, 2, …, n-1 以及大于或等于 n 的游程。

如果给定了可选参数 dim,则沿着该维度进行操作。

另请参阅: runlength

 
count = runlength (x)
[count, value] = runlength (x)

找出所有相同值序列的长度。

count 是一个向量,包含每个重复值的长度。

可选输出 value 包含序列中重复的值。

runlength ([2, 2, 0, 4, 4, 4, 0, 1, 1, 1, 1])
⇒    2   1   3   1   4

另请参阅: run_count


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4