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 で割られます (nitr の要素数)。

itrAbstractArray なら、dims を指定することで特定の次元に関する標準偏差を計算でき、さらに mean には itr の各次元の平均値を渡すことができます。

mean には事前に計算された平均値を渡すことができます。dims が指定されるなら、meanmean(itr, dims=dims) と同じ形状を持つ配列である必要があります (末尾にサイズ 1 の次元が余計にあっても構いません)。

情報

itrNaN または 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 で割られます (nitr の要素数)。

mean には事前に計算された平均値を渡すことができます。dims が指定されるなら、meanmean(itr, dims=dims) と同じ形状を持つ配列である必要があります (末尾にサイズ 1 の次元が余計にあっても構いません)。

情報

itrNaN または 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 で割られます (nitr の要素数)。

itrAbstractArray なら、dims を指定することで特定の次元に関する標準偏差を計算できます。

mean には事前に計算された平均値を渡すことができます。dims が指定されるなら、meanmean(itr, dims=dims) と同じ形状を持つ配列である必要があります (末尾にサイズ 1 の次元が余計にあっても構いません)。

情報

itrNaN または 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 で割られます (nitr の要素数)。

mean には事前に計算された平均値を渡すことができます。dims が指定されるなら、meanmean(itr, dims=dims) と同じ形状を持つ配列である必要があります (末尾にサイズ 1 の次元が余計にあっても構いません)。

情報

itrNaN または missing が含まれるときは、返り値も NaN または missing (両方含まれるなら missing) となります。missing を無視して欠損していない値の標準偏差を計算するには skipmissing を使ってください。

Statistics.cor ── 関数

cor(x::AbstractVector)

1 を返します。

cor(X::AbstractMatrix; dims::Int=1)

行列 Xdims 番目の次元に関するピアソンの相関行列を計算します。

cor(x::AbstractVector, y::AbstractVector)

二つのベクトル x, y の間のピアソンの相関を計算します。

cor(X::AbstractVecOrMat, Y::AbstractVecOrMat; dims=1)

行列 XYdims 番目の次元に関するピアソンの相関を計算します。

Statistics.cov ── 関数

cov(x::AbstractVector; corrected::Bool=true)

ベクトル x の分散を計算します。corrected がデフォルトの true だと残差平方和は n-1 で割られ、false だと n で割られます (nitr の要素数)。

cov(X::AbstractMatrix; dims::Int=1, corrected::Bool=true)

行列 Xdims 番目の次元に関する共分散行列を計算します。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) です。correctedfalse だと \(\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! ── 関数

mean!(r, v)

r のシングルトン次元1に関する v の平均値を計算し、結果を r に格納します。

julia> using Statistics

julia> v = [1 2; 3 4]
2×2 Array{Int64,2}:
 1  2
 3  4

julia> mean!([1., 1.], v)
2-element Array{Float64,1}:
 1.5
 3.5

julia> mean!([1. 1.], v)
1×2 Array{Float64,2}:
 2.0  3.0

Statistics.mean ── 関数

mean(itr)

コレクション itr に含まれる全ての要素の平均値を計算します。

情報

itrNaN または 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 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)

配列の指定された次元に関する平均値を計算します。

Julia 1.1

空配列に対する 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! ── 関数

median!(v)

median と同様ですが、処理中に入力のベクトルを上書きします。

Statistics.median ── 関数

median(itr)

コレクションに含まれる全要素の中央値を計算します。要素数が奇数のコレクションには正確な中央値が存在しないので、そのような場合の返り値は中央にある二つの要素の平均値となります。

情報

itrNaN または 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(x)

スカラー値の “真ん中の値” (middle value) を計算します。返り値は xmiddle(x, x) と同じ型に変換した値です。

middle(x, y)

二つの実数 x, y の “真ん中の値” (middle value) を計算します。返り値は平均 (x + y) / 2 と同じ型と値を持ちます。

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 を指定できます (指定しなければ新しく配列が作成されます)。キーワード引数 sortedv がソートされているとみなせるかどうかを指定します。sortedfalse (デフォルト) だと 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 のデフォルトと同じです。

キーワード引数 alphabeta は [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 の PERCENTILEPERCENTILE.INC, Python の 'inclusive')
  • Def. 8: alpha=1/3, beta=1/3
  • Def. 9: alpha=3/8, beta=3/8
情報

vNaN または missing を含むときは ArgumentError が送出されます。

参考文献

  • [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]\) に含まれる確率あるいは確率のベクトル/タプルです。キーワード引数 sortedv がソートされているとみなせるかどうかを指定します。

標本分位数は 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 のデフォルトと同じです。

キーワード引数 alphabeta は 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 の PERCENTILEPERCENTILE.INC, Python の 'inclusive')
  • Def. 8: alpha=1/3, beta=1/3
  • Def. 9: alpha=3/8, beta=3/8
情報

vNaN または 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

  1. 訳注: シングルトン次元とはサイズが 1 の次元のこと。[return]

  2. 訳注: 関数プロトタイプに型注釈を追加した。[return]


日本語 Julia 書籍 (Amazon アソシエイト)
1 から始める Julia プログラミング
Julia プログラミングクックブック―言語仕様からデータ分析、機械学習、数値計算まで
スタンフォード ベクトル・行列からはじめる最適化数学