corr - 数组元素的皮尔逊相关系数实验性
返回 array 沿维度 dim 的元素的皮尔逊相关系数,如果 mask 中的对应元素为 true。
array 的两行(或列),例如 x 和 y 之间的皮尔逊相关系数定义为
corr(x, y) = cov(x, y) / sqrt( var(x) * var(y))
result = corr (array, dim [, mask])
泛型子例程
array:应为类型为 integer、real 或 complex 的秩 1 或秩 2 数组。它是一个 intent(in) 参数。
dim:应为类型为 integer 的标量,其值为 1 到 n 之间,其中 n 是 array 的秩。它是一个 intent(in) 参数。
mask(可选):应为类型为 logical 的标量或与 array 形状相同的数组。它是一个 intent(in) 参数。
如果 array 的秩为 1 且类型为 real 或 complex,则结果的类型为 real 且与 array 的种类相同。如果 array 的秩为 2 且类型为 real 或 complex,则结果的类型和种类与 array 相同。如果 array 的类型为 integer,则结果的类型为 real(dp)。
如果 array 的秩为 1 且大小大于 1,则返回等于 1 的标量。否则,返回 IEEE NaN。如果 array 的秩为 2,则返回具有相应相关性的秩 2 数组。
如果指定了 mask,则结果是 array 中所有对应于 mask 的 true 元素的元素的皮尔逊相关系数。如果 mask 的每个元素都为 false,则结果为 IEEE NaN。
program example_corr
use stdlib_stats, only: corr
implicit none
real :: x(1:6) = [1., 2., 3., 4., 5., 6.]
real :: y(1:2, 1:3) = reshape([-1., 40., -3., 4., 10., 6.], [2, 3])
print *, corr(x, 1) !returns 1.
print *, corr(y, 2) !returns reshape([ 1., -.32480, -.32480, 1. ], [ 2, 3])
end program example_corr
cov - 数组元素的协方差实验性
返回 array 沿维度 dim 的元素的协方差,如果 mask 中的对应元素为 true。
默认情况下,协方差定义为
cov(array) = 1/(n-1) sum_i (array(i) - mean(array) * (array(i) - mean(array)))
其中 n 是元素的数量。
可以使用逻辑参数 corrected 更改缩放。如果 corrected 为 .false.,则总和按 n 缩放,否则按 n-1 缩放。
result = cov (array, dim [, mask [, corrected]])
泛型子例程
array:应为类型为 integer、real 或 complex 的秩 1 或秩 2 数组。它是一个 intent(in) 参数。
dim:应为类型为 integer 的标量,其值为 1 到 n 之间,其中 n 是 array 的秩。它是一个 intent(in) 参数。
mask(可选):应为类型为 logical 的标量或与 array 形状相同的数组。它是一个 intent(in) 参数。
corrected(可选):应为类型为 logical 的标量。如果 corrected 为 .true.(默认值),则总和按 n-1 缩放。如果 corrected 为 .false.,则总和按 n 缩放。它是一个 intent(in) 参数。
如果 array 的秩为 1 且类型为 real 或 complex,则结果的类型为 real,对应于 array 的类型。如果 array 的秩为 2 且类型为 real 或 complex,则结果的类型与 array 相同。如果 array 的类型为 integer,则结果的类型为 real(dp)。
如果 array 的秩为 1,则返回包含 array 中所有元素的协方差(即方差)的标量。如果 array 的秩为 2,则返回秩 2 数组。
如果指定了 mask,则结果是 array 中所有对应于 mask 的 true 元素的元素的协方差。如果 mask 的每个元素都为 false,则结果为 IEEE NaN。
program example_cov
use stdlib_stats, only: cov
implicit none
real :: x(1:6) = [1., 2., 3., 4., 5., 6.]
real :: y(1:2, 1:3) = reshape([1., 2., 3., 4., 5., 6.], [2, 3])
print *, cov(x, 1) !returns 3.5
print *, cov(x, 1, corrected=.false.) !returns 2.9167
print *, cov(y, 1) !returns a square matrix of size 3 with all elements equal to 0.5
end program example_cov
mean - 数组元素的平均值实验性
返回 array 所有元素的平均值,或者如果提供,则返回 array 沿维度 dim 的元素的平均值,如果 mask 中的对应元素为 true。
result = mean (array [, mask])
result = mean (array, dim [, mask])
泛型子例程
array:应为类型为 integer、real 或 complex 的数组。它是一个 intent(in) 参数。
dim:应为类型为 integer 的标量,其值为 1 到 n 之间,其中 n 是 array 的秩。它是一个 intent(in) 参数。
mask(可选):应为类型为 logical 的标量或与 array 形状相同的数组。它是一个 intent(in) 参数。
如果 array 的类型为 real 或 complex,则结果的类型与 array 相同。如果 array 的类型为 integer,则结果的类型为 real(dp)。
如果省略 dim,则返回包含 array 中所有元素的平均值的标量。否则,返回秩为 n-1 的数组,其中 n 等于 array 的秩,并且形状类似于 array,但省略了维度 dim。
如果指定了 mask,则结果是 array 中所有对应于 mask 的 true 元素的元素的平均值。如果 mask 的每个元素都为 false,则结果为 IEEE NaN。
program example_mean
use stdlib_stats, only: mean
implicit none
real :: x(1:6) = [1., 2., 3., 4., 5., 6.]
real :: y(1:2, 1:3) = reshape([1., 2., 3., 4., 5., 6.], [2, 3])
print *, mean(x) !returns 3.5
print *, mean(y) !returns 3.5
print *, mean(y, 1) !returns [ 1.5, 3.5, 5.5 ]
print *, mean(y, 1, y > 3.) !returns [ NaN, 4.0, 5.5 ]
end program example_mean
median - 数组元素的中位数实验性
返回 array 所有元素的中位数,或者如果提供,则返回 array 沿维度 dim 的元素的中位数,如果 mask 中的对应元素为 true。
array 元素的中位数定义为“中间”元素,在元素按升序排序后,例如 array_sorted = sort(array)。如果 n = size(array) 是偶数,则中位数为
median(array) = array_sorted( floor( (n + 1) / 2.))
如果 n 是奇数,则中位数为
median(array) = mean( array_sorted( floor( (n + 1) / 2.):floor( (n + 1) / 2.) + 1 ) )
当前实现依赖于在整个数组的副本上应用的选择算法,使用 stdlib_selection 模块提供的 select 子例程。
result = median (array [, mask])
result = median (array, dim [, mask])
泛型子例程
array:应为类型为 integer 或 real 的数组。它是一个 intent(in) 参数。
dim:应为类型为 integer 的标量,其值为 1 到 n 之间,其中 n 是 array 的秩。它是一个 intent(in) 参数。
mask(可选):应为类型为 logical 的标量或与 array 形状相同的数组。它是一个 intent(in) 参数。
如果 array 的类型为 real,则结果的类型为 real,且种类与 array 相同。如果 array 的类型为 real 且包含 IEEE NaN,则结果为 IEEE NaN。如果 array 的类型为 integer,则结果的类型为 real(dp)。
如果省略 dim,则返回包含 array 中所有元素的中位数的标量。否则,返回秩为 n-1 的数组,其中 n 等于 array 的秩,并且形状类似于 array,但省略了维度 dim。
如果指定了 mask,则结果是 array 中所有对应于 mask 的 true 元素的元素的中位数。如果 mask 的每个元素都为 false,则结果为 IEEE NaN。
program example_median
use stdlib_stats, only: median
implicit none
real :: x(1:6) = [1., 2., 3., 4., 5., 6.]
real :: y(1:2, 1:3) = reshape([1., 2., 3., 4., 5., 6.], [2, 3])
print *, median(x) !returns 3.5
print *, median(y) !returns 3.5
print *, median(y, 1) !returns [ 1.5, 3.5, 5.5 ]
print *, median(y, 1, y > 3.) !returns [ NaN, 4.0, 5.5 ]
end program example_median
moment - 数组元素的中心矩实验性
返回 array 所有元素的 k 阶中心矩,或者如果提供,则返回 array 沿维度 dim 的元素的 k 阶中心矩,如果 mask 中的对应元素为 true。
如果提供标量或数组 center,则该函数返回 array 所有元素的 k 阶矩关于 'center' 的值,或者如果提供,则返回 array 沿维度 dim 的元素的 k 阶矩关于 'center' 的值,如果 mask 中的对应元素为 true。
k 阶中心矩定义为
moment(array) = 1/n sum_i (array(i) - mean(array))^k
其中 n 是元素的数量。
k 阶矩关于 center 的值定义为
moment(array) = 1/n sum_i (array(i) - center)^k
result = moment (array, order [, center [, mask]])
result = moment (array, order, dim [, center [, mask]])
泛型子例程
array:应为类型为 integer、real 或 complex 的数组。
order:应为类型为 integer 的标量。
dim:应为类型为 integer 的标量,其值为 1 到 n 之间,其中 n 是 array 的秩。
center(可选):如果未提供 dim,则应为与 result 类型相同的标量。如果提供 dim,则 center 应为标量或数组(形状类似于 array,但省略了维度 dim),且类型与 result 相同。
mask(可选):应为类型为 logical 的标量或与 array 形状相同的数组。
如果 array 的类型为 real 或 complex,则结果的类型与 array 相同。如果 array 的类型为 integer,则结果的类型为 real(dp)。
如果省略 dim,则返回包含 array 中所有元素的 k 阶(中心)矩的标量。否则,返回秩为 n-1 的数组,其中 n 等于 array 的秩,并且形状类似于 array,但省略了维度 dim。
如果指定了 mask,则结果是 array 中所有对应于 mask 的 true 元素的元素的 k 阶(中心)矩。如果 mask 的每个元素都为 false,则结果为 IEEE NaN。
program example_moment
use stdlib_stats, only: moment
implicit none
real :: x(1:6) = [1., 2., 3., 4., 5., 6.]
real :: y(1:2, 1:3) = reshape([1., 2., 3., 4., 5., 6.], [2, 3])
print *, moment(x, 2) !returns 2.9167
print *, moment(y, 2) !returns 2.9167
print *, moment(y, 2, 1) !returns [0.25, 0.25, 0.25]
print *, moment(y, 2, 1, mask=(y > 3.)) !returns [NaN, 0., 0.25]
print *, moment(x, 2, center=0.) !returns 15.1667
print *, moment(y, 1, 1, center=0.) !returns [1.5, 3.5, 5.5]
end program example_moment
var - 数组元素的方差实验性
返回 array 所有元素的方差,或者如果提供,则返回 array 沿维度 dim 的元素的方差,如果 mask 中的对应元素为 true。
默认情况下,方差定义为最佳无偏估计量,并计算为
var(array) = 1/(n-1) sum_i (array(i) - mean(array))^2
其中 n 是元素的数量。
使用 n-1 来进行缩放称为贝塞尔校正。可以使用逻辑参数 corrected 更改缩放。如果 corrected 为 .false.,则总和按 n 缩放,否则按 n-1 缩放。
result = var (array [, mask [, corrected]])
result = var (array, dim [, mask [, corrected]])
泛型子例程
array:应为类型为 integer、real 或 complex 的数组。它是一个 intent(in) 参数。
dim:应为类型为 integer 的标量,其值为 1 到 n 之间,其中 n 是 array 的秩。它是一个 intent(in) 参数。
mask(可选):应为类型为 logical 的标量或与 array 形状相同的数组。它是一个 intent(in) 参数。
corrected(可选):应为类型为 logical 的标量。如果 corrected 为 .true.(默认值),则总和按 n-1 缩放。如果 corrected 为 .false.,则总和按 n 缩放。它是一个 intent(in) 参数。
如果 array 的类型为 real 或 complex,则结果的类型为 real,对应于 array 的类型。如果 array 的类型为 integer,则结果的类型为 real(dp)。
如果dim缺失,则返回包含array中所有元素方差的标量。否则,返回一个秩为n-1的数组,其中n等于array的秩,且形状类似于array,但dim维度被删除。
如果指定了mask,则结果是array中对应于mask中true元素的所有元素的方差。如果mask的每个元素都是false,则结果为IEEE NaN。
如果方差仅使用单个元素计算,则如果corrected为.true.,则结果为IEEE NaN;如果corrected为.false.,则结果为0.。
program example_var
use stdlib_stats, only: var
implicit none
real :: x(1:6) = [1., 2., 3., 4., 5., 6.]
real :: y(1:2, 1:3) = reshape([1., 2., 3., 4., 5., 6.], [2, 3])
print *, var(x) !returns 3.5
print *, var(x, corrected=.false.) !returns 2.9167
print *, var(y) !returns 3.5
print *, var(y, 1) !returns [0.5, 0.5, 0.5]
print *, var(y, 1, y > 3.) !returns [NaN, NaN, 0.5]
print *, var(y, 1, y > 3., corrected=.false.) !returns [NaN, 0., 0.25]
end program example_var