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