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

Скалярная статистика

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

Взвешенная сумма и среднее значение

# Base.sumFunction

sum(v::AbstractArray, w::AbstractWeights{<:Real}; [dims])

Вычисляет взвешенную сумму массива v с весами w по измерению dims (необязательно).

# Base.sum!Function

sum!(R::AbstractArray, A::AbstractArray,
     w::AbstractWeights{<:Real}, dim::Int;
     init::Bool=true)

Вычисляет взвешенную сумму массива A с весами w по измерению dim и сохраняет результат в R. При init=false сумма прибавляется к уже имеющемуся в R значению, а не к нулю.

# StatsBase.wsumFunction

wsum(v, w::AbstractVector, [dim])

Вычисляет взвешенную сумму массива v с весами w по измерению dim (необязательно).

# StatsBase.wsum!Function

wsum!(R::AbstractArray, A::AbstractArray,
      w::AbstractVector, dim::Int;
      init::Bool=true)

Вычисляет взвешенную сумму массива A с весами w по измерению dim и сохраняет результат в R. При init=false сумма прибавляется к уже имеющемуся в R значению, а не к нулю.

# Statistics.meanFunction

mean(A::AbstractArray, w::AbstractWeights[, dims::Int])

Вычисляет взвешенное среднее значение для массива A с весовым вектором w (типа AbstractWeights). Если задан аргумент dim, вычисляет взвешенное среднее значение по измерению dims.

Примеры

n = 20
x = rand(n)
w = rand(n)
mean(x, weights(w))

# Statistics.mean!Function

mean!(R::AbstractArray, A::AbstractArray, w::AbstractWeights[; dims=nothing])

Вычисляет взвешенное среднее значение для массива A с весовым вектором w (типа AbstractWeights) по измерению dims и записывает результаты в R.

Средние значения

Этот пакет содержит функции для вычисления средних значений различного рода.

# StatsBase.geomeanFunction

geomean(a)

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

# StatsBase.harmmeanFunction

harmmean(a)

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

# StatsBase.genmeanFunction

genmean(a, p)

Возвращает обобщенное/степенное среднее значение с экспонентой p для массива вещественных значений, то есть , где n = length(a). Оно считается геометрическим средним значением при p == 0.

Моменты и кумулянты

# Statistics.varFunction

var(x::AbstractArray, w::AbstractWeights, [dim]; mean=nothing, corrected=false)

Вычисляет дисперсию массива вещественных значений x по измерению dim (необязательно). Наблюдения x взвешиваются с использованием весового вектора w. Некорректированная (при corrected=false) выборочная дисперсия определяется следующим образом:

где  — длина входных данных, а  — среднее значение. Несмещенная оценка (при corrected=true) дисперсии генеральной совокупности вычисляется путем замены на коэффициент, зависящий от типа используемых весов:

  • AnalyticWeights:

  • FrequencyWeights:

  • ProbabilityWeights: , где равно count(!iszero, w)

  • Weights: ArgumentError (коррекция смещения не поддерживается)

var(ce::CovarianceEstimator, x::AbstractVector; mean=nothing)

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

# Statistics.stdFunction

std(x::AbstractArray, w::AbstractWeights, [dim]; mean=nothing, corrected=false)

Вычисляет среднеквадратичное отклонение для массива вещественных значений x по измерению dim (необязательно). Наблюдения x взвешиваются с использованием весового вектора w. Некорректированное (при corrected=false) выборочное среднеквадратичное отклонение определяется следующим образом:

где  — длина входных данных, а  — среднее значение. Несмещенная оценка (при corrected=true) среднеквадратичного отклонения генеральной совокупности вычисляется путем замены коэффициентом, зависящим от типа используемых весов:

  • AnalyticWeights:

  • FrequencyWeights:

  • ProbabilityWeights: , где равно count(!iszero, w)

  • Weights: ArgumentError (коррекция смещения не поддерживается)

std(ce::CovarianceEstimator, x::AbstractVector; mean=nothing)

Вычисляет среднеквадратичное отклонение для вектора x с использованием средства оценки ce.

# StatsBase.mean_and_varFunction

mean_and_var(x, [w::AbstractWeights], [dim]; corrected=false) -> (mean, var)

Возвращает среднее значение и дисперсию для коллекции x. Если x является AbstractArray, в dim можно передать кортеж измерений, по которым необходимо вычислить статистику. Можно указать весовой вектор w для расчета взвешенных оценок. Наконец, при вычислении дисперсии применяется коррекция смещения, если corrected=true. Дополнительные сведения см. в описании функции var.

# StatsBase.mean_and_stdFunction

mean_and_std(x, [w::AbstractWeights], [dim]; corrected=false) -> (mean, std)

