Документация Engee

Статистика

Модуль стандартной библиотеки Statistics содержит базовые функциональные возможности статистики.

# Statistics.stdFunction

std(itr; corrected::Bool=true, mean=nothing[, dims])

Вычисляет выборочное среднеквадратичное отклонение для коллекции itr.

Алгоритм возвращает статистическую оценку среднеквадратичного отклонения генеративного распределения с тем предположением, что каждый элемент itr — это значение, выбранное из одного и того же неизвестного распределения, причем эти значения некоррелированные. Для массивов расчет эквивалентен sqrt(sum((itr .- mean(itr)).^2) / (length(itr) - 1)). Сумма масштабируется на n-1, если corrected имеет значение true, или на n, если corrected имеет значение false, где n — количество элементов в itr.

Если itr — это AbstractArray, можно предоставить dims для вычисления среднеквадратичного отклонения по измерениям, а means может содержать средние значения для каждого измерения itr.

Можно указать предварительно вычисленное значение mean. Если указан аргумент dims, mean должен быть массивом той же формы, что и mean(itr, dims=dims) (допускаются дополнительные конечные одинарные измерения).

Если массив содержит значения NaN или missing, результатом также будет NaN или missing (если в массиве есть значения обоих типов, missing имеет приоритет). Используйте функцию skipmissing, чтобы пропустить элементы missing и вычислить среднеквадратичное отклонение существующих значений.

# Statistics.stdmFunction

stdm(itr, mean; corrected::Bool=true[, dims])

Вычисляет выборочное среднеквадратичное отклонение для коллекции itr с известными средними значениями mean.

Алгоритм возвращает статистическую оценку среднеквадратичного отклонения генеративного распределения с тем предположением, что каждый элемент itr — это значение, выбранное из одного и того же неизвестного распределения, причем эти значения некоррелированные. Для массивов расчет эквивалентен sqrt(sum((itr .- mean(itr)).^2) / (length(itr) - 1)). Сумма масштабируется на n-1, если corrected имеет значение true, или на n, если corrected имеет значение false, где n — количество элементов в itr.

Если itr — это AbstractArray, можно предоставить dims для вычисления среднеквадратичного отклонения по измерениям. В этом случае mean должен быть массивом той же формы, что и mean(itr, dims=dims) (допускаются дополнительные конечные одинарные измерения).

Если массив содержит значения NaN или missing, результатом также будет NaN или missing (если в массиве есть значения обоих типов, missing имеет приоритет). Используйте функцию skipmissing, чтобы пропустить элементы missing и вычислить среднеквадратичное отклонение существующих значений.

# Statistics.varFunction

var(itr; corrected::Bool=true, mean=nothing[, dims])

Вычисляет выборочную дисперсию для коллекции itr.

Алгоритм возвращает статистическую оценку дисперсии генеративного распределения с тем предположением, что каждый элемент itr — это значение, выбранное из одного и того же неизвестного распределения, причем эти значения некоррелированные. Для массивов расчет эквивалентен sum((itr .- mean(itr)).^2) / (length(itr) - 1). Сумма масштабируется на n-1, если corrected имеет значение true, или на n, если corrected имеет значение false, где n — количество элементов в itr.

Если itr — это AbstractArray, можно предоставить dims для вычисления дисперсии по измерениям.

Можно указать предварительно вычисленное значение mean. Если указан аргумент dims, mean должен быть массивом той же формы, что и mean(itr, dims=dims) (допускаются дополнительные конечные одинарные измерения).

Если массив содержит значения NaN или missing, результатом также будет NaN или missing (если в массиве есть значения обоих типов, missing имеет приоритет). Используйте функцию skipmissing, чтобы пропустить элементы missing и вычислить дисперсию существующих значений.

# Statistics.varmFunction

varm(itr, mean; dims, corrected::Bool=true)

Вычисляет выборочную дисперсию для коллекции itr с известными средними значениями mean.

Алгоритм возвращает статистическую оценку дисперсии генеративного распределения с тем предположением, что каждый элемент itr — это значение, выбранное из одного и того же неизвестного распределения, причем эти значения некоррелированные. Для массивов расчет эквивалентен sum((itr .- mean(itr)).^2) / (length(itr) - 1). Сумма масштабируется на n-1, если corrected имеет значение true, или на n, если corrected имеет значение false, где n — количество элементов в itr.

Если itr — это AbstractArray, можно предоставить dims для вычисления дисперсии по измерениям. В этом случае mean должен быть массивом той же формы, что и mean(itr, dims=dims) (допускаются дополнительные конечные одинарные измерения).

Если массив содержит значения NaN или missing, результатом также будет NaN или missing (если в массиве есть значения обоих типов, missing имеет приоритет). Используйте функцию skipmissing, чтобы пропустить элементы missing и вычислить дисперсию существующих значений.

# Statistics.corFunction

cor(x::AbstractVector)

Возвращает число один.

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.covFunction

