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

Абстракция для статистических моделей

В StatsAPI.jl определен абстрактный тип StatisticalModel и абстрактный подтип RegressionModel. Оба они расширяются пакетом StatsBase и описываются в этой документации.

В частности, экземпляры StatisticalModel реализуют перечисленные ниже методы.

# StatsAPI.adjr2Function

adjr2(model::StatisticalModel)
adjr²(model::StatisticalModel)

Скорректированный коэффициент детерминации.

Для линейных моделей скорректированный коэффициент детерминации определяется как , где  — коэффициент детерминации,  — число наблюдений, а  — число коэффициентов (включая свободный коэффициент). Это определение общеизвестно как формула Верри I.

adjr2(model::StatisticalModel, variant::Symbol)
adjr²(model::StatisticalModel, variant::Symbol)

Скорректированный псевдокоэффициент детерминации. Для нелинейных моделей необходимо выбрать одно из нескольких определений псевдокоэффициента детерминации посредством variant. В настоящее время поддерживаются только варианты :MacFadden с определением и :devianceratio с определением . В этих формулах  — это правдоподобие модели,  — правдоподобие нулевой модели (модели, включающей только свободный коэффициент),  — отклонение модели,  — отклонение нулевой модели,  — число наблюдений (заданное посредством nobs), а  — число используемых степеней свободы модели (возвращаемое функцией dof).

# StatsAPI.aicFunction

aic(model::StatisticalModel)

Информационный критерий Акаике, определяемый как , где  — правдоподобие модели, а k — число используемых степеней свободы (возвращаемое функцией dof).

# StatsAPI.aiccFunction

aicc(model::StatisticalModel)

Скорректированный информационный критерий Акаике для выборок небольшого размера (Гурвич и Цзай, 1989), определяемый как , где  — правдоподобие модели,  — число используемых степеней свободы модели (возвращаемое функцией dof), а  — число наблюдений (возвращаемое функцией nobs).

# StatsAPI.bicFunction

bic(model::StatisticalModel)

Байесовский информационный критерий, определяемый как , где  — правдоподобие модели,  — число используемых степеней свободы (возвращаемое функцией dof), а  — число наблюдений (возвращаемое функцией nobs).

# StatsAPI.coefFunction

coef(model::StatisticalModel)

Возвращает коэффициенты модели.

# StatsAPI.coefnamesFunction

coefnames(model::StatisticalModel)

Возвращает имена коэффициентов.

# StatsAPI.coeftableFunction

coeftable(model::StatisticalModel; level::Real=0.95)

Возвращает таблицу с коэффициентами и связанными статистическими характеристиками модели. level определяет уровень доверительных интервалов (по умолчанию 95 %).

Возвращаемый объект CoefTable реализует интерфейс Tables.jl и может быть преобразован, например в DataFrame, посредством using DataFrames; DataFrame(coeftable(model)).

# StatsAPI.confintFunction

confint(model::StatisticalModel; level::Real=0.95)

Вычисляет доверительные интервалы для коэффициентов с доверительным уровнем level (по умолчанию 95 %).

# StatsAPI.devianceFunction

deviance(model::StatisticalModel)

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

# StatsAPI.dofFunction

dof(model::StatisticalModel)

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

# StatsAPI.fitFunction

Выполняет подгонку статистической модели.

# StatsAPI.fit!Function

Выполняет подгонку статистической модели на месте.

# StatsAPI.informationmatrixFunction

informationmatrix(model::StatisticalModel; expected::Bool = true)

Возвращает информационную матрицу модели. По умолчанию возвращается информационная матрица Фишера, а наблюдаемую информационную матрицу можно запросить с помощью expected = false.

# StatsAPI.isfittedFunction

isfitted(model::StatisticalModel)

Указывает, была ли выполнена подгонка модели.

# StatsAPI.islinearFunction

islinear(model::StatisticalModel)

Указывает, является ли модель линейной.

# StatsAPI.loglikelihoodFunction

loglikelihood(model::StatisticalModel)
loglikelihood(model::StatisticalModel, observation)

Возвращает логарифмическое правдоподобие модели.

Если задан аргумент observation, возвращает вклад наблюдения observation в логарифмическое правдоподобие модели model.

Если observation — это объект Colon, возвращает вектор с вкладами каждого наблюдения в логарифмическое правдоподобие модели. Иными словами, это вектор поточечных вкладов в логарифмическое правдоподобие.

В общем случае sum(loglikehood(model, :)) == loglikelihood(model).

# StatsAPI.mssFunction

mss(model::StatisticalModel)

Возвращает сумму квадратов модели.

# StatsAPI.nobsFunction