Возвращает среднее значение и среднеквадратичное отклонение для коллекции x. Если x является AbstractArray, в dim можно передать кортеж измерений, по которым необходимо вычислить статистику. Можно указать весовой вектор w для расчета взвешенных оценок. Наконец, при вычислении среднеквадратичного отклонения применяется коррекция смещения, если corrected=true. Дополнительные сведения см. в описании функции std.

# StatsBase.skewnessFunction

skewness(v, [wv::AbstractWeights], m=mean(v))

Вычисляет нормализованный коэффициент асимметрии для массива вещественных значений v; при необходимости можно указать весовой вектор wv и центр m.

# StatsBase.kurtosisFunction

kurtosis(v, [wv::AbstractWeights], m=mean(v))

Вычисляет коэффициент эксцесса для массива вещественных значений v; при необходимости можно указать весовой вектор wv и центр m.

# StatsBase.momentFunction

moment(v, k, [wv::AbstractWeights], m=mean(v))

Возвращает центральный момент порядка k для массива вещественных значений v; при необходимости можно указать весовой вектор wv и центр m.

# StatsBase.cumulantFunction

cumulant(v, k, [wv::AbstractWeights], m=mean(v))

Возвращает кумулянт порядка k для массива вещественных значений v; при необходимости можно указать весовой вектор wv и предварительно вычисленное среднее значение m.

Если k — это диапазон значений типа Integer, возвращаются все кумулянты порядков в этом диапазоне в виде вектора.

Это количество вычисляется с использованием рекурсивного определения на основе кумулянтов и центральных моментов более низких порядков.

Справочные материалы: Smith, P. J. 1995. A Recursive Formulation of the Old Problem of Obtaining Moments from Cumulants and Vice Versa. The American Statistician, 49(2), 217—​218. https://doi.org/10.2307/2684642

Измерения вариации

# StatsBase.spanFunction

span(x)

Возвращает интервал коллекции, то есть диапазон minimum(x):maximum(x). Минимальное и максимальное значения x вычисляются за один проход с помощью extrema.

# StatsBase.variationFunction

variation(x, m=mean(x))

Возвращает коэффициент вариации для коллекции x; при необходимости можно указать предварительно вычисленное среднее значение m. Коэффициент вариации — это отношение среднеквадратичного отклонения к среднему значению.

# StatsBase.semFunction

sem(x; mean=nothing)
sem(x::AbstractArray[, weights::AbstractWeights]; mean=nothing)

Возвращает среднеквадратичную погрешность среднего значения для коллекции x. Можно указать предварительно вычисленное значение mean.

Если веса не используются, это (выборочное) среднеквадратичное отклонение, деленное на размер выборки. Если веса используются, дисперсия среднего значения выборки вычисляется следующим образом:

  • AnalyticWeights: не реализовано.

  • FrequencyWeights:

  • ProbabilityWeights:

Среднеквадратичная погрешность равна корню квадратному из приведенных выше величин.

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

Carl-Erik Särndal, Bengt Swensson, Jan Wretman (1992). Model Assisted Survey Sampling. New York: Springer, стр. 51—​53.

# StatsBase.madFunction

mad(x; center=median(x), normalize=true)

Вычисляет медианное абсолютное отклонение (MAD) для коллекции x относительно center (по умолчанию относительно медианы).

Если аргумент normalize имеет значение true, MAD умножается на 1 / quantile(Normal(), 3/4) ≈ 1.4826 с целью получения согласованной статистической оценки среднеквадратичного отклонения с тем предположением, что данные имеют нормальное распределение.

# StatsBase.mad!Function

StatsBase.mad!(x; center=median!(x), normalize=true)

Вычисляет медианное абсолютное отклонение (MAD) для массива x относительно center (по умолчанию относительно медианы), перезаписывая x в ходе выполнения. В массиве x должны помещаться значения, генерируемые в результате вызова middle для его элементов (например, целочисленный вектор не подходит, так как middle может возвращать нецелочисленные значения).

Если аргумент normalize имеет значение true, MAD умножается на 1 / quantile(Normal(), 3/4) ≈ 1.4826 с целью получения согласованной статистической оценки среднеквадратичного отклонения с тем предположением, что данные имеют нормальное распределение.

Z-оценки

# StatsBase.zscoreFunction

zscore(X, [μ, σ])

Вычисляет Z-оценки для X; при необходимости можно указать предварительно вычисленное среднее значение μ и среднеквадратичное отклонение σ. Z-оценка — это количество (со знаком) среднеквадратичных отклонений выше среднего значения для наблюдения, то есть .

