统计

Statistics 标准库模块包含基本统计功能。

Statistics.std函数
std(itr; corrected::Bool=true, mean=nothing[, dims])

计算集合 itr 的样本标准差。

该算法在假设 itr 的每个条目都是从同一个未知分布中抽取的样本(样本不相关)的情况下,返回生成分布标准差的估计值。对于数组,此计算等效于计算 sqrt(sum((itr .- mean(itr)).^2) / (length(itr) - 1))。如果 correctedtrue,则将总和按 n-1 缩放,而如果 correctedfalse,则将总和按 n 缩放,其中 nitr 中的元素数量。

如果 itr 是一个 AbstractArray,则可以提供 dims 来计算跨维度的标准差。

可以提供一个预先计算的 mean。当指定 dims 时,mean 必须是一个与 mean(itr, dims=dims) 形状相同的数组(允许额外的尾部单例维度)。

注意

如果数组包含 NaNmissing 值,结果也是 NaNmissing(如果数组同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 missing 条目并计算非 missing 值的标准差。

来源
Statistics.stdm函数
stdm(itr, mean; corrected::Bool=true[, dims])

计算集合 itr 的样本标准差,已知平均值 mean

该算法在假设 itr 的每个条目都是从同一个未知分布中抽取的样本(样本不相关)的情况下,返回生成分布标准差的估计值。对于数组,此计算等效于计算 sqrt(sum((itr .- mean(itr)).^2) / (length(itr) - 1))。如果 correctedtrue,则将总和按 n-1 缩放,而如果 correctedfalse,则将总和按 n 缩放,其中 nitr 中的元素数量。

如果 itr 是一个 AbstractArray,则可以提供 dims 来计算跨维度的标准差。在这种情况下,mean 必须是一个与 mean(itr, dims=dims) 形状相同的数组(允许额外的尾部单例维度)。

注意

如果数组包含 NaNmissing 值,结果也是 NaNmissing(如果数组同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 missing 条目并计算非 missing 值的标准差。

来源
Statistics.var函数
var(itr; corrected::Bool=true, mean=nothing[, dims])

计算集合 itr 的样本方差。

该算法在假设 itr 的每个条目都是从同一个未知分布中抽取的样本(样本不相关)的情况下,返回生成分布方差的估计值。对于数组,此计算等效于计算 sum((itr .- mean(itr)).^2) / (length(itr) - 1)。如果 correctedtrue,则将总和按 n-1 缩放,而如果 correctedfalse,则将总和按 n 缩放,其中 nitr 中的元素数量。

如果 itr 是一个 AbstractArray,则可以提供 dims 来计算跨维度的方差。

可以提供一个预先计算的 mean。当指定 dims 时,mean 必须是一个与 mean(itr, dims=dims) 形状相同的数组(允许额外的尾部单例维度)。

注意

如果数组包含 NaNmissing 值,结果也是 NaNmissing(如果数组同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 missing 条目并计算非 missing 值的方差。

来源
Statistics.varm函数
varm(itr, mean; dims, corrected::Bool=true)

计算集合 itr 的样本方差,已知平均值 mean

该算法在假设 itr 的每个条目都是从同一个未知分布中抽取的样本(样本不相关)的情况下,返回生成分布方差的估计值。对于数组,此计算等效于计算 sum((itr .- mean(itr)).^2) / (length(itr) - 1)。如果 correctedtrue,则将总和按 n-1 缩放,而如果 correctedfalse,则将总和按 n 缩放,其中 nitr 中的元素数量。

如果 itr 是一个 AbstractArray,则可以提供 dims 来计算跨维度的方差。在这种情况下,mean 必须是一个与 mean(itr, dims=dims) 形状相同的数组(允许额外的尾部单例维度)。

注意

如果数组包含 NaNmissing 值,结果也是 NaNmissing(如果数组同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 missing 条目并计算非 missing 值的方差。

来源
Statistics.cor函数
cor(x::AbstractVector)

返回数字一。

来源
cor(X::AbstractMatrix; dims::Int=1)

计算矩阵 X 沿维度 dims 的 Pearson 相关矩阵。

来源
cor(x::AbstractVector, y::AbstractVector)

计算向量 xy 之间的 Pearson 相关系数。

来源
cor(X::AbstractVecOrMat, Y::AbstractVecOrMat; dims=1)

计算向量或矩阵 XY 沿维度 dims 的 Pearson 相关系数。

来源
Statistics.cov函数
cov(x::AbstractVector; corrected::Bool=true)

计算向量 x 的方差。如果 correctedtrue(默认值),则将总和按 n-1 缩放,而如果 correctedfalse,则将总和按 n 缩放,其中 n = length(x)

来源
cov(X::AbstractMatrix; dims::Int=1, corrected::Bool=true)

计算矩阵 X 沿维度 dims 的协方差矩阵。如果 correctedtrue(默认值),则将总和按 n-1 缩放,而如果 correctedfalse,则将总和按 n 缩放,其中 n = size(X, dims)

来源
cov(x::AbstractVector, y::AbstractVector; corrected::Bool=true)

计算向量 xy 之间的协方差。如果 correctedtrue(默认值),则计算 $\frac{1}{n-1}\sum_{i=1}^n (x_i-\bar x) (y_i-\bar y)^*$,其中 $*$ 表示复共轭,n = length(x) = length(y)。如果 correctedfalse,则计算 $\frac{1}{n}\sum_{i=1}^n (x_i-\bar x) (y_i-\bar y)^*$.

来源
cov(X::AbstractVecOrMat, Y::AbstractVecOrMat; dims::Int=1, corrected::Bool=true)

计算向量或矩阵 XY 沿维度 dims 的协方差。如果 correctedtrue(默认值),则将总和按 n-1 缩放,而如果 correctedfalse,则将总和按 n 缩放,其中 n = size(X, dims) = size(Y, dims)

来源
Statistics.mean!函数
mean!(r, v)

计算 vr 的单例维度上的平均值,并将结果写入 r

示例

julia> using Statistics

julia> v = [1 2; 3 4]
2×2 Matrix{Int64}:
 1  2
 3  4

julia> mean!([1., 1.], v)
2-element Vector{Float64}:
 1.5
 3.5

julia> mean!([1. 1.], v)
1×2 Matrix{Float64}:
 2.0  3.0
来源
Statistics.mean函数
mean(itr)

计算集合中所有元素的平均值。

注意

如果 itr 包含 NaNmissing 值,结果也是 NaNmissing(如果数组同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 missing 条目并计算非 missing 值的平均值。

示例

julia> using Statistics

julia> mean(1:20)
10.5

julia> mean([1, missing, 3])
missing

julia> mean(skipmissing([1, missing, 3]))
2.0
来源
mean(f, itr)

将函数 f 应用于集合 itr 的每个元素,并取平均值。

julia> using Statistics

julia> mean(√, [1, 2, 3])
1.3820881233139908

julia> mean([√1, √2, √3])
1.3820881233139908
来源
mean(f, A::AbstractArray; dims)

将函数 f 应用于数组 A 的每个元素,并跨维度 dims 取平均值。

Julia 1.3

此方法需要至少 Julia 1.3。

julia> using Statistics

julia> mean(√, [1, 2, 3])
1.3820881233139908

julia> mean([√1, √2, √3])
1.3820881233139908

julia> mean(√, [1 2 3; 4 5 6], dims=2)
2×1 Matrix{Float64}:
 1.3820881233139908
 2.2285192400943226
来源
mean(A::AbstractArray; dims)

计算数组在给定维度上的平均值。

Julia 1.1

空数组的 mean 需要至少 Julia 1.1。

示例

julia> using Statistics

julia> A = [1 2; 3 4]
2×2 Matrix{Int64}:
 1  2
 3  4

julia> mean(A, dims=1)
1×2 Matrix{Float64}:
 2.0  3.0

julia> mean(A, dims=2)
2×1 Matrix{Float64}:
 1.5
 3.5
来源
Statistics.median函数
median(itr)

计算集合中所有元素的中位数。对于偶数个元素,不存在精确的中位数元素,因此结果等同于计算两个中位数元素的平均值。

注意

如果 itr 包含 NaNmissing 值,则结果也是 NaNmissing(如果 itr 包含两者,则 missing 优先)。使用 skipmissing 函数省略 missing 项并计算非 missing 值的中位数。

示例

julia> using Statistics

julia> median([1, 2, 3])
2.0

julia> median([1, 2, 3, 4])
2.5

julia> median([1, 2, missing, 4])
missing

julia> median(skipmissing([1, 2, missing, 4]))
2.0
来源
median(A::AbstractArray; dims)

沿给定维度计算数组的中位数。

示例

julia> using Statistics

julia> median([1 2; 3 4], dims=1)
1×2 Matrix{Float64}:
 2.0  3.0
来源
Statistics.middle函数
middle(x)

计算标量值的中点,这等同于 x 本身,但为了保持一致性,其类型与 middle(x, x) 相同。

来源
middle(x, y)

计算两个数字 xy 的中点,其值和类型等同于计算它们的平均值 ((x + y) / 2)。

来源
middle(a::AbstractArray)

计算数组 a 的中点,这包括找到其极值然后计算它们的平均值。

julia> using Statistics

julia> middle(1:10)
5.5

julia> a = [1,2,3.6,10.9]
4-element Vector{Float64}:
  1.0
  2.0
  3.6
 10.9

julia> middle(a)
5.95
来源
Statistics.quantile!函数
quantile!([q::AbstractArray, ] v::AbstractVector, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)

计算向量 v 在指定概率或概率向量或元组 p(在区间 [0,1] 上)处的分位数。如果 p 是一个向量,则还可以指定一个可选的输出数组 q。(如果未提供,则将创建一个新的输出数组。)关键字参数 sorted 指示是否可以假设 v 已排序;如果为 false(默认值),则 v 的元素将在原地部分排序。

样本分位数由 Q(p) = (1-γ)*x[j] + γ*x[j+1] 定义,其中 x[j]v 的第 j 个顺序统计量,j = floor(n*p + m)m = alpha + p*(1 - alpha - beta)γ = n*p + m - j

默认情况下 (alpha = beta = 1),分位数通过点 ((k-1)/(n-1), x[k]) 之间的线性插值计算,其中 k = 1:n,其中 n = length(v)。这对应于 Hyndman 和 Fan (1996) 的定义 7,与 R 和 NumPy 默认值相同。

关键字参数 alphabeta 对应于 Hyndman 和 Fan 中的相同参数,将它们设置为不同的值允许使用本文中定义的任何方法 4-9 计算分位数。

  • 定义 4:alpha=0beta=1
  • 定义 5:alpha=0.5beta=0.5
  • 定义 6:alpha=0beta=0(Excel PERCENTILE.EXC,Python 默认值,Stata altdef
  • 定义 7:alpha=1beta=1(Julia,R 和 NumPy 默认值,Excel PERCENTILEPERCENTILE.INC,Python 'inclusive'
  • 定义 8:alpha=1/3beta=1/3
  • 定义 9:alpha=3/8beta=3/8
注意

如果 v 包含 NaNmissing 值,则会抛出 ArgumentError

参考文献

  • Hyndman,R.J 和 Fan,Y. (1996) "统计软件包中的样本分位数",美国统计学家,第 50 卷,第 4 期,第 361-365 页

  • 维基百科上的分位数 详细介绍了不同的分位数定义

示例

julia> using Statistics

julia> x = [3, 2, 1];

julia> quantile!(x, 0.5)
2.0

julia> x
3-element Vector{Int64}:
 1
 2
 3

julia> y = zeros(3);

julia> quantile!(y, x, [0.1, 0.5, 0.9]) === y
true

julia> y
3-element Vector{Float64}:
 1.2000000000000002
 2.0
 2.8000000000000003
来源
Statistics.quantile函数
quantile(itr, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)

计算集合 itr 在指定概率或概率向量或元组 p(在区间 [0,1] 上)处的分位数。关键字参数 sorted 指示是否可以假设 itr 已排序。

样本分位数由 Q(p) = (1-γ)*x[j] + γ*x[j+1] 定义,其中 x[j]itr 的第 j 个顺序统计量,j = floor(n*p + m)m = alpha + p*(1 - alpha - beta)γ = n*p + m - j

默认情况下 (alpha = beta = 1),分位数通过点 ((k-1)/(n-1), x[k]) 之间的线性插值计算,其中 k = 1:n,其中 n = length(itr)。这对应于 Hyndman 和 Fan (1996) 的定义 7,与 R 和 NumPy 默认值相同。

关键字参数 alphabeta 对应于 Hyndman 和 Fan 中的相同参数,将它们设置为不同的值允许使用本文中定义的任何方法 4-9 计算分位数。

  • 定义 4:alpha=0beta=1
  • 定义 5:alpha=0.5beta=0.5
  • 定义 6:alpha=0beta=0(Excel PERCENTILE.EXC,Python 默认值,Stata altdef
  • 定义 7:alpha=1beta=1(Julia,R 和 NumPy 默认值,Excel PERCENTILEPERCENTILE.INC,Python 'inclusive'
  • 定义 8:alpha=1/3beta=1/3
  • 定义 9:alpha=3/8beta=3/8
注意

如果 v 包含 NaNmissing 值,则会抛出 ArgumentError。使用 skipmissing 函数省略 missing 项并计算非 missing 值的分位数。

参考文献

  • Hyndman,R.J 和 Fan,Y. (1996) "统计软件包中的样本分位数",美国统计学家,第 50 卷,第 4 期,第 361-365 页

  • 维基百科上的分位数 详细介绍了不同的分位数定义

示例

julia> using Statistics

julia> quantile(0:20, 0.5)
10.0

julia> quantile(0:20, [0.1, 0.5, 0.9])
3-element Vector{Float64}:
  2.0
 10.0
 18.000000000000004

julia> quantile(skipmissing([1, 10, missing]), 0.5)
5.5
来源