Statistics
統計標準ライブラリモジュールには、基本的な統計機能が含まれています。
Statistics.std — Functionstd(itr; corrected::Bool=true, mean=nothing[, dims])コレクション itr のサンプル標準偏差を計算します。
このアルゴリズムは、itr の各エントリが同じ未知の分布から引き出されたサンプルであり、サンプルが無相関であるという仮定の下で、生成分布の標準偏差の推定量を返します。配列の場合、この計算は sqrt.(sum(abs2.(itr .- mean(itr))) / (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(abs2.(itr .- mean(itr))) / (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(abs2.(itr .- mean(itr))) / (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(abs2.(itr .- mean(itr))) / (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.0Statistics.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.0mean(f, itr)コレクション itr の各要素に関数 f を適用し、平均を取ります。
julia> using Statistics
julia> mean(√, [1, 2, 3])
1.3820881233139908
julia> mean([√1, √2, √3])
1.3820881233139908mean(f, A::AbstractArray; dims)配列 A の各要素に関数 f を適用し、次元 dims にわたって平均を取ります。
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)与えられた次元に沿った配列の平均を計算します。
例
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! — Functionmedian!(v)medianと同様ですが、入力ベクトルを上書きする可能性があります。
Statistics.median — Functionmedian(itr)コレクション内のすべての要素の中央値を計算します。要素数が偶数の場合、正確な中央値の要素は存在しないため、結果は2つの中央値の要素の平均を計算することに相当します。
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 — 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.95Statistics.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.2
2.0
2.8Statistics.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.0
julia> quantile(skipmissing([1, 10, missing]), 0.5)
5.5