μ и σ должны быть одновременно либо скалярами, либо массивами. Вычисление транслируется. В частности, если μ и σ — массивы, они должны быть одного размера и для каждого измерения должно выполняться условие size(μ, i) == 1 || size(μ, i) == size(X, i).

# StatsBase.zscore!Function

zscore!([Z], X, μ, σ)

Вычисляет Z-оценки для массива X со средним значением μ и среднеквадратичным отклонением σ. Z-оценка — это количество (со знаком) среднеквадратичных отклонений выше среднего значения для наблюдения, то есть .

Если задан конечный массив Z, оценки будут сохраняться в Z и он должен иметь ту же форму, что и X. В противном случае X перезаписывается.

Энтропия и связанные с ней функции

# StatsBase.entropyFunction

entropy(p, [b])

Вычисляет энтропию для коллекции вероятностей p; при необходимости можно указать вещественное число b, чтобы масштабировать энтропию на 1/log(b). Элементы с вероятностью 0 или 1 прибавляют 0 к энтропии.

# StatsBase.renyientropyFunction

renyientropy(p, α)

Вычисляет энтропию Реньи (обобщенную) порядка α для массива p.

# StatsBase.crossentropyFunction

crossentropy(p, q, [b])

Вычисляет перекрестную энтропию между p и q; при необходимости можно указать вещественное число b, чтобы масштабировать результат на 1/log(b).

# StatsBase.kldivergenceFunction

kldivergence(p, q, [b])

Вычисляет расстояние Кульбака-Лейблера от q до p, которое также называется относительной энтропией p по отношению к q, то есть сумму pᵢ * log(pᵢ / qᵢ). При необходимости можно указать вещественное число b, чтобы масштабировать расстояние на 1/log(b).

Квантиль и связанные с ним функции

# StatsBase.percentileFunction

percentile(x, p)

Возвращает p-й перцентиль для коллекции x, то есть quantile(x, p / 100).

# StatsBase.iqrFunction

iqr(x)

Вычисляет межквартильный размах (IQR) для коллекции x, то есть 75-й перцентиль минус 25-й перцентиль.

# StatsBase.nquantileFunction

nquantile(x, n::Integer)

Возвращает n-квантили для коллекции x, то есть значения, которые разделяют v на n подмножеств примерно равного размера.

Эквивалентно quantile(x, [0:n]/n). Например, nquantiles(x, 5) возвращает вектор квантилей соответственно в [0.0, 0.2, 0.4, 0.6, 0.8, 1.0].

# Statistics.quantileFunction

quantile(v, w::AbstractWeights, p)

Вычисляет взвешенные квантили вектора v с указанным множеством значений вероятности p с использованием весов, заданных в весовом векторе w (типа AbstractWeights). Веса не должны быть отрицательными. Векторы весов и данных должны быть одинаковой длины. Если x содержит хотя бы одно значение NaN, возвращается NaN. Ошибка выдается в случае, если w содержит хотя бы одно значение NaN.

При использовании FrequencyWeights функция возвращает тот же результат, что и quantile для вектора с повторяющимися значениями. Веса должны быть целыми числами.

При использовании типа, отличного от FrequencyWeights, обозначает длину вектора,  — вектор весов,  — суммарный вес, соответствующий вероятности ,  — суммарный вес для каждого наблюдения, а определяет наименьший элемент v такой, что строго выше . Взвешенный квантиль задается как с . В частности, когда все веса равны, функция возвращает тот же результат, что и невзвешенная функция quantile.

# Statistics.medianMethod

median(v::RealVector, w::AbstractWeights)

Вычисляет взвешенную медиану v с весами w (типа AbstractWeights). Дополнительные сведения см. в документации по quantile.

# StatsBase.quantilerankFunction

quantilerank(itr, value; method=:inc)

Вычисляет позицию квантиля в интервале [0, 1] для value относительно коллекции itr.

С помощью именованного аргумента method можно выбрать одно из нескольких определений. Допустим, count_less — это количество элементов в itr со значением меньше value, count_equal — количество элементов в itr со значением, равным value, n — длина itr, greatest_smaller — наибольшее значение меньше value, а smallest_greater — наименьшее значение больше value. Тогда method поддерживает следующие определения.

  • :inc (по умолчанию): возвращает значение в диапазоне от 0 до 1 включительно.

Возвращает count_less / (n - 1), если value ∈ itr; в противном случае применяет интерполяцию на основе определения 7 квантиля из классификации Хиндмана-Фана (1996) (эквивалентно PERCENTRANK и PERCENTRANK.INC в Excel). Это определение соответствует нижнему полунепрерывному обращению quantile с параметрами по умолчанию.

  • :exc: возвращает значение в диапазоне от 0 до 1 не включительно.

