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