Statistics
標準ライブラリの 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
で割られ、false
だと n
で割られます (n
は itr
の要素数)。
itr
が AbstractArray
なら、dims
を指定することで特定の次元に関する標準偏差を計算でき、さらに mean
には itr
の各次元の平均値を渡すことができます。
mean
には事前に計算された平均値を渡すことができます。dims
が指定されるなら、mean
は mean(itr, dims=dims)
と同じ形状を持つ配列である必要があります (末尾にサイズ 1 の次元が余計にあっても構いません)。
itr
に NaN
または missing
が含まれるときは、返り値も NaN
または missing
(両方含まれるなら missing
) となります。missing
を無視して欠損していない値の標準偏差を計算するには skipmissing
を使ってください。
Statistics.stdm
── 関数
stdm(itr, mean; corrected::Bool=true)
既知の平均値 mean
を使ってコレクション itr
の標本標準偏差を計算します。
この関数が使うアルゴリズムは itr
の各要素が同一の生成分布から独立に取られたという仮定の下で、生成分布の標準偏差の推定値を返します。配列に対しては sqrt(sum((itr .- mean(itr)).^2) / (length(itr) - 1))
の計算と等価です。corrected
がデフォルトの true
だと残差平方和は n-1
で割られ、false
だと n
で割られます (n
は itr
の要素数)。
mean
には事前に計算された平均値を渡すことができます。dims
が指定されるなら、mean
は mean(itr, dims=dims)
と同じ形状を持つ配列である必要があります (末尾にサイズ 1 の次元が余計にあっても構いません)。
itr
に NaN
または missing
が含まれるときは、返り値も NaN
または missing
(両方含まれるなら missing
) となります。missing
を無視して欠損していない値の標準偏差を計算するには skipmissing
を使ってください。
Statistics.var
── 関数
var(itr; corrected::Bool=true, mean=nothing[, dims])
コレクション itr
の標本分散を計算します。
この関数が使うアルゴリズムは itr
の各要素が同一の生成分布から独立に取られたという仮定の下で、生成分布の分散の推定値を返します。配列に対しては sum((itr .- mean(itr)).^2) / (length(itr) - 1)
の計算と等価です。corrected
がデフォルトの true
だと残差平方和は n-1
で割られ、false
だと n
で割られます (n
は itr
の要素数)。
itr
が AbstractArray
なら、dims
を指定することで特定の次元に関する標準偏差を計算できます。
mean
には事前に計算された平均値を渡すことができます。dims
が指定されるなら、mean
は mean(itr, dims=dims)
と同じ形状を持つ配列である必要があります (末尾にサイズ 1 の次元が余計にあっても構いません)。
itr
に NaN
または missing
が含まれるときは、返り値も NaN
または missing
(両方含まれるなら missing
) となります。missing
を無視して欠損していない値の標準偏差を計算するには skipmissing
を使ってください。
Statistics.varm
── 関数
varm(itr, mean; dims, corrected::Bool=true)
既知の平均値 mean
を使ってコレクション itr
の標本分散を計算します。
この関数が使うアルゴリズムは itr
の各要素が同一の生成分布から独立に取られたという仮定の下で、生成分布の分散の推定値を返します。配列に対しては sum((itr .- mean(itr)).^2) / (length(itr) - 1)
の計算と等価です。corrected
がデフォルトの true
だと残差平方和は n-1
で割られ、false
だと n
で割られます (n
は itr
の要素数)。
mean
には事前に計算された平均値を渡すことができます。dims
が指定されるなら、mean
は mean(itr, dims=dims)
と同じ形状を持つ配列である必要があります (末尾にサイズ 1 の次元が余計にあっても構いません)。
itr
に NaN
または missing
が含まれるときは、返り値も NaN
または missing
(両方含まれるなら missing
) となります。missing
を無視して欠損していない値の標準偏差を計算するには skipmissing
を使ってください。
Statistics.cor
── 関数
cor(X::AbstractVecOrMat, Y::AbstractVecOrMat; dims=1)
行列 X
と Y
の dims
番目の次元に関するピアソンの相関を計算します。
Statistics.cov
── 関数
cov(x::AbstractVector; corrected::Bool=true)
ベクトル x
の分散を計算します。corrected
がデフォルトの true
だと残差平方和は n-1
で割られ、false
だと n
で割られます (n
は itr
の要素数)。
cov(X::AbstractMatrix; dims::Int=1, corrected::Bool=true)
行列 X
の dims
番目の次元に関する共分散行列を計算します。corrected
がデフォルトの true
だと残差平方和は n-1
で割られ、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
で割られ、false
だと n
で割られます (n = size(X, dims) = size(Y, dims)
)。
Statistics.mean!
── 関数
Statistics.mean
── 関数
mean(itr)
コレクション itr
に含まれる全ての要素の平均値を計算します。
itr
に NaN
または missing
が含まれるときは、返り値も NaN
または missing
(両方含まれるなら missing
) となります。missing
を無視して欠損していない値の標準偏差を計算するには skipmissing
を使ってください。
例
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::Function, itr)
コレクション itr
の各要素に関数 f
を適用し、それらの平均値を計算します。
例
julia> using Statistics
julia> mean(√, [1, 2, 3])
1.3820881233139908
julia> mean([√1, √2, √3])
1.3820881233139908
mean(f::Function, A::AbstractArray; dims)
配列 A
の各要素に関数 f
を適用し、結果の配列の 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 Array{Float64,2}:
1.3820881233139908
2.2285192400943226
mean(A::AbstractArray; dims)
配列の指定された次元に関する平均値を計算します。
空配列に対する mean
は Julia 1.1 以降でサポートされます。
例
julia> using Statistics
julia> A = [1 2; 3 4]
2×2 Array{Int64,2}:
1 2
3 4
julia> mean(A, dims=1)
1×2 Array{Float64,2}:
2.0 3.0
julia> mean(A, dims=2)
2×1 Array{Float64,2}:
1.5
3.5
Statistics.median!
── 関数
Statistics.median
── 関数
median(itr)
コレクションに含まれる全要素の中央値を計算します。要素数が奇数のコレクションには正確な中央値が存在しないので、そのような場合の返り値は中央にある二つの要素の平均値となります。
itr
に NaN
または missing
が含まれるときは、返り値も NaN
または missing
(両方含まれるなら missing
) となります。missing
を無視して欠損していない値の標準偏差を計算するには skipmissing
を使ってください。
例
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 Array{Float64,2}:
2.0 3.0
Statistics.middle
── 関数
middle(range::AbstractRange)
区間の "中央の値" (middle value) を両端の値の平均値として計算します2。区間はソートされているので、平均値は最初の要素と最後の要素を使って計算されます。
julia> using Statistics
julia> middle(1:10)
5.5
middle(a)
配列 a
の "中央の値" (middle value) を計算します。最小値と最大値の平均値として計算されます。
julia> using Statistics
julia> a = [1,2,3.6,10.9]
4-element Array{Float64,1}:
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
がソートされているとみなせるかどうかを指定します。sorted
が false
(デフォルト) だと v
の部分的なソートがインプレースに行われます。
デフォルトの設定 (alpha = beta = 1
) だと、分位数は n = length(v)
, k = 1
, 2
, ..., n
に対する点 ((k-1)/(n-1), v[k])
を線形補間した折れ線の x 座標が p
の点の y 座標として計算されます。これは Hyndman and Fan (1966) の Definition 7 に対応し、R と NumPy のデフォルトと同じです。
キーワード引数 alpha
と beta
は [Hyndman and Fan] と同じパラメータに対応します。異なる値に設定すればこの論文の Definition 4-9 に対応する分位数を計算できます:
- Def. 4:
alpha=0
,beta=1
- Def. 5:
alpha=0.5
,beta=0.5
- Def. 6:
alpha=0
,beta=0
(Excel のPERCENTILE.EXC
, Python のデフォルト, Stata のaltdef
) - Def. 7:
alpha=1
,beta=1
(Julia, R, NumPy のデフォルト, Excel のPERCENTILE
とPERCENTILE.INC
, Python の'inclusive'
) - Def. 8:
alpha=1/3
,beta=1/3
- Def. 9:
alpha=3/8
,beta=3/8
参考文献
-
[Hyndman and Fan] Hyndman, R.J and Fan, Y. (1996) "Sample Quantiles in Statistical Packages", The American Statistician, Vol. 50, No. 4, pp. 361-365
-
Quantile (Wikipedia): 異なる分位数の定義について
例
julia> using Statistics
julia> x = [3, 2, 1];
julia> quantile!(x, 0.5)
2.0
julia> x
3-element Array{Int64,1}:
1
2
3
julia> y = zeros(3);
julia> quantile!(y, x, [0.1, 0.5, 0.9]) === y
true
julia> y
3-element Array{Float64,1}:
1.2000000000000002
2.0
2.8000000000000003
Statistics.quantile
── 関数
quantile(itr, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)
ベクトル v
の分位数を計算します。p
は区間 \([0,1]\) に含まれる確率あるいは確率のベクトル/タプルです。キーワード引数 sorted
は v
がソートされているとみなせるかどうかを指定します。
標本分位数は Q(p) = (1-γ)*x[j] + γ*x[j+1]
と定義されます。ここで x[j]
は第 j
順序統計量であり、γ
は j = floor(n*p + m)
, m = alpha + p*(1 - alpha - beta)
, g = n*p + m - j
の関数です。
デフォルトの設定 (alpha = beta = 1
) だと、分位数は n = length(v)
, k = 1
, 2
, ..., n
に対する点 ((k-1)/(n-1), v[k])
を線形補間した折れ線の x 座標が p
の点の y 座標として計算されます。これは Hyndman and Fan (1966) の Definition 7 に対応し、R と NumPy のデフォルトと同じです。
キーワード引数 alpha
と beta
は Hyndman and Fan にあるのと同じパラメータに対応します。異なる値に設定すればこの論文の Definition 4-9 に対応する分位数を計算できます:
- Def. 4:
alpha=0
,beta=1
- Def. 5:
alpha=0.5
,beta=0.5
- Def. 6:
alpha=0
,beta=0
(Excel のPERCENTILE.EXC
, Python のデフォルト, Stata のaltdef
) - Def. 7:
alpha=1
,beta=1
(Julia, R, NumPy のデフォルト, Excel のPERCENTILE
とPERCENTILE.INC
, Python の'inclusive'
) - Def. 8:
alpha=1/3
,beta=1/3
- Def. 9:
alpha=3/8
,beta=3/8
v
が NaN
または missing
を含むときは ArgumentError
が送出されます。missing
を無視して欠損していない値の分位数を計算するには skipmissing
を使ってください。
参考文献
-
Hyndman, R.J and Fan, Y. (1996) "Sample Quantiles in Statistical Packages", The American Statistician, Vol. 50, No. 4, pp. 361-365
-
Quantile (Wikipedia): 異なる分位数の定義について
例
julia> using Statistics
julia> quantile(0:20, 0.5)
10.0
julia> quantile(0:20, [0.1, 0.5, 0.9])
3-element Array{Float64,1}:
2.0
10.0
18.000000000000004
julia> quantile(skipmissing([1, 10, missing]), 0.5)
5.5