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.0Statistics.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.0mean(f, itr)Примените функцию f к каждому элементу коллекции itr и найдите среднее значение.
julia> using Statistics
julia> mean(√, [1, 2, 3])
1.3820881233139908
julia> mean([√1, √2, √3])
1.3820881233139908mean(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.2285192400943226mean(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.5Statistics.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.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 на интервале [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.8000000000000003Statistics.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