cov(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, либо же сумма масштабируется на n, если corrected имеет значение false, где n = size(X, dims).

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

Вычисляет ковариацию между векторами x и y. Если corrected имеет значение true (по умолчанию), вычисляет , где означает комплексно сопряженное значение, а n = length(x) = length(y). Если corrected имеет значение false, вычисляется .

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

Вычисляет ковариацию между векторами или матрицами X и Y по измерению dims. Сумма масштабируется на n-1, если corrected имеет значение true (по умолчанию), или на n, если corrected имеет значение false, где n = size(X, dims) = size(Y, dims).

# Statistics.mean!Function

mean!(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.meanFunction

mean(itr)

Вычисляет среднее значение всех элементов в коллекции.

Если itr содержит значения NaN или missing, результатом также будет NaN или missing (если в массиве есть значения обоих типов, missing имеет приоритет). Используйте функцию skipmissing, чтобы пропустить элементы 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)

Применяет функцию f к каждому элементу коллекции itr и берет среднее значение.

julia> using Statistics

julia> mean(√, [1, 2, 3])
1.3820881233139908

julia> mean([√1, √2, √3])
1.3820881233139908
mean(f, A::AbstractArray; dims)

Применяет функцию f к каждому элементу массива A и берет среднее значение по измерениям 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 Matrix{Float64}:
 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 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!Function

median!(v)

Действует аналогично median, но может перезаписывать входной вектор.

# Statistics.medianFunction

median(itr)

Вычисляет медиану всех элементов в коллекции. Для четного количества элементов точного медианного элемента не существует, поэтому результат рассчитывается как среднее двух медианных элементов.

Если 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.middleFunction

middle(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!Function

quantile!([q::AbstractArray, ] v::AbstractVector, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)

Вычисляет квантили вектора v с указанной вероятностью либо вектором или кортежем вероятностей p в интервале [0,1]. Если p — это вектор, можно также указать необязательный выходной массив q. (Если он не указан, создается новый выходной массив.) Именованный аргумент sorted определяет, можно ли считать вектор v отсортированным. Если используется значение false (по умолчанию), элементы v будут частично отсортированы на месте.

По умолчанию (alpha = beta = 1) квантили вычисляются посредством линейной интерполяции между точками ((k-1)/(n-1), v[k]) для k = 1:n, где n = length(v). Это соответствует определению 7 из классификации Хиндмана-Фана (1996), используемому по умолчанию в R и NumPy.

Именованные аргументы alpha и beta соответствуют параметрам в определениях Хиндмана-Фана. Присваивая им разные значения, можно вычислять квантили методами 4—​9, описанными в документе:

  • Определение 4: alpha=0, beta=1

  • Определение 5: alpha=0.5, beta=0.5

  • Определение 6: alpha=0, beta=0 (PERCENTILE.EXC в Excel, по умолчанию в Python, altdef в Stata)

  • Определение 7: alpha=1, beta=1 (по умолчанию в Julia, R и NumPy, PERCENTILE и PERCENTILE.INC в Excel, 'inclusive' в Python)

  • Определение 8: alpha=1/3, beta=1/3

  • Определение 9: alpha=3/8, beta=3/8

Если v содержит значения NaN или missing, происходит ошибка ArgumentError.

Справочные материалы

  • Hyndman, R.J and Fan, Y. (1996) «Sample Quantiles in Statistical Packages», The American Statistician, Vol. 50, No. 4, pp. 361—​365

  • В статье о квантиле в Википедии описываются различные определения квантиля.

Примеры

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.quantileFunction

quantile(itr, p; sorted=false, alpha::Real=1.0, beta::Real=alpha)

Вычисляет квантили коллекции itr с указанной вероятностью либо вектором или кортежем вероятностей p в интервале [0,1]. Именованный аргумент sorted определяет, можно ли считать коллекцию itr отсортированной.

Квантиль выборки определяется по формуле Q(p) = (1-γ)*x[j] + γ*x[j+1], где ] — статистика j-го порядка, а γ — это функция от j = floor(n*p + m), m = alpha + p*(1 - alpha - beta) и g = n*p + m - j.

По умолчанию (alpha = beta = 1) квантили вычисляются посредством линейной интерполяции между точками ((k-1)/(n-1), v[k]) для k = 1:n, где n = length(itr). Это соответствует определению 7 из классификации Хиндмана-Фана (1996), используемому по умолчанию в R и NumPy.

Именованные аргументы alpha и beta соответствуют параметрам в определениях Хиндмана-Фана. Присваивая им разные значения, можно вычислять квантили методами 4—​9, описанными в документе:

  • Определение 4: alpha=0, beta=1

  • Определение 5: alpha=0.5, beta=0.5

  • Определение 6: alpha=0, beta=0 (PERCENTILE.EXC в Excel, по умолчанию в Python, altdef в Stata)

  • Определение 7: alpha=1, beta=1 (по умолчанию в Julia, R и NumPy, PERCENTILE и PERCENTILE.INC в Excel, 'inclusive' в Python)

  • Определение 8: alpha=1/3, beta=1/3

  • Определение 9: alpha=3/8, beta=3/8

Если v содержит значения NaN или missing, происходит ошибка ArgumentError. Используйте функцию skipmissing, чтобы пропустить элементы missing и вычислить квантили существующих значений.

Справочные материалы

  • Hyndman, R.J and Fan, Y. (1996) «Sample Quantiles in Statistical Packages», The American Statistician, Vol. 50, No. 4, pp. 361—​365

  • В статье о квантиле в Википедии описываются различные определения квантиля.

Примеры

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