Statistics
Модуль стандартной библиотеки 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
, в то время как сумма масштабируется на n
, если corrected
равно false
, где 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
, в то время как сумма масштабируется на n
, если corrected
равно false
, где 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
, в то время как сумма масштабируется на n
, если corrected
равно false
, где 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
, в то время как сумма масштабируется на n
, если corrected
равно false
, где n
— это количество элементов в itr
.
Если itr
является AbstractArray
, можно указать dims
для вычисления дисперсии по измерениям. В этом случае mean
должен быть массивом с такой же формой, как mean(itr, dims=dims)
(дополнительные завершающие единичные размеры допускаются).
Если массив содержит значения NaN
или missing
, результат также будет NaN
или missing
(missing
имеет приоритет, если массив содержит оба). Используйте функцию skipmissing
, чтобы пропустить записи missing
и вычислить дисперсию ненулевых значений.
Statistics.cor
— Functioncor(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.cov
— Functioncov(x::AbstractVector; corrected::Bool=true)
Вычисляет дисперсию вектора x
. Если corrected
равно true
(по умолчанию), то сумма масштабируется на n-1
, в то время как сумма масштабируется на n
, если corrected
равно false
, где 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
(по умолчанию), вычисляет $\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
, в то время как сумма масштабируется на n
, если corrected
равно false
, где 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
и вычислить среднее значение ненулевых значений.
Примеры
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> 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)
Вычисляет медиану всех элементов в коллекции. Для четного числа элементов точный медианный элемент не существует, поэтому результат эквивалентен вычислению среднего двух медианных элементов.
Если itr
содержит значения NaN
или missing
, результат также будет NaN
или missing
(missing
имеет приоритет, если itr
содержит оба). Используйте функцию 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
на интервале [0,1]. Если p
является вектором, также может быть указан необязательный выходной массив q
. (Если не предоставлен, создается новый выходной массив.) Аргумент ключевого слова sorted
указывает, можно ли считать, что v
отсортирован; если false
(по умолчанию), то элементы v
будут частично отсортированы на месте.
Образцы квантилей определяются как Q(p) = (1-γ)*x[j] + γ*x[j+1]
, где x[j]
является j-ой порядковой статистикой v
, 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)
. Это соответствует Определению 7 Хиндмана и Фана (1996) и является тем же, что и по умолчанию в R и NumPy.
Аргументы ключевых слов alpha
и beta
соответствуют тем же параметрам в Хиндмане и Фане, установка их на разные значения позволяет вычислять квантиль с любым из методов 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
Выдается ArgumentError
, если v
содержит значения NaN
или missing
.
Ссылки
- Хиндман, Р. Дж. и Фан, Й. (1996) "Выборочные квантиль в статистических пакетах", Американский статистик, Т. 50, № 4, стр. 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.quantile
— Functionquantile(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]
, где x[j]
— это j-й порядковый статистик itr
, 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)
. Это соответствует Определению 7 Хиндмана и Фана (1996) и является тем же, что и по умолчанию в R и NumPy.
Ключевые аргументы alpha
и beta
соответствуют тем же параметрам в Хиндмане и Фане, установка их на разные значения позволяет вычислять квантиль с любым из методов 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
Исключение ArgumentError
выбрасывается, если v
содержит значения NaN
или missing
. Используйте функцию skipmissing
, чтобы пропустить записи missing
и вычислить квантиль для ненулевых значений.
Ссылки
- Хиндман, Р. Дж. и Фан, Й. (1996) "Квантиль выборки в статистических пакетах", Американский статистик, Т. 50, № 4, стр. 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