Statistics

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

Statistics.stdFunction
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 中元素的数量。

如果 itrAbstractArray,可以提供 dims 来计算各维度的标准差。

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

Note

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

source
Statistics.stdmFunction
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 中元素的数量。

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

Note

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

source
Statistics.varFunction
var(itr; corrected::Bool=true, mean=nothing[, dims])

计算集合 itr 的样本方差。

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

如果 itrAbstractArray,可以提供 dims 来计算各维度的方差。

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

Note

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

source
Statistics.varmFunction
varm(itr, mean; dims, corrected::Bool=true)

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

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

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

Note

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

source
Statistics.corFunction
cor(x::AbstractVector)

返回数字一。

source
cor(X::AbstractMatrix; dims::Int=1)

计算矩阵 X 在维度 dims 上的皮尔逊相关矩阵。

source
cor(x::AbstractVector, y::AbstractVector)

计算向量 xy 之间的皮尔逊相关性。

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

计算向量或矩阵 XY 在维度 dims 上的皮尔逊相关系数。

source
Statistics.covFunction
cov(x::AbstractVector; corrected::Bool=true)

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

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

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

source
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)^*$

source
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)

source
Statistics.mean!Function
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
source
Statistics.meanFunction
mean(itr)

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

Note

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

示例

julia> using Statistics

julia> mean(1:20)
10.5

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

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

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

julia> using Statistics

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

julia> mean([√1, √2, √3])
1.3820881233139908
source
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
source
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
source
Statistics.medianFunction
median(itr)

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

Note

如果 itr 包含 NaNmissing 值,结果也将是 NaNmissing(如果 itr 同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 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
source
median(A::AbstractArray; dims)

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

示例

julia> using Statistics

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

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

source
middle(x, y)

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

source
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
source
Statistics.quantile!Function
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:nn = length(v)。这对应于 Hyndman 和 Fan (1996) 的定义 7,并且与 R 和 NumPy 的默认值相同。

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

  • 定义 4: alpha=0beta=1
  • 定义 5: alpha=0.5beta=0.5(MATLAB 默认)
  • 定义 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
Note

如果 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
source
Statistics.quantileFunction
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:nn = length(itr)。这对应于 Hyndman 和 Fan (1996) 的定义 7,并且与 R 和 NumPy 的默认值相同。

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

  • 定义 4: alpha=0beta=1
  • 定义 5: alpha=0.5beta=0.5(MATLAB 默认)
  • 定义 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
Note

如果 v 包含 NaNmissing 值,将抛出 ArgumentError。使用 skipmissing 函数来省略 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
source