Statistics
統計標準ライブラリモジュールには基本的な統計機能が含まれています。
Statistics.std
— Functionstd(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
エントリを省略し、非欠損値の標準偏差を計算してください。
Statistics.stdm
— Functionstdm(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
エントリを省略し、非欠損値の標準偏差を計算してください。
Statistics.var
— Functionvar(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
エントリを省略し、非欠損値の分散を計算します。
Statistics.varm
— Functionvarm(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
エントリを省略し、非欠損値の分散を計算してください。
Statistics.cor
— Functioncor(x::AbstractVector)
1
cor(X::AbstractMatrix; dims::Int=1)
行列 X
の次元 dims
に沿ったピアソン相関行列を計算します。
cor(x::AbstractVector, y::AbstractVector)
ベクトル x
と y
の間のピアソン相関を計算します。
cor(X::AbstractVecOrMat, Y::AbstractVecOrMat; dims=1)
ベクトルまたは行列 X
と Y
の間のピアソン相関を次元 dims
に沿って計算します。
Statistics.cov
— Functioncov(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!
— Functionmean!(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.0
Statistics.mean
— Functionmean(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)
コレクション itr
の各要素に関数 f
を適用し、平均を取ります。
julia> using Statistics
julia> mean(√, [1, 2, 3])
1.3820881233139908
julia> mean([√1, √2, √3])
1.3820881233139908
mean(f, 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 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!
— Functionmedian!(v)
median
と同様ですが、入力ベクトルを上書きする可能性があります。
Statistics.median
— Functionmedian(itr)
コレクション内のすべての要素の中央値を計算します。要素数が偶数の場合、正確な中央値の要素は存在しないため、結果は2つの中央値の要素の平均を計算することと同等です。
itr
に NaN
または missing
値が含まれている場合、結果も NaN
または missing
になります(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
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
— Functionmiddle(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!
— Functionquantile!([q::AbstractArray, ] v::AbstractVector, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)
ベクトル v
の指定された確率または確率のベクトルまたはタプル p
における分位数を計算します。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
(MATLABデフォルト) - 定義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) "Sample Quantiles in Statistical Packages", The American Statistician, Vol. 50, No. 4, pp. 361-365
- Quantile on Wikipedia では異なる分位数の定義について詳しく説明しています
例
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
— Functionquantile(itr, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)
コレクション itr
の指定された確率または確率のベクトルまたはタプル p
における分位数を計算します。キーワード引数 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
(MATLAB デフォルト) - 定義 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) "Sample Quantiles in Statistical Packages", The American Statistician, Vol. 50, No. 4, pp. 361-365
- Quantile on Wikipedia では異なる分位数の定義について詳しく説明しています
例
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