nobs(model::StatisticalModel)

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

# StatsAPI.nulldevianceFunction

nulldeviance(model::StatisticalModel)

Возвращает отклонение нулевой модели, получаемой путем удаления всех независимых переменных, имеющихся в model.

Если в model есть свободный коэффициент, нулевая модель будет содержать только его; в противном случае это будет модель вообще без предиктора (даже без свободного коэффициента).

# StatsAPI.nullloglikelihoodFunction

nullloglikelihood(model::StatisticalModel)

Возвращает логарифмическое правдоподобие нулевой модели, получаемой путем удаления всех независимых переменных, имеющихся в model.

Если в model есть свободный коэффициент, нулевая модель будет содержать только его; в противном случае это будет модель вообще без предиктора (даже без свободного коэффициента).

# StatsAPI.r2Function

r2(model::StatisticalModel)
r²(model::StatisticalModel)

Коэффициент детерминации.

Для линейной модели коэффициент детерминации определяется как , где  — это объясненная сумма квадратов, а  — общая сумма квадратов.

r2(model::StatisticalModel, variant::Symbol)
r²(model::StatisticalModel, variant::Symbol)

Псевдокоэффициент детерминации.

Для нелинейных моделей необходимо выбрать одно из нескольких определений псевдокоэффициента детерминации посредством variant. Поддерживаются следующие варианты:

  • :MacFadden (коэффициент правдоподобия) с определением ;

  • :CoxSnell с определением ;

  • :Nagelkerke с определением ;

  • :devianceratio с определением .

В приведенных выше формулах  — это правдоподобие модели,  — правдоподобие нулевой модели (модели только со свободным коэффициентом),  — отклонение модели (от насыщенной модели),  — отклонение нулевой модели,  — число наблюдений (заданное посредством nobs).

Оба варианта (Кокс-Снелла и коэффициент правдоподобия) соответствуют классическому определению коэффициента детерминации для линейных моделей.

# StatsAPI.rssFunction

rss(model::StatisticalModel)

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

# StatsAPI.scoreFunction

score(model::StatisticalModel)

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

# StatsAPI.stderrorFunction

stderror(model::StatisticalModel)

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

# StatsAPI.vcovFunction

vcov(model::StatisticalModel)

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

# StatsAPI.weightsFunction

weights(model::StatisticalModel)

Возвращает веса, используемые в модели.

RegressionModel расширяет тип StatisticalModel, реализуя перечисленные ниже дополнительные методы.

# StatsAPI.crossmodelmatrixFunction

crossmodelmatrix(model::RegressionModel)

Возвращает X’X, где X является модельной матрицей для model. При возможности эта функция возвращает предварительно вычисленную матрицу, хранящуюся в model.

# StatsAPI.dof_residualFunction

dof_residual(model::RegressionModel)

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

# StatsAPI.fittedFunction

fitted(model::RegressionModel)

Возвращает подобранные значения модели.

# StatsAPI.leverageFunction

leverage(model::RegressionModel)

Возвращает диагональ проекционной матрицы модели.

# StatsAPI.cooksdistanceFunction

cooksdistance(model::RegressionModel)

Вычисляет расстояние Кука для каждого наблюдения в линейной модели model с учетом оценки влияния каждой точки данных.

# StatsAPI.meanresponseFunction

meanresponse(model::RegressionModel)

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

# StatsAPI.modelmatrixFunction

modelmatrix(model::RegressionModel)

Возвращает модельную матрицу (матрицу эксперимента).

# StatsAPI.responseFunction

response(model::RegressionModel)

Возвращает реакцию модели (зависимую переменную).

# StatsAPI.responsenameFunction

responsename(model::RegressionModel)

Возвращает имя реакции модели (зависимой переменной).

# StatsAPI.predictFunction

predict(model::RegressionModel, [newX])

Формирует расчетную реакцию model. Можно предоставить объект с новыми ковариантными значениями newX, но он должен иметь тот же тип и структуру, что и у использовавшегося для подгонки модели model. Например, для GLM это обычно объект DataFrame с теми же именами переменных, что и у исходных предикторов.

# StatsAPI.predict!Function

predict!

Версия predict, выполняемая на месте.

# StatsAPI.residualsFunction

residuals(model::RegressionModel)

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

Имеется тип исключения для оповещения об ошибках сходимости во время оценки модели:

# StatsBase.ConvergenceExceptionType

ConvergenceException(iters::Int, lastchange::Real=NaN, tol::Real=NaN)

В процессе подгонки не удалось достичь сходимости за iters итераций, то есть lastchange между стоимостью последней и предпоследней итераций оказалась больше заданного допуска tol.