统计
Statistics 标准库模块包含基本统计功能。
Statistics.std — 函数std(itr; corrected::Bool=true, mean=nothing[, dims])计算集合 itr 的样本标准差。
该算法在假设 itr 的每个条目都是从同一个未知分布中抽取的样本(样本不相关)的情况下,返回生成分布标准差的估计值。对于数组,此计算等效于计算 sqrt(sum((itr .- mean(itr)).^2) / (length(itr) - 1))。如果 corrected 为 true,则将总和按 n-1 缩放,而如果 corrected 为 false,则将总和按 n 缩放,其中 n 是 itr 中的元素数量。
如果 itr 是一个 AbstractArray,则可以提供 dims 来计算跨维度的标准差。
可以提供一个预先计算的 mean。当指定 dims 时,mean 必须是一个与 mean(itr, dims=dims) 形状相同的数组(允许额外的尾部单例维度)。
如果数组包含 NaN 或 missing 值,结果也是 NaN 或 missing(如果数组同时包含两者,则 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))。如果 corrected 为 true,则将总和按 n-1 缩放,而如果 corrected 为 false,则将总和按 n 缩放,其中 n 是 itr 中的元素数量。
如果 itr 是一个 AbstractArray,则可以提供 dims 来计算跨维度的标准差。在这种情况下,mean 必须是一个与 mean(itr, dims=dims) 形状相同的数组(允许额外的尾部单例维度)。
如果数组包含 NaN 或 missing 值,结果也是 NaN 或 missing(如果数组同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 missing 条目并计算非 missing 值的标准差。
Statistics.var — 函数var(itr; corrected::Bool=true, mean=nothing[, dims])计算集合 itr 的样本方差。
该算法在假设 itr 的每个条目都是从同一个未知分布中抽取的样本(样本不相关)的情况下,返回生成分布方差的估计值。对于数组,此计算等效于计算 sum((itr .- mean(itr)).^2) / (length(itr) - 1)。如果 corrected 为 true,则将总和按 n-1 缩放,而如果 corrected 为 false,则将总和按 n 缩放,其中 n 是 itr 中的元素数量。
如果 itr 是一个 AbstractArray,则可以提供 dims 来计算跨维度的方差。
可以提供一个预先计算的 mean。当指定 dims 时,mean 必须是一个与 mean(itr, dims=dims) 形状相同的数组(允许额外的尾部单例维度)。
如果数组包含 NaN 或 missing 值,结果也是 NaN 或 missing(如果数组同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 missing 条目并计算非 missing 值的方差。
Statistics.varm — 函数varm(itr, mean; dims, corrected::Bool=true)计算集合 itr 的样本方差,已知平均值 mean。
该算法在假设 itr 的每个条目都是从同一个未知分布中抽取的样本(样本不相关)的情况下,返回生成分布方差的估计值。对于数组,此计算等效于计算 sum((itr .- mean(itr)).^2) / (length(itr) - 1)。如果 corrected 为 true,则将总和按 n-1 缩放,而如果 corrected 为 false,则将总和按 n 缩放,其中 n 是 itr 中的元素数量。
如果 itr 是一个 AbstractArray,则可以提供 dims 来计算跨维度的方差。在这种情况下,mean 必须是一个与 mean(itr, dims=dims) 形状相同的数组(允许额外的尾部单例维度)。
如果数组包含 NaN 或 missing 值,结果也是 NaN 或 missing(如果数组同时包含两者,则 missing 优先)。使用 skipmissing 函数来省略 missing 条目并计算非 missing 值的方差。
Statistics.cor — 函数cor(x::AbstractVector)返回数字一。
cor(X::AbstractMatrix; dims::Int=1)计算矩阵 X 沿维度 dims 的 Pearson 相关矩阵。
cor(x::AbstractVector, y::AbstractVector)计算向量 x 和 y 之间的 Pearson 相关系数。
cor(X::AbstractVecOrMat, Y::AbstractVecOrMat; dims=1)计算向量或矩阵 X 和 Y 沿维度 dims 的 Pearson 相关系数。
Statistics.cov — 函数cov(x::AbstractVector; corrected::Bool=true)计算向量 x 的方差。如果 corrected 为 true(默认值),则将总和按 n-1 缩放,而如果 corrected 为 false,则将总和按 n 缩放,其中 n = length(x)。
cov(X::AbstractMatrix; dims::Int=1, corrected::Bool=true)计算矩阵 X 沿维度 dims 的协方差矩阵。如果 corrected 为 true(默认值),则将总和按 n-1 缩放,而如果 corrected 为 false,则将总和按 n 缩放,其中 n = size(X, dims)。
cov(x::AbstractVector, y::AbstractVector; corrected::Bool=true)计算向量 x 和 y 之间的协方差。如果 corrected 为 true(默认值),则计算 $\frac{1}{n-1}\sum_{i=1}^n (x_i-\bar x) (y_i-\bar y)^*$,其中 $*$ 表示复共轭,n = length(x) = length(y)。如果 corrected 为 false,则计算 $\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)计算向量或矩阵 X 和 Y 沿维度 dims 的协方差。如果 corrected 为 true(默认值),则将总和按 n-1 缩放,而如果 corrected 为 false,则将总和按 n 缩放,其中 n = size(X, dims) = size(Y, dims)。
Statistics.mean! — 函数mean!(r, v)计算 v 在 r 的单例维度上的平均值,并将结果写入 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.0Statistics.mean — 函数mean(itr)计算集合中所有元素的平均值。
如果 itr 包含 NaN 或 missing 值,结果也是 NaN 或 missing(如果数组同时包含两者,则 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.0mean(f, itr)将函数 f 应用于集合 itr 的每个元素,并取平均值。
julia> using Statistics
julia> mean(√, [1, 2, 3])
1.3820881233139908
julia> mean([√1, √2, √3])
1.3820881233139908mean(f, A::AbstractArray; dims)将函数 f 应用于数组 A 的每个元素,并跨维度 dims 取平均值。
此方法需要至少 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.2285192400943226mean(A::AbstractArray; dims)计算数组在给定维度上的平均值。
空数组的 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.5Statistics.median! — 函数median!(v)类似于 median,但可能会覆盖输入向量。
Statistics.median — 函数median(itr)计算集合中所有元素的中位数。对于偶数个元素,不存在精确的中位数元素,因此结果等同于计算两个中位数元素的平均值。
如果 itr 包含 NaN 或 missing 值,则结果也是 NaN 或 missing(如果 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.0median(A::AbstractArray; dims)沿给定维度计算数组的中位数。
示例
julia> using Statistics
julia> median([1 2; 3 4], dims=1)
1×2 Matrix{Float64}:
2.0 3.0Statistics.middle — 函数middle(x)计算标量值的中点,这等同于 x 本身,但为了保持一致性,其类型与 middle(x, x) 相同。
middle(x, y)计算两个数字 x 和 y 的中点,其值和类型等同于计算它们的平均值 ((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.95Statistics.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 默认值相同。
关键字参数 alpha 和 beta 对应于 Hyndman 和 Fan 中的相同参数,将它们设置为不同的值允许使用本文中定义的任何方法 4-9 计算分位数。
- 定义 4:
alpha=0,beta=1 - 定义 5:
alpha=0.5,beta=0.5 - 定义 6:
alpha=0,beta=0(ExcelPERCENTILE.EXC,Python 默认值,Stataaltdef) - 定义 7:
alpha=1,beta=1(Julia,R 和 NumPy 默认值,ExcelPERCENTILE和PERCENTILE.INC,Python'inclusive') - 定义 8:
alpha=1/3,beta=1/3 - 定义 9:
alpha=3/8,beta=3/8
如果 v 包含 NaN 或 missing 值,则会抛出 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.8000000000000003Statistics.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 默认值相同。
关键字参数 alpha 和 beta 对应于 Hyndman 和 Fan 中的相同参数,将它们设置为不同的值允许使用本文中定义的任何方法 4-9 计算分位数。
- 定义 4:
alpha=0,beta=1 - 定义 5:
alpha=0.5,beta=0.5 - 定义 6:
alpha=0,beta=0(ExcelPERCENTILE.EXC,Python 默认值,Stataaltdef) - 定义 7:
alpha=1,beta=1(Julia,R 和 NumPy 默认值,ExcelPERCENTILE和PERCENTILE.INC,Python'inclusive') - 定义 8:
alpha=1/3,beta=1/3 - 定义 9:
alpha=3/8,beta=3/8
如果 v 包含 NaN 或 missing 值,则会抛出 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