統計
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)
計算 r
單一維度的 v
的平均值,並將結果寫入 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
包含 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.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> 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)
在指定的維度上計算陣列的平均值。
空陣列的 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!(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.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)
計算兩個數字 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.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 預設值相同。
關鍵字參數 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.8000000000000003
Statistics.quantile
— 函式quantile(itr, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)
在指定機率或機率向量或元組 p
上,計算集合 itr
的分位數,區間為 [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
輸入,並計算非遺失值的百分位數。
參考資料
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