Возвращает (count_less + 1) / (n + 1), если value ∈ itr; в противном случае применяет интерполяцию на основе определения 6 квантиля из классификации Хиндмана-Фана (1996) (эквивалентно PERCENTRANK.EXC в Excel).

  • :compete: возвращает count_less / (n - 1), если value ∈ itr; в противном случае

возвращает (count_less - 1) / (n - 1) без интерполяции (эквивалентно PERCENT_RANK в MariaDB, percent_rank в dplyr).

  • :tied: возвращает (count_less + count_equal/2) / n без интерполяции

на основе определения из работы Роскоу Дж. Т. (1975) (эквивалентно виду "mean" функции percentileofscore в SciPy).

  • :strict: возвращает count_less / n без интерполяции

(эквивалентно виду "strict" функции percentileofscore в SciPy).

  • :weak: возвращает (count_less + count_equal) / n без интерполяции

(эквивалентно виду "weak" функции percentileofscore в SciPy).

Ошибка ArgumentError происходит в случае, если itr содержит значения NaN или missing либо если itr содержит меньше двух элементов.

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

Roscoe, J. T. (1975). Fundamental Research Statistics for the Behavioral Sciences", 2nd ed., New York: Holt, Rinehart and Winston.

Hyndman, R.J and Fan, Y. (1996) "Sample Quantiles in Statistical Packages", The American Statistician, Vol. 50, No. 4, стр. 361—​365.

Примеры

julia> using StatsBase

julia> v1 = [1, 1, 1, 2, 3, 4, 8, 11, 12, 13];

julia> v2 = [1, 2, 3, 5, 6, missing, 8];

julia> v3 = [1, 2, 3, 4, 4, 5, 6, 7, 8, 9];

julia> quantilerank(v1, 2)
0.3333333333333333

julia> quantilerank(v1, 2, method=:exc), quantilerank(v1, 2, method=:tied)
(0.36363636363636365, 0.35)

# используем `skipmissing` для векторов с отсутствующими элементами
julia> quantilerank(skipmissing(v2), 4)
0.5

# используем трансляцию с `Ref` с целью вычисления ранга квантиля для нескольких значений
julia> quantilerank.(Ref(v3), [4, 8])
2-element Vector{Float64}:
 0.3333333333333333
 0.8888888888888888

# StatsBase.percentilerankFunction

percentilerank(itr, value; method=:inc)

Возвращает q-й перцентиль value в коллекции itr, то есть quantilerank(itr, value) * 100.

Дополнительные сведения см. в docstring quantilerank.

Мода и моды

# StatsBase.modeFunction

mode(a, [r])
mode(a::AbstractArray, wv::AbstractWeights)

Возвращает моду (наиболее часто встречающееся число) массива; при необходимости можно указать диапазон r или весовой вектор wv. Если мод несколько, возвращается первая встретившаяся.

# StatsBase.modesFunction

modes(a, [r])::Vector
mode(a::AbstractArray, wv::AbstractWeights)::Vector

Возвращает все моды (наиболее часто встречающиеся числа) массива; при необходимости можно указать диапазон r или весовой вектор wv.

Сводная статистика

# StatsBase.summarystatsFunction

summarystats(a)

Вычисляет сводную статистику для массива вещественных значений a. Возвращает объект SummaryStats, содержащий среднее значение, минимальное значение, 25-й перцентиль, медиану, 75-й перцентиль и максимальное значение.

# DataAPI.describeFunction

describe(a)

Pretty-print the summary statistics provided by summarystats: the mean, minimum, 25th percentile, median, 75th percentile, and maximum.

Показатели надежности

# StatsBase.cronbachalphaFunction

cronbachalpha(covmatrix::AbstractMatrix{<:Real})

Вычисляет коэффициент альфа Кронбаха (1951) на основе ковариационной матрицы covmatrix по формуле:

где  — это количество элементов, то есть столбцов,  — дисперсия элементов, а  — ковариация между элементами.

Возвращает объект CronbachAlpha, который содержит следующие элементы.

  • alpha: оценка коэффициента альфа Кронбаха для всех элементов (столбцов) в covmatrix;

  • dropped: вектор, задающий оценки коэффициента альфа Кронбаха, если определенный элемент (столбец) удален из covmatrix.

Пример

julia> using StatsBase

julia> cov_X = [10 6 6 6;
                6 11 6 6;
                6 6 12 6;
                6 6 6 13];

julia> cronbachalpha(cov_X)
Cronbach's alpha for all items: 0.8136

Cronbach's alpha if an item is dropped:
item 1: 0.7500
item 2: 0.7606
item 3: 0.7714
item 4: 0.7826