На этой странице

Регрессионный анализ — методические заметки

Решения, на которых построен модуль регрессионного анализа: какая оценка даёт каждую величину, как строится её интервал, откуда берётся порог и что происходит, если подгонка невозможна, — и подтверждающие их числа, полученные на наборе-примере (cafe.ru.csv, спецификация лежит рядом). Разделы следуют разделам руководства.

Выбор переменных

Мультиномиальный исход и двухчастные счётные модели не допускают ни медиации, ни модерации. Для номинального исхода у каузальной медиации нет модели, а запасной вариант с произведением коэффициентов неприменим к отклику с тремя и более неупорядоченными уровнями: путь b был бы не одним эффектом, а коэффициентом на каждую небазовую категорию. Модели с избытком нулей и барьерные модели передают эффект сразу через два уравнения, так что нет ни единственного косвенного пути для разложения, ни единственного простого наклона для оценки. В обоих случаях списки скрываются, выбор сбрасывается, а карточка предлагает обычную пуассоновскую или отрицательную биномиальную модель. Мультиномиальный исход по той же причине (по контрасту на каждую небазовую категорию) лишается и простых наклонов, а порядковый сохраняет оба анализа: mediate() обрабатывает исход polr по категориям, а у модели пропорциональных шансов есть один наклон, который можно оценить.

Медиаторы должны быть числовыми. Каждая модель медиатора на вкладке Простой — и в методе произведения коэффициентов, и в модели медиатора для mediate() — строится функцией lm(), которая на факторе не завершается ошибкой: она без предупреждения строит регрессию на целочисленные коды уровней и возвращает NA вместо стандартных ошибок. Поэтому категориальный медиатор отклоняется по имени до запуска, а не подгоняется в шкале, лишённой смысла.

Для любого нелинейного исхода произведение коэффициентов заменяется каузальной медиацией. Путь a — линейный коэффициент, путь b — коэффициент в шкале логарифма шансов или логарифма интенсивности, так что их произведение не выражено ни в какой шкале. mediation::mediate для каждого наблюдения моделирует исход при том значении медиатора, которое тот принял бы при каждом из уровней предиктора, и усредняет разности. Поэтому ACME, ADE и общий эффект получаются в шкале отклика, с квазибайесовскими интервалами и p-значениями по тем же симуляциям, число которых задаёт настройка повторов бутстрэпа. Порядковый исход обрабатывается функцией mediate.order с непараметрическим бутстрэпом и процентильными интервалами по каждой категории исхода, поскольку для упорядоченного отклика с несколькими категориями не определены ни усреднённый эффект, ни доля опосредованного эффекта.

Контраст воздействия — среднее ∓ 1 SD, а не 0 → 1. По умолчанию mediate() сравнивает control.value = 0 с treat.value = 1. В логистической или счётной модели эффект в шкале отклика непостоянен: шаг на единицу в середине данных сдвигает предсказанную вероятность намного сильнее, чем такой же шаг в пологом хвосте. Переход 0 → 1 для любой нецентрированной переменной (возраст в годах, доход, балл теста) выводит оба контрфактических значения за пределы данных, где кривая пологая и любой эффект стремится к нулю. Привязка контраста к диапазону, который покрывают данные, и делает ACME интерпретируемым. Платой за это служит то, что эффект относится к изменению предиктора на 2 SD, о чём сообщает примечание под таблицей. Бинарный числовой предиктор сравнивается между двумя наблюдаемыми значениями, категориальный — между первыми двумя уровнями, и тот же контраст используется для условных косвенных эффектов и анализа чувствительности.

Интервал косвенного эффекта строится с коррекцией смещения, без ускорения, с переходом к процентильному интервалу. Косвенный эффект — произведение двух коэффициентов, а выборочное распределение произведения оценок асимметрично, так что обычный процентильный интервал смещён относительно центра и слишком легко отвергает нулевую гипотезу. Коррекция сдвигает вероятности квантилей на z₀ = Φ⁻¹(доля повторов ниже оценки). Если все повторы лежат по одну сторону от наблюдаемого значения, z₀ бесконечно, и вместо скорректированного берётся обычный процентильный интервал. Ускорение (BCa) не используется, поскольку его джекнайф стоил бы одной повторной подгонки на каждое наблюдение для каждого пути. Одна функция bc_ci обслуживает бутстрэп медиации, суммарного косвенного эффекта, условных косвенных эффектов и анализа путей, так что все интервалы с коррекцией смещения на карточках модуля построены одинаково.

Интервалы по менее чем 1000 повторам сопровождаются предупреждением, но не запрещаются. При B = 100 единственный повтор ниже точечной оценки даёт z₀ = −2.33, и интервал с коррекцией смещения стягивается к наименьшему повтору. Общепринятый минимум — 1000, и столько же симуляций по умолчанию делает mediate(), так что один порог годится для бутстрэпа, квазибайесовского и процентильного вариантов. Навязывать его нельзя: для этого WebR слишком медленный. Поэтому карточка называет число повторов и выполненную процедуру и просит увеличить Повторы бутстрэпа, прежде чем приводить границы интервала. Повтор, который не удалось подогнать, отбрасывается и учитывается, а не скрывается: если интервал построен по 15 повторам из 2000, это сказано под таблицей.

Доля опосредованного эффекта не выводится, если общий эффект незначим. Знаменатель отношения a×b/c — общий эффект c, и если c на заданном уровне α не отличается от нуля, отношение ничем не ограничено: крошечные знаменатели дают сильно колеблющиеся «доли». Поэтому строка заменяется примечанием, а не остаётся пустой, что выглядело бы как недосмотр. Отношение вне (0, 1) всё же выводится, с примечанием, поскольку само число не показывает, что произошло: разные знаки косвенного и общего эффектов (непоследовательная медиация, или супрессия) дают значение меньше 0, а косвенный эффект больше общего — значение больше 1. mediate.order долю опосредованного эффекта не определяет, так что на карточке порядкового исхода скрывать нечего.

Несколько медиаторов входят в одну общую модель исхода и один цикл бутстрэпа. Модель исхода — Y ~ предикторы + M₁ + … + Mₖ + ковариаты, так что каждый путь b учитывает остальные медиаторы (параллельная множественная медиация), а путей «медиатор → медиатор» нет: последовательная цепочка строится на вкладке Расширенный. Суммарный косвенный эффект по каждому предиктору пересчитывается на бутстрэп-выборках как одна величина, а не собирается из интервалов отдельных эффектов: покрытие такой сборки было бы неизвестно. Для линейного исхода он равен c − c′. При линейном исходе один цикл бутстрэпа на каждой итерации один раз берёт бутстрэп-выборку и заново подгоняет на ней все модели медиаторов, модераторов и условных косвенных эффектов. Именно это позволяет выполнить в браузере расчёт с несколькими предикторами, медиаторами и модераторами.

Простые наклоны вычисляются по полной модели. Каждый наклон — условный эффект предиктора в той модели, которую показывает таблица коэффициентов (все предикторы, все модераторы и все взаимодействия «предиктор × модератор»), при рассматриваемом модераторе в точке оценки и остальных числовых модераторах на их средних. Поэтому он учитывает остальные предикторы, а не берётся из отдельной модели с одним предиктором.

Процентильные точки оценки нужны потому, что среднее − 1 SD может выйти за пределы данных. Среднее ∓ 1 SD — разумный выбор для симметричного модератора, но у скошенного модератора среднее − 1 SD может оказаться меньше наименьшего значения в выборке, и наклон в этой точке будет экстраполяцией подогнанной прямой, а не описанием какой-либо подгруппы. 16-й, 50-й и 84-й процентили (вариант по умолчанию в PROCESS) по построению лежат внутри данных. Какой бы набор ни был выбран, точка вне наблюдаемого диапазона на обеих вкладках помечается крестиком, а диапазон называется, чтобы экстраполированный наклон нельзя было принять за наблюдаемый.

Границы Джонсона — Неймана вне наблюдаемого диапазона не выводятся. Границы — это значения модератора, при которых t условного эффекта равно критическому значению, и находятся они средствами базового R и MASS. Корень за пределами данных — пересечение экстраполированной прямой, а не результат, поэтому выводятся только корни внутри наблюдаемого диапазона. Если таких нет, строка сообщает, значим ли эффект во всём диапазоне или нигде. С какой стороны от границ лежит область значимости, определяется по значимости на концах сетки, а не по знаку старшего коэффициента квадратного уравнения, так что таблица и заливка на графике согласуются по построению. Доля наблюдений в области считается по реальным данным, а не по сетке графика, поскольку широкая на вид область может содержать мало наблюдений.

Строка модерируемой медиации — индекс Хейса только там, где условный косвенный эффект линейно зависит от модератора. Если модерируется один путь или у модератора два уровня, косвенный эффект меняется вдоль модератора с постоянной скоростью, и его наклон — индекс модерируемой медиации: одно число, интервал которого проверяет, модерируется ли медиация вообще. Если модератор входит в оба пути, эффект квадратично зависит от него, а при нелинейном исходе ACME в шкале отклика не меняется с постоянной скоростью. R сообщает, постоянен ли индекс, и если нет, строка переименовывается в изменение косвенного эффекта на единицу модератора: в квадратичном случае это скорость изменения в среднем значении модератора, для ACME — среднее изменение между крайними точками оценки. Примечание уточняет, какая именно это величина.

Анализ чувствительности выполняет medsens, определённый для линейного и пробит-уравнения. ρ — корреляция ошибок уравнений медиатора и исхода, та самая зависимость, которую допущение последовательной игнорируемости полагает нулевой. medsens заново вычисляет ACME на сетке значений ρ с шагом 0.1 — своим значением по умолчанию, поскольку уменьшение шага вдвое удвоило бы время расчёта, и без того наибольшее среди необязательных флажков. Поэтому пороговое значение приводится с этой точностью, а если кривая так и не доходит до нуля, об этом сообщается вплоть до |ρ| = 0.9. Биномиальный исход заново подгоняется с пробит-связью, единственной бинарной формой, которую допускает метод, а уравнение линейного исхода остаётся как есть. Пороговое ρ и две доли дисперсии не зависят от шкалы уравнений и переносятся из повторной подгонки без изменений. Но собственный эффект повторной подгонки относится к изменению на единицу при фиксированном профиле ковариат, а не к контрасту карточки, поэтому его значение и кривая в этом случае не выводятся. Для линейного исхода эффект medsens в точности равен a × b выше, так что выводится и то и другое. При пробит-связи эффекты при воздействии и при контроле — разные величины, поэтому у таких путей две ветви.

Повторная пробит-подгонка для категориального медиатора включается отдельно, поскольку занимает около минуты на путь. На вкладке Расширенный путь через категориальный медиатор подогнан с логистическим уравнением медиатора, а medsens требуется пробит-уравнение, поэтому перед анализом уравнение подгоняется заново (в WebR около минуты на путь). Выводится только не зависящая от шкалы часть результата, пороговое ρ и доли дисперсии, поскольку эффект повторной подгонки не совпадает с приведённым выше. Три случая пропуска пути называются явно: бинарный медиатор при бинарном исходе, для которого у medsens нет метода с пробитом в обоих уравнениях; такой же медиатор при выключенном флажке; цепочка из нескольких медиаторов, которую метод не охватывает.

Двойные роли, постоянные столбцы и счётные исходы проверяются до передачи в R. Имя, попавшее в два списка из пяти, в формуле схлопнулось бы без предупреждения, поэтому оно отклоняется по имени. Столбец, у которого среди полных наблюдений меньше двух различных значений, в зависимости от семейства даёт либо необработанную ошибку R, либо коэффициенты NA, поэтому он тоже отклоняется. glm() отказывается принимать отрицательный счётный отклик, а на нецелый выдаёт лишь предупреждение, которое R до пользователя не доводит. Поэтому первое — ошибка проверки, а второе — предупреждение о том, что правдоподобие становится квазиправдоподобием. pscl считает эти же условия, а также отклик без нулей, ошибками, поэтому для двухчастных моделей они сформулированы как предварительные условия.

Число параметров считается по семейству. ОЛМ с одним уравнением подгоняет столбцы матрицы плана и свободный член, но nnet::multinom подгоняет уравнение на каждый небазовый уровень исхода, то есть (J − 1)(p + 1) коэффициентов для исхода с J уровнями, а MASS::polr вместо свободного члена оценивает J − 1 порогов, итого p + J − 1. Если учитывать для них число параметров модели с одним уравнением, сильно перепараметризованная подгонка прошла бы проверку, блокирующую запуск, когда полных наблюдений не больше, чем параметров, а предупреждение о событиях на параметр срабатывало бы во столько же раз реже. Двухчастные модели добавляют столбцы и свободный член уравнения нулей, а при отрицательной биномиальной счётной части — ещё и θ. Каждая зависимая переменная пакета проверяется по собственному числу полных наблюдений. Регуляризованные методы от этой проверки освобождены: подгонять больше предикторов, чем наблюдений, — именно то, для чего созданы гребневая регрессия, LASSO и эластичная сеть. Но штраф для них выбирается перекрёстной проверкой, а она внутри cv.glmnet и ordinalNetTune завершается необработанной ошибкой R, если полных наблюдений меньше 4 или какая-то категория исхода слишком мала, чтобы каждый обучающий блок остался невырожденным. Оба условия проверяются заранее и выводятся как сообщения проверки, второе — при 3 наблюдениях на категорию.

При числе событий на параметр меньше 10 выводится предупреждение, но запуск не блокируется. В логистической и счётной модели ограничение накладывает число событий, а не строк: 200 строк с 8 положительными исходами и 4 предикторами проходят любое правило по числу строк, но дают 2 события на параметр, а этого хватает лишь на большие неустойчивые коэффициенты с малоинформативными интервалами. Педуцци и др. (Peduzzi et al., 1996) считают нижней границей 10, поэтому ниже неё выводится предупреждение, но оценка всё равно вычисляется: блокировка лишила бы пользователя возможности получить результат. Событиями считается самая редкая категория исхода в классификационных семействах и суммарный счёт в счётных, в обоих случаях по строкам, оставшимся после построчного удаления. Параметры — число наклонов с учётом семейства, без свободных членов. Регуляризованное оценивание эту проверку пропускает, поскольку создано именно для такого режима.

Настройка модели

Для мультиномиальной модели допускается числовой исход. Допущение пропорциональности шансов проверяют на исходах с кодами 1, 2, 3 так же часто, как на исходах с текстовыми метками, а мультиномиальная модель — стандартная замена при его нарушении. Запрет числовой зависимой переменной заблокировал бы эту замену именно там, где она нужна. Модуль сам превращает исход в фактор, и список опорного исхода работает с его уровнями так же, как с текстовыми.

Двухчастные модели не выводят таблицу ANOVA и статистики влияния. Коэффициенты подгонки pscl относятся к двум уравнениям, а её матрица плана — к одному, поэтому для неё не определены ни последовательный, ни частный критерий, ни рычаг. Остальные ограничения (регуляризованное оценивание, сравнение моделей, режим путей) касаются функций, построенных на подгонке с одним уравнением, а медиация и модерация недоступны по причине, изложенной в разделе Выбор переменных. Для диаграммы остатков используется третья шкала — остатки Пирсона против ожидаемого счёта, поскольку у двухчастной подгонки нет ни девиансного остатка, ни единого линейного предиктора, по которому можно было бы строить график.

MM-подгонка не выводит AIC, BIC и критерий отношения правдоподобия. robustbase::lmrob не максимизирует правдоподобие, поэтому общий критерий — совместный χ² Вальда для наклонов по ковариационной матрице самой подгонки. R² здесь робастный, то есть то же отношение, но вычисленное с весами наблюдений, а не по обычным суммам квадратов, и потому несопоставимый с R² МНК на тех же данных. Вместо стандартной ошибки остатков выводится робастный масштаб остатков. Стандартизованные коэффициенты получены повторной подгонкой lmrob на стандартизованных данных, так что столбец β сохраняет тот же смысл, что и везде.

Для робастной подгонки нет графика Q-Q, критерия Шапиро — Уилка и блока соответствия модели данным. В lmrob не определён стандартизованный остаток, по которому строился бы график, а нормальность — не то, на что опирается MM-подгонка. Критерии соответствия не выводятся, поскольку при снижении весов ни у одного из них не сохраняется опорное распределение. Влияние не отключается, а выводится иначе: веса наблюдений и есть собственный отчёт оценки о влиянии. Это средний вес, его квартили, наименьший вес, строки, отвергнутые по порогу robustbase 0.1/n, и строки с весом меньше половины, причём каждый показатель сравнивается с сигнальными границами самого пакета. Поэтому веса выводятся вместо расстояния Кука, а не как диагностика, вычисленная задним числом.

Робастная и квантильная модели недоступны в режиме путей и не принимаются сравнением моделей. В режиме путей MM-оценке или квантильной подгонке подверглось бы только уравнение исхода, и каждый путь через него был бы отчасти робастным, отчасти нет. Сравнение моделей ранжирует кандидатов по AIC и BIC, которых нет ни у одного из этих семейств. В робастной модели медиация и модерация не отключаются, а наследуются: при бутстрэпе косвенного эффекта заново подгоняется робастная модель, а уравнение медиатора остаётся МНК по правилу модуля, согласно которому уравнение медиатора следует типу своей зависимой переменной. В квантильной модели обе процедуры по разным причинам выводят примечание вместо таблицы. Косвенный эффект — произведение коэффициентов, раскладывающее эффект на условное среднее, а квантиль суммы не равен сумме квантилей. Область значимости для простого наклона строится по ковариационной матрице коэффициентов, а quantreg её не определяет.

Сетка квантилей подгоняется целиком, по умолчанию — квартили. quantreg::rq решает задачу линейного программирования, и подгонка всей сетки стоит примерно столько же, сколько подгонка одной точки, так что одно τ ничего не экономит. Подгонка только по медиане во многом повторяет робастную модель, которая оценивает центральную линию эффективнее. Главный довод в пользу квантильной регрессии — эффект, меняющийся вдоль распределения, — при одном τ не виден, поэтому по умолчанию берутся квартили, а не одна медиана. Стандартизованные коэффициенты, коллинеарность, диагностику и сравнительные блоки нельзя получить «сразу для всех τ», поэтому они вычисляются для отображаемого квантиля, и каждый блок указывает своё τ.

R¹ — мера для одного квантиля, и правдоподобия рядом с ней нет. R¹ Кёнкера и Машаду сравнивает суммарные потери по кусочно-линейной функции потерь квантильной регрессии у модели и у модели только со свободным членом при том же τ. Она не разлагает дисперсию и несопоставима ни между разными τ, ни с R² МНК. F рядом с ней — собственный анализ девиансов quantreg относительно той же модели только со свободным членом. Он выводится, только если обращается ковариационная матрица nid, поскольку там, где это невозможно, anova.rq ничего не возвращает. Квантильная подгонка не максимизирует правдоподобие, поэтому ни AIC, ни BIC, ни критерия отношения правдоподобия рядом нет.

При регуляризованном оценивании опорный исход скрыт. Мультиномиальная подгонка glmnet симметрична: по уравнению на каждый уровень исхода без базовой категории, так что выбору базовой категории не на что влиять. При классической подгонке тот же выбор передаётся в сравнение моделей, чтобы таблицы усреднённых коэффициентов по исходам строились относительно выбранной категории, а не первого уровня, как по умолчанию в nnet::multinom.

Таблица ANOVA при методе Фёрта строится по Вальду, как и интервалы. Путь через отношение правдоподобия потребовал бы заново подгонять каждую усечённую модель функцией, которая не принимает штраф. Поэтому таблица ANOVA приводит критерии χ² Вальда, основанные на том же, что и коэффициенты рядом, а доверительные интервалы строятся по Вальду для пенализованной подгонки, как и в остальном выводе ОЛМ. Всё остальное (диагностика, влияние, соответствие модели данным, ROC, медиация, модерация, столбец β, сравнение моделей) выполняется обычным путём, поскольку подгонка brglm2 — обычный объект glm с пенализованной скор-функцией.

Групповое LASSO доступно только для линейной, биномиальной и пуассоновской моделей. grpreg подгоняет гауссовскую, биномиальную и пуассоновскую модели. Порядковые модели подгоняются через ordinalNet, отрицательные биномиальные — через mpath, и ни в одном из этих пакетов нет группового штрафа. Поэтому при переходе к такому семейству метод без ошибки возвращается к обычному LASSO, а при выборе семейства, где групповой вариант есть, тот снова становится доступен. Без категориальных предикторов каждая группа состоит из одного столбца, и подгонка совпадает с LASSO.

По умолчанию — lambda.1se. Так принято в самом glmnet, и это правило отвечает на вопрос, ради которого обычно и вводят штраф: какие предикторы важны. Две ошибки перекрёстной проверки различаются меньше, чем шум в каждой из них, так что правило не теряет измеримой точности, а взамен даёт более простой и устойчивый отобранный набор, в котором член остаётся, только если явно этого заслуживает. lambda.min выбирают, когда цель — точность предсказания, а не экономность модели. Название варианта не упоминает критерий, поскольку критерий зависит от семейства: cv.glmnet и cv.grpreg минимизируют ошибку или девианс перекрёстной проверки, а ordinalNetTune и подбор в mpath максимизируют логарифм правдоподобия перекрёстной проверки.

Заданная вручную λ привязывается к подогнанному пути. Каждый движок подгоняет модель на собственной сетке λ, и coef(s = ) интерполировал бы между точками сетки, тогда как ошибка перекрёстной проверки и доля объяснённого девианса берутся в ближайшей точке. Поэтому введённое значение заменяется ближайшей точкой сетки, и именно её показывает строка λ (выбранная). Сетка строится в собственном масштабе каждого метода, у каждого со своим порядком величин, для чего и нужна строка Диапазон лямбды. Внутри блока перекрёстной проверки или расщепления то же значение привязывается к пути этого блока: если передать его как lambda =, glmnet построил бы путь из одной точки при значении, которое на данных блока может оказаться далеко за пределами его сетки.

Правило выбора повторяется внутри каждого блока и расщепления, а повторные подгонки для устойчивости отбора сохраняют λ полной выборки. При перекрёстной проверке пенализованной подгонки выбор λ выполняется заново внутри каждого обучающего блока. Если бы использовалась λ полной выборки, в каждый блок перешла бы настройка, подобранная с участием отложенных строк, и вернулся бы тот оптимизм, который перекрёстная проверка должна измерить. Многократное расщепление выборки подбирает λ заново на отбирающей половине каждого расщепления, поскольку λ, выбранная по всей выборке, внесла бы в отбор половину для вывода и лишила бы расщепление смысла. Единственное исключение — λ, заданная вручную: это постоянная, которая нигде не подбирается. Устойчивость отбора, напротив, подгоняет каждую половину выборки при λ, выбранной на полных данных, поскольку частота отбора — утверждение именно об этой модели, причём на сетке λ, обрезанной в этой точке. Каждый движок доходит до неё тёплым стартом от λ_max, так что начальный отрезок сетки даёт то же решение за малую долю времени. Все разбиения на блоки и половины выборки выполняются при зерне из настроек, так что выбранная λ и частоты воспроизводимы.

Дополнительные статистики

Таблица типа I выводится только там, где есть что разложить последовательно. Типы II и III вычисляет car::Anova. Тип I — последовательное разложение, которого нет в car, поэтому он берётся из stats::anova, где столбцы таблицы для ОЛМ называются иначе, а первая строка относится к модели только со свободным членом. Обе таблицы приводятся к виду car, так что один блок форматирования обрабатывает любую из них. У polr и multinom нет метода anova() для одной модели, пригодного для последовательного разложения, anova.lmrob — критерий сравнения двух моделей, а не таблица, а робастная ковариационная матрица заменяет разложение сумм квадратов, на котором строится последовательная таблица (для неё car предлагает типы II и III, но не последовательный). Поэтому в этих четырёх случаях вариант скрыт, а ранее выбранный тип заменяется типом II. Тип III не зависит от параметризации только при контрастах факторов с нулевой суммой, поэтому модель сначала заново подгоняется с contr.sum, и робастная ковариационная матрица пересчитывается по этой подгонке, а не переносится между двумя базисами коэффициентов.

Робастная ковариационная матрица доступна там, где sandwich может сопоставить скор-функцию с матрицей плана. vcovHC и NeweyWest берут estfun() вместе с матрицей плана, и они согласуются, только если на каждый коэффициент и каждую строку приходится один вклад в скор-функцию. Это lm и семейства glm с одним уравнением: линейное, биномиальное, пуассоновское и отрицательное биномиальное. У polr и multinom есть строки порогов и контрастов без соответствующих столбцов в матрице плана, двухчастная подгонка охватывает два уравнения, а у пенализованной подгонки вообще нет ковариационной матрицы, которую можно было бы корректировать. Робастная и квантильная модели сохраняют ковариационную матрицу своих оценок. Подгонка Фёрта — обычный объект glm и согласовалась бы, но estfun.glm возвращает непенализованную скор-функцию, так что сэндвич-оценка описывала бы оценку, которую никто не подгонял.

Вариант, устойчивый к гетероскедастичности, — HC3, а по умолчанию остаются модельные ошибки. Из семейства оценок Уайта модуль использует HC3 — вариант для конечных выборок Мак-Киннона и Уайта (MacKinnon & White, 1985), который сильнее всего снижает вес строк с высоким рычагом. По умолчанию он не выбран, потому что при действительно постоянной дисперсии остатков немного уступает обычным ошибкам в мощности, а в какой ситуации находятся данные, показывает диагностика на той же карточке. Общий критерий модели должен согласовываться с коэффициентами: F МНК или χ² отношения правдоподобия над робастными коэффициентами противоречили бы примечанию под ними, поэтому критерием модели становится lmtest::waldtest по той же матрице (F для линейной модели, χ² для ОЛМ). Таблица ANOVA тоже строит свои критерии по этой матрице, поэтому выводит критерии Вальда без сумм квадратов, которые для неё не определены. Псевдо-R² вычисляются по правдоподобиям и потому остаются единственной частью карточки ОЛМ, к которой коррекция неприменима.

Ньюи — Уэст — с автоматической шириной окна, предварительным выбеливанием AR(1) и поправкой на конечную выборку. Вызов — sandwich::NeweyWest(m, adjust = TRUE). Ширина окна выбирается автоматически по Ньюи и Уэсту (Newey & West, 1994), а не задаётся числом, которое пришлось бы обосновывать. Предварительное выбеливание остатков моделью AR(1) включено в функции по умолчанию и оставлено, а adjust = TRUE добавляет поправку на конечную выборку. Выбранная ширина окна выводится в числе лагов (bwNeweyWest с округлением вниз), так что примечание под таблицей сообщает, что именно выполнено. Порядок строк в файле принимается за порядок во времени — то же допущение, что уже делает критерий автокорреляции на той же карточке, — поэтому руководство рекомендует этот вариант только для строк, упорядоченных во времени.

Опорное распределение зависит от семейства, а строки, для которых коррекция не удалась, перечисляются. Скорректированный интервал использует t с остаточными степенями свободы там, где таблица приводит t (линейная модель), и нормальное распределение там, где она приводит z Вальда (ОЛМ), так что каждый интервал согласуется со стоящим рядом p. Экспоненцированный интервал — тот же интервал в шкале отношений, поэтому он тоже сдвигается. Скорректированная матрица считывается по именам членов, а не по позициям: у неоцениваемого члена строка коэффициента есть, а робастной дисперсии нет, и при чтении по позициям все последующие SE сместились бы на чужие предикторы. Такие строки сохраняют модельные SE, статистику, p и ДИ, а примечание их перечисляет. Если матрицу построить не удалось вовсе, таблица остаётся на модельных SE, а примечание называет не сработавшую коррекцию, так что карточка никогда не заявляет о коррекции, которой не было.

β в ОЛМ определяется соглашением, которое выбирает пользователь, а SD берутся из матрицы модели. Общепринятой стандартизации для ОЛМ нет, поскольку исход — это 0/1 или счёт, и в шкале связи у него нет SD, на которое можно делить. Вариант только по предикторам — это b × SD(x), изменение исхода в шкале связи на одно SD предиктора. Вариант по латентной переменной дополнительно делит на SD(y*), где при логит-связи Var(y*) = Var(η) + π²/3, как у Лонга (Long, 1997). Это ставит β на одну основу с линейной моделью ценой допущения о пороговой модели. Фиксированная остаточная дисперсия есть только у логит-связи, поэтому для счётных семейств латентный вариант скрыт, а если он всё же окажется выбран при другой функции связи, то до вывода примечания будет заменён вариантом по предикторам, так что примечание всегда называет соглашение, по которому получены числа. Мультиномиальная модель стандартизуется только по предикторам внутри каждого уравнения исхода, поскольку у модели с базовой категорией по латентной шкале на каждый контраст, а не одна на модель. Двухчастные модели подпадают под то же ограничение, что и счётные семейства. SD берутся по подогнанной матрице модели, а не по исходным данным, так что фиктивный столбец и столбец взаимодействия стандартизуются так же, как обычный числовой предиктор.

β линейной модели — это повторная подгонка на стандартизованных данных, где контраст фактора остаётся 0/1. Столбец получается повторной подгонкой модели на z-стандартизованных числовых столбцах (исходе и числовых предикторах) той же оценкой, что и у семейства, так что β робастной или квантильной модели остаётся робастной или квантильной величиной, а не оценкой МНК под той же подписью. Категориальный контраст остаётся столбцом 0/1, поэтому для числового предиктора β равен b×SD(x)/SD(y), а для категории — b ⁄ SD(y), то есть разнице групп в единицах SD исхода, и примечание под таблицей предупреждает, что эти величины несопоставимы. Аналитический интервал β — это confint по повторной подгонке, а не пересчёт исходного интервала, поскольку стандартизованный столбец взаимодействия — произведение z-оценок, а не z-оценка произведения, так что β — самостоятельная величина со своим интервалом.

Бутстрэп-интервал β строится с коррекцией смещения и повторной подгонкой на каждой бутстрэп-выборке. β — коэффициент, делённый на стандартные отклонения, оценённые по той же выборке. Интервал confint по стандартизованной повторной подгонке считает эти SD постоянными, отчего он всегда симметричен относительно β, какой бы ни была форма выборочного распределения. Никакая поправка HC этого не меняет: сэндвич-оценка исправляет ширину интервала Вальда, но не его форму, а выборочное распределение отношения асимметрично. Каждый повтор берёт бутстрэп-выборку наблюдений, заново подгоняет модель и заново стандартизует её на этой бутстрэп-выборке (если стандартизовать один раз и брать бутстрэп-выборки из стандартизованной модели, SD остались бы фиксированными). Используются те же два соглашения, что и для точечных оценок: повторная подгонка на z-оценках для линейной, робастной и квантильной моделей и b × SD(x) по собственной матрице модели повтора для ОЛМ, с делением на SD(y*), если выбрана латентная шкала. Интервал строится той же функцией bc_ci, что и в бутстрэпе медиации, с числом повторов из настройки повторов бутстрэпа и с зерном бутстрэпа. Строка, для которой набралось меньше 10 конечных повторов, сохраняет прежний интервал и перечисляется в примечании, а если так вышло со всеми строками, карточка сообщает, что интервалы остались аналитическими. B и его интервал не затрагиваются, так что в одной строке никогда не смешиваются два способа вывода. Флажок доступен для линейной, робастной, квантильной, биномиальной, пуассоновской и отрицательной биномиальной моделей. polr и multinom подгоняются итерационной оптимизацией и могут не сойтись на бутстрэп-выборке, потерявшей уровень исхода. Двухчастные модели ведут себя так же, а кроме того, имеют β для каждого уравнения без единой матрицы модели, из которой можно взять SD. Пенализованная подгонка β не выводит вовсе.

Чтение результатов — классическая регрессия

Интервал R² получается обращением F-критерия самой модели. Замкнутой формулы для доверительного интервала R² нет. На карточке приводится интервал по нецентральному F-распределению, построенный по Стейгеру и Фоулади (Steiger & Fouladi, 1997): для каждой хвостовой вероятности заданного уровня находится параметр нецентральности λ, при котором наблюдаемое F попадает в эту точку, и каждая граница переводится обратно по формуле R2=λ/(λ+n). Это тот же критерий, что в строке F, только применённый в обратную сторону, поэтому интервал и p-значение рядом с ним никогда не противоречат друг другу. Граница, которую поиск не может найти, приравнивается к 0 или 1. f² выводится отдельной строкой, а не оставляется на расчёт читателю, потому что границы Коэна 0.02, 0.15 и 0.35 заданы для f², и R², сравнённый с ними без пересчёта, сравнивается не с той шкалой. Интерпретация R² использует эти границы в пересчёте на долю объяснённой дисперсии: 0.02, 0.13 и 0.26.

R² Мак-Фаддена интерпретируется по шкале Мак-Фаддена, R² Нагелькерке — по шкале Коэна, скорректированный R² — по усадке. По собственным рекомендациям Мак-Фаддена (McFadden, 1977) значения от 0.2 до 0.4 означают «отличное соответствие», поэтому интерпретация такова: Слабое соответствие ниже 0.1, Приемлемое соответствие до 0.2 и Отличное соответствие начиная с 0.2, а более высокой градации нет. Читатель, привыкший к МНК и ждущий 0.7, такого значения никогда бы не увидел. Нагелькерке перемасштабирует R² Кокса — Снелла так, чтобы максимум был равен 1, как у R² МНК, поэтому его интерпретация дана по шкале Коэна для R² (0.02, 0.13, 0.26), а не по шкале Мак-Фаддена. Скорректированный R² оценивается по разнице между R² и им самим, то есть по усадке: меньше 0.01 — минимальная, меньше 0.05 — приемлемая, больше — заметная, поскольку такая разница показывает, что члены модели подгоняются под шум выборки.

По умолчанию — тип II. Это значение по умолчанию в car и более мощный вариант при отсутствии взаимодействия, а это обычный случай. Тип II проверяет главный эффект без учёта содержащих его взаимодействий, что имеет смысл, только если взаимодействие предполагается отсутствующим. Поэтому модели, построенной вокруг взаимодействия, нужен тип III (по умолчанию в SPSS и в прикладной литературе), где каждый главный эффект оценивается при наличии взаимодействия и при остальных членах, зафиксированных в центре. Тип I показывает, что добавляет каждый член в порядке ввода, и уместен, только если этот порядок отражает иерархию. Общий критерий модели при любом типе одинаков, различается только разложение по членам.

На форест-графике по умолчанию показаны β с интервалами из стандартизованной повторной подгонки. Форест-график использует одну ось для всех членов, а B выражены в тех единицах, в которых измерен каждый предиктор: предиктор, измеренный в тысячах, задаёт масштаб оси, и остальные интервалы сжимаются в точку. β приводит члены к одной шкале, поэтому по умолчанию график показывает β везде, где повторная подгонка дала интервалы, а переключатель нужен, чтобы увидеть эффекты в исходных единицах. Таблица над графиком всегда дана в шкале B. Интервалы β берутся из повторной подгонки на стандартизованных данных, а не из пересчёта исходных интервалов, поскольку при взаимодействиях в модели стандартизованный столбец взаимодействия — произведение z-оценок, а не z-оценка произведения, и интервалы не совпадают.

p-значение точки разреза не получает интерпретации. polr фиксирует нуль латентной шкалы соглашением об идентификации, а не чем-либо в данных, поэтому утверждение «этот порог значимо отличается от нуля» относится к соглашению. Вместо этого столбец интерпретации сообщает, лежит ли точка разреза ниже начала шкалы или на нём и выше, а оценка, SE, ДИ и p остаются на экране для тех, кому нужны числа. Каждая строка подписана парой категорий, которые она разделяет, а не внутренним именем коэффициента в polr, так что границу можно понять без расшифровки.

Разделение определяется по величине оценки на шаг столбца при условии, что какая-то предсказанная вероятность равна 1. Биномиальная, порядковая или мультиномиальная подгонка помечается, если какая-то предсказанная вероятность отличается от 1 меньше чем на 10⁻⁵, а какой-то коэффициент превышает 10 логитов (изменение шансов в 22 000 раз) на одно SD столбца непрерывного предиктора или на переход между двумя значениями двузначного предиктора, например фиктивной переменной. Члены, превысившие порог, перечисляются. Для индикатора шаг важен: его SD не больше 0.5, а glm останавливает разошедшийся коэффициент примерно на 17–20 логитах, так что в расчёте на SD он никогда не дошёл бы до порога, и самый частый случай разделения, когда в одной категории встречается только один исход, остался бы незамеченным. Решение принимается по величине оценки, а не по её критерию Вальда, поскольку численный гессиан polr может дать разошедшемуся члену стандартную ошибку, близкую к нулю, а не огромную.

Проверка. Для участников кафе, у которых есть оценка, регрессия рекомендует на вкус и индикатор оценка = 10 (28 участников, все с уровнем «рекомендует») даёт для индикатора 17.3 логита со стандартной ошибкой 1201. Разделение обнаруживается и называется в биномиальной, порядковой и мультиномиальной подгонке, а регрессия рекомендует только на оценка с коэффициентом 0.848 не помечается.

VIF вычисляются по центрированной матрице плана, а если у модели есть собственная ковариационная матрица — по ней. Исходный столбец взаимодействия X*W механически коррелирован с порождающими его переменными (это арифметика, а не проблема модели), и обычная модель y ~ x1*x2 может дать VIF около 160 без центрирования и около 1 после центрирования этих переменных. Поэтому числовые предикторы центрируются по среднему, и матрица плана перестраивается по этим данным до вспомогательных регрессий. Вспомогательные регрессии содержат свободный член, так что центрирование самих столбцов матрицы плана ничего бы не изменило: несущественную коллинеарность из столбцов взаимодействия убирает только центрирование исходных переменных. Коэффициенты подогнанной модели не меняются, центрированную матрицу использует только диагностика. Если у подгонки есть собственная ковариационная матрица, предпочтителен car::vif по повторной подгонке на центрированных данных: он вычисляет увеличение дисперсии по этой матрице и поэтому описывает коэффициенты данной модели, а не матрицу плана МНК с теми же столбцами (при разных весах модели эти величины расходятся). К VIF по матрице плана возвращаются подгонка с неоцениваемыми членами (в её ковариационной матрице нечего выделять), multinom, где индексация car даёт числа, не являющиеся VIF, и двухчастные модели, ковариационная матрица которых охватывает оба уравнения, а матрица плана — только одно. Сгруппированный категориальный предиктор представлен одной строкой GVIF: это величина GVIF^(1/(2·Df)) из car, возведённая в квадрат, чтобы её можно было сравнивать с обычным VIF. Столбец, у которого R² вспомогательной регрессии превышает 1 − 10⁻⁶, считается не коллинеарным, а линейно зависимым, и его строка помечается как не поддающаяся оценке вместо 13-значного артефакта.

На графике Q-Q показаны стьюдентизированные остатки, а критерий Шапиро — Уилка проверяет исходные. Дисперсии исходных остатков МНК неодинаковы (у каждого она зависит от рычага его строки), и остатки слегка коррелированы, тогда как доверительная полоса вокруг линии Q-Q предполагает независимую одинаково распределённую выборку, которую внутренне стьюдентизированные остатки (rstandard) приближают гораздо лучше. По той же причине и plot.lm в R строит свой график Q-Q по ним. Критерий Шапиро — Уилка остаётся на исходных остатках, потому что везде, где приводится «критерий Шапиро — Уилка для остатков», имеются в виду именно они. График и критерий намеренно работают с немного разными величинами, о чём сообщает подпись. Стьюдентизированные остатки хранятся со своим порядком рангов, поскольку деление на член, зависящий от рычага, может изменить их порядок, а строка с рычагом 1 не даёт конечного значения и из выборки исключается.

Критерий Бройша — Годфри строится по остаткам Пирсона самой модели, а критерий Дарбина — Уотсона — двусторонний. lmtest::bgtest извлекает X и y и заново подгоняет модель МНК, не учитывая семейство и функцию связи, так что для ОЛМ он дал бы диагностику линейной вероятностной модели, а не той, что подогнана. Поэтому карточка сама вычисляет ту же LM-статистику первого порядка: остатки Пирсона регрессируются на матрицу плана и собственный лаг, и n·R² сравнивается с χ² с 1 df. Так диагностируется именно подогнанная модель. dwtest по умолчанию проверяет одностороннюю альтернативу «больше», при которой значение DW выше 2 никогда не отмечается, поэтому модуль запрашивает двусторонний критерий и, если он значим, определяет направление по статистике. Двухчастные модели проверяются так же, как ОЛМ, поскольку у них есть остатки Пирсона и матрица плана счётной части для вспомогательной регрессии, но нет гауссовских остатков МНК для критерия Дарбина — Уотсона.

Критерий Шапиро — Уилка применяется к подвыборке из 5000 остатков, а графики прореживаются до 5000 точек по рангам. shapiro.test принимает не больше 5000 наблюдений, поэтому более крупная модель проверяется на случайной подвыборке такого размера, взятой с зерном воспроизводимости, о чём сообщается рядом с выводом. Если на графиках остатков рисовать по элементу <circle> на каждую строку, отрисовка перестаёт справляться гораздо раньше, поэтому каждый график прореживается до 5000 точек, взятых по рангам остатков: та же картина в меньшем разрешении, и крайние значения остаются на краях. Сохранённые ранги и истинное n передаются вместе с точками, поскольку позиция на графике Q-Q, вычисленная по длине прореженного набора, поставила бы каждую точку на квантиль её ранга среди 5000, а не среди n. При таком же N карточка предупреждает, что критерии Шапиро — Уилка и Бройша — Пагана отвергают гипотезу из-за отклонений, слишком малых, чтобы повлиять на коэффициенты или их интервалы, а выводы МНК в этом диапазоне особенно устойчивы, поэтому оба вывода следует делать по графикам. Если модель воспроизводит отклик почти точно, остаётся лишь погрешность округления, которую любой критерий принял бы за свидетельство о соответствии модели данным. Поэтому остатки, разброс которых меньше 10⁻⁸ масштаба предсказанных значений, объявляются вырожденными и не проверяются.

Диагностика использует уровень значимости для проверки допущений, а выводы о самой модели — основной уровень. Диагностика остатков, критерий выбросов, тест Бранта, критерии соответствия модели данным и критерий направленной сепарации проверяют нулевую гипотезу «с данными или моделью всё в порядке»: остатки нормальны, некоррелированы и гомоскедастичны; ни одно наблюдение не экстремальнее, чем допускает n; на каждый предиктор одно отношение шансов; линейные члены ничего не упустили; вероятности откалиброваны; дисперсия пуассоновская; все подразумеваемые независимости выполняются. Поэтому малое p здесь — сигнал тревоги, а более строгой проверке соответствует более высокий порог. Если бы интерпретация этих критериев следовала основному уровню, пользователь, снизивший его до 0.01 для своих гипотез, сделал бы все проверки мягче, то есть добился бы обратного. Именно для критериев с такой обратной нулевой гипотезой и существует уровень значимости для проверки допущений. Тот же уровень используют панель допущений модуля сравнения и критерии нормальности, так что критерий нормальности остатков здесь и проверка нормальности там дают один вывод по одному p. Ячейки p и статистики в этих таблицах выделяются и помечаются звёздочками на том же уровне, так что оформление строки согласуется с её интерпретацией при любых значениях двух уровней. F-критерий, критерии коэффициентов и критерий превышения базовой точности — выводы в пользу модели, где пользователь надеется на значимость, поэтому для них сохраняется основной уровень.

Для D Кука выводятся два порога, и все пороги используют ранг модели. Классический порог D > 1 нагляден и работает на малых выборках, но на больших его почти никто не превышает: все наблюдения выглядят безопасными, хотя несколько из них заметно сдвигают модель. Поэтому рядом выводится зависящий от объёма выборки порог 4/(n−p), то есть 4, делённое на остаточные степени свободы. Если за ним нет ни одного наблюдения, это действительно обнадёживает, если много, но ни одного за 1 — влияние распределено без доминирующего наблюдения, а наблюдение за порогом 1 всегда заслуживает внимания. Порог рычага — 2p/n, порог DFFITS — 2p/n, границы COVRATIO — 1±3p/n. Везде p — ранг модели, а не число коэффициентов (неоцениваемый коэффициент равен NA и не оценивается), а n — число строк, фактически использованных подгонкой, так что модель с исключёнными членами или строками оценивается по своим настоящим p и n. Для каждого порога перечисляется не больше десяти наблюдений: плохо обусловленная подгонка отмечает тысячи, а список нужен, чтобы указать на несколько наблюдений, которые стоит изучить, остальное же показывает число рядом.

Критерий выбросов применяет поправку Бонферрони к наибольшему стьюдентизированному остатку, а в ОЛМ использует одношаговые приближения. Подсчёт |t| > 3 отмечает фиксированную долю любой чистой нормальной выборки, растущую вместе с n. Наибольший внешне стьюдентизированный остаток (rstudent), сравниваемый со своим t-распределением при p, умноженном на число наблюдений, удерживает долю ложных сигналов на уровне α при любом объёме выборки, поэтому подсчёт и заменён критерием. В ОЛМ influence.measures получает свои величины из весов IRLS подгонки — это одношаговые приближения, а не точные подгонки с исключением по одному наблюдению, — а rstudent даёт приближённый джекнайф-девиансный остаток, у которого нет точного t-распределения, поэтому он сравнивается с нормальным. Примечание под таблицей сообщает об этом: такая диагностика по-прежнему уместна, но это не те точные величины, что в линейной модели. Критерий объявляется невычисленным, если нет ни одного конечного стьюдентизированного остатка, а в линейной модели — ещё и если после исключения наблюдения не остаётся ни одной остаточной степени свободы.

Таблица весов наблюдений использует сигнальные границы самого robustbase. Строка считается отвергнутой, если lmrob присваивает ей вес ниже порога выбросов 0.1/n. Оба предупреждения (доля отвергнутых строк выше предела оценки, средний вес ниже него) сравниваются с параметрами robustbase warn.limit.reject и warn.limit.meanrw, по умолчанию равными 0.5. Это же значение служит порогом для строк с весом меньше половины. Таблица применяет собственные границы пакета, а не вводит свои.

Число групп для критерия Хосмера — Лемешова задаёт пользователь, а рядом выполняется критерий ле Сесси — ван Хаувелингена. hoslem.test (ResourceSelection) выполняется при числе групп из настройки, ограниченном диапазоном от 3 до 50, по умолчанию 10, поскольку вывод действительно от него зависит: одна и та же модель может пройти критерий при g = 10 и не пройти при g = 8, и число групп, выбранное модулем без ведома пользователя, означало бы и вывод, выбранный без его ведома. R уменьшает число групп, если предсказанных значений не хватает для их заполнения, и сообщает об этом только в предупреждении, поэтому фактическое число восстанавливается как df + 2 и выводится рядом с запрошенным. Если различных предсказанных значений меньше трёх, не подходит никакое число групп, и критерий объявляется неопределённым с указанием случая — модели, у которой мало предикторов и все они категориальные. Невзвешенная сумма квадратов, предложенная ле Сесси, ван Хаувелингеном, Копасом и Хосмером, дополняет его без разбиения на группы, без настраиваемых параметров и без произвола группировки и даёт ответ и там, где критерий Хосмера — Лемешова не определён. Её дисперсия d′(W − WX(X′WX)⁻¹X′W)d вычисляется так же, как в rms:::residuals.lrm, — как взвешенная остаточная сумма квадратов регрессии d = 1 − 2p на матрицу плана с весами p(1 − p), через QR-разложение и без явного обращения матрицы. Этот код перенесён в модуль, а не вызывается, поскольку rms::lrm обрушивает страницу WebR, и до его gof не добраться. Насыщенная модель (одно различное предсказанное значение на свободный параметр или нулевая дисперсия с точностью до 10⁻¹⁵ её масштаба) не оставляет этой проекции ничего для оценки, и она объявляется насыщенной, а не выдаёт z, полученное делением шума на шум. Оба критерия выводятся с примечанием о согласии их выводов, поскольку они чувствительны к разным отклонениям: согласие — более сильное свидетельство, чем каждый из них по отдельности, а при расхождении примечание называет, на что реагирует каждый критерий, чтобы оно не выглядело противоречием.

Точность сравнивается с базовой точностью, а точность (PPV) по категориям и F1 вычисляются по матрице ошибок. Точность постоянного предсказания самого частого уровня — минимум, который должен превзойти классификатор по наибольшей вероятности, и «77% верных ответов» становится результатом только тогда, когда это сделано. Строка сравнивает число верных предсказаний с этой долей односторонним точным биномиальным критерием: P(X ≥ число верных) при Binomial(n, NIR), вычисленная через регуляризованную неполную бета-функцию, чтобы хвост сохранял точность там, где её потеряла бы сумма вероятностей. Такое же сравнение выводит caret::confusionMatrix под названием Accuracy > NIR. R передаёт полноту по каждому уровню, а точность (PPV) по категории вычисляется в приложении по строкам матрицы ошибок, поскольку уровень с высокой полнотой и низкой точностью модель приписывает слишком часто, а не распознаёт. F1 выводится из этой пары, поскольку ни один источник его не даёт: pROC::coords отбрасывает f1 из ret =, а в блоке по уровням есть только полнота. Если оба значения нулевые, F1 по соглашению равен 0, а не считается неопределённым. Все числа блока получены на обучающих данных, и примечание под ним сообщает об этом, поскольку примечание о происхождении чисел на карточке ROC к нему не относится.

Тест Бранта строится вручную по кумулятивным бинарным разбиениям. Статистики Бранта (Brant, 1990) в MASS нет. Модуль заново подгоняет модель как K − 1 кумулятивных логитов Y > j, которые она подразумевает, функцией glm.fit на матрице плана порядковой подгонки, собирает совместную ковариационную матрицу наклонов разбиений, Cov(b_j, b_l) = (X′W_jX)⁻¹(X′W_jlX)(X′W_lX)⁻¹ при W_jl = diag(π_l(1 − π_j)), и проверяет контрасты b_j − b_j+1 = 0 для каждого наклона критерием χ² Вальда, оставляя свободные члены разными. Результат — по строке на предиктор с K − 2 df и общий критерий по всем предикторам. Сравнивать есть что, только начиная с двух разбиений и одного предиктора, поэтому для исхода с двумя уровнями или модели только со свободным членом критерий объявляется неприменимым. Разбиение, которое не сошлось, делает невыполнимым весь критерий, поскольку наклон несошедшегося логита нельзя использовать для сравнения.

Критерии χ² для счётных моделей не интерпретируются, если больше пятой части предсказанных значений меньше 5. Девианс и χ² Пирсона сравниваются с χ² с остаточными степенями свободы — приближение, которое становится точным по мере роста предсказанных значений, а не n. Поэтому на разреженных данных оба p-значения — просто арифметика без опорного распределения. Граница — правило Кокрена: пятая часть ожидаемых частот меньше 5. За ней карточка не выводит интерпретацию обоих критериев, а примечание предупреждает, что ни одно p нельзя считать выводом о соответствии модели данным. Доля малых значений и наименьшее предсказанное значение выводятся отдельной строкой. Строка избыточной дисперсии — регрессионный скор-тест Камерона и Триведи (Cameron & Trivedi, 1990): вспомогательная регрессия ((y−μˆ)2−y)/μˆ на μ̂ без свободного члена, t которой принимается за z. Критерий двусторонний, чтобы выявлять и недостаточную дисперсию, поскольку у самого отношения дисперсии опорного распределения нет. Ему нужна только пуассоновская подгонка, поэтому он выводится только для модели Пуассона, а для отрицательной биномиальной вместо него выводятся θ и его стандартная ошибка, поскольку именно θ отличает это семейство. Границы интерпретации дисперсии, 0.8 и 1.2, — общепринятый допуск вокруг отношения, математическое ожидание которого равно 1.

Двухчастные модели сравниваются ранжированием, а не критерием, и у барьерной модели информативна третья строка. Модель из одного уравнения (та же формула счёта и то же распределение, подогнанные заново без уравнения нулей) — это та же модель на границе её пространства параметров, а не вне его. Поэтому у критерия отношения правдоподобия здесь нет заявленного нулевого распределения, а критерий Вуонга предназначен для невложенных моделей, какими эти не являются. ΔAIC и ΔBIC (критерий модели из одного уравнения минус критерий этой модели, так что положительное значение свидетельствует в пользу этой модели) упорядочивают две модели, не претендуя на то, чего обосновать не могут, и примечание под таблицей объясняет это там, где читатель стал бы искать p-значение. Интерпретация Выбор модели использует для ΔAIC границы ±2 — общепринятый порог различия, на которое стоит опираться. Интерпретация Избыток нулей отмечает модель из одного уравнения, если её ожидаемое число нулей меньше наблюдаемого на десятую часть: при меньшем расхождении второе уравнение подгоняет нули, которые счётная модель и так воспроизводит. Ожидаемые нули суммируются по собственной вероятности нуля каждой подгонки: predict(type = "prob") для двухчастной модели, dpois или dnbinom при подогнанных средних модели из одного уравнения. Уравнение нулей барьерной модели подгоняется по самому индикатору «нуль/не нуль», так что сумма его предсказанных вероятностей равна наблюдаемому числу нулей, и первые две строки совпадают, как бы хорошо модель ни соответствовала данным. Смотреть нужно третью строку, показывающую, насколько модель из одного уравнения отстоит от той же цели, о чём и сообщает примечание на карточке. Стандартная ошибка θ двухчастной модели получается дельта-методом из оценки log θ в pscl.

Правила выбора порога — это coords("best") из pROC, при равенстве оптимумов выбирается точка ближе к углу, а PPV, NPV и точность пересчитываются при используемой распространённости. J Юдена и точка, ближайшая к (0, 1), — это best.method = "youden" и "closest.topleft". Взвешенное правило — J Юдена при best.weights = c(отношение стоимостей, распространённость), собственном способе взвешивания pROC, где по умолчанию используется c(1, 0.5). pROC возвращает все равнооптимальные строки в произвольном порядке порогов, поэтому выбирается строка, ближайшая к углу (0, 1), а при точном равенстве — первая. Собственные ppv, npv и accuracy функции coords() всегда используют выборочную распространённость и не учитывают веса, поэтому эти три показателя пересчитываются по выбранным чувствительности и специфичности при используемой распространённости, а при выборочной частоте совпадают с числами pROC. Взвешенное правило выводит оба направления асимметрии, отношение и обратную ему величину, поскольку именно два направления покрывают значения по обе стороны от 1, и поэтому вводимое значение не меньше 1. При равных стоимостях оба направления дают один и тот же порог, и выводится одна строка. Одно отношение стоимостей не имеет ясного смысла для K кривых «один против остальных», поэтому для мультиномиальной модели правило недоступно, а в порядковой применяется во всех точках отсечения с одним и тем же отношением.

Распространённость задаётся одним вектором по уровням исхода и используется тремя способами, а относительная оценка Брайера от неё не зависит. Доли в популяции вводятся для каждого уровня, и каждое семейство берёт из этого набора то, что ему нужно: биномиальная модель — долю положительного уровня, мультиномиальная кривая «один против остальных» — долю своего класса, точка отсечения порядковой модели — P(Y > k) как сумму долей выше неё (то же разбиение, по которому строится её кумулятивный балл). Поэтому ни одному из многоклассовых семейств не приходится отказываться от коррекции из-за отсутствия единой распространённости. Вектор именуется уровнями фактора и перенормируется по уровням, оставшимся в подгонке, так что доля уровня, исключённого до подгонки, из суммы выпадает. Если R не может сопоставить вектор с уровнями подгонки, остаются выборочные частоты, а примечание об основе расчёта берётся из флагов самих строк, а не из настройки, так что оно называет то, что действительно выполнено. Опорная величина относительной оценки Брайера и при заданных долях остаётся выборочной базовой частотой, поскольку сама оценка Брайера вычисляется по выборке.

Интервалы в рабочей точке строятся с повторным выбором порога на каждой бутстрэп-выборке. Порог выбирается на обучающих данных, поэтому метрики при нём — оптимистично смещённые точечные оценки, а если при бутстрэп-выборках держать наблюдаемый порог фиксированным, интервал учтёт шум метрики, но не шум выбора. На каждом из повторов бутстрэпа отрицательные и положительные случаи отдельно извлекаются заново в наблюдаемых количествах, кривая перестраивается, к ней заново применяются все правила и записываются семь метрик. Интервал — процентильный интервал по этим повторам. Одна бутстрэп-выборка обслуживает все правила, так что взвешенное правило обходится одним циклом, а не двумя. На многоклассовых карточках рабочие точки по классам и по точкам отсечения выбираются заново внутри тех же бутстрэп-выборок наблюдений, по которым оцениваются агрегированные показатели. Эти показатели остаются внутривыборочными даже при AUC по перекрёстной проверке, о чём сообщает примечание к таблице.

Интервал Делонга доступен там, где кривая бинарная, а многоклассовые агрегированные показатели используют бутстрэп наблюдений, а не псевдонаблюдений. Интервал Делонга строится для одной бинарной ROC-кривой, поэтому он доступен для биномиальной кривой и каждой точки отсечения порядковой модели и скрыт для мультиномиальной, агрегированным показателям которой нужны бутстрэп-выборки. ci.auc(method = "bootstrap") для составной микро-средней кривой извлекал бы n·K псевдонаблюдений, не учитывая корреляцию между K метками «один против остальных» одного наблюдения, и давал бы слишком узкий интервал. Поэтому микро-среднее, макро-среднее и M Хэнда — Тилла оцениваются бутстрэпом в одном цикле, где перевыбираются наблюдения и все три показателя пересчитываются на каждом повторе. Бутстрэп-выборка общая, так что три интервала описывают одни и те же повторы. Повтор, в котором потерян класс, отбрасывается целиком, поскольку multiclass.roc охватывал бы тогда K − 1 классов, а макро-среднее усреднялось бы по K − 1, то есть оценивалась бы другая величина. M Хэнда — Тилла — среднее попарных AUC из pROC::multiclass.roc. На карточке порядковой модели интервалы по точкам отсечения строятся выбранным способом, но средний AUC по точкам отсечения, D Сомерса и тау-c всегда оцениваются бутстрэпом по строкам с одновременным пересчётом всех K − 1 кривых, поскольку точки отсечения используют одни и те же строки, а бутстрэп по отдельным точкам потерял бы эту корреляцию. Примечание под таблицей сообщает, что строка среднего строится бутстрэпом независимо от выбора. Перед передачей на страницу нарисованная кривая прореживается до одной точки на 1/2000 единичного квадрата, что при любом размере графика меньше пикселя.

Строки порядковой согласованности ранжируют по ожидаемому баллу P·(1, …, K). Для D Сомерса и тау-c Кендалла нужен один ранжирующий балл на наблюдение, и линейный предиктор polr подошёл бы, но ordinalNet параметризует кумулятивную модель наоборот, так что балл, взятый у движка, менял бы знак между классической и регуляризованной подгонками. Ожидаемый порядковый балл — матрица вероятностей, умноженная на 1…K, — упорядочивает наблюдения так же, как линейный предиктор polr, и не зависит от соглашения о знаке какого-либо движка, поэтому обе подгонки дают результаты в одной шкале и одном направлении. Этот же балл используется в блоке перекрёстной проверки. D Сомерса — это Dxy: разность числа согласованных и несогласованных пар, делённая на число пар, различающихся по исходу. В этой форме выполняется D=2AUC−1, так что значение сопоставимо со строками AUC. Тау-c пересчитывает тот же избыток согласованных пар относительно меньшей стороны таблицы. Обе величины накапливаются за один проход по блокам равных баллов, а не вычисляются через cor(method = "kendall"), попарный обход которого занимает 1.3 с при n = 4000 — и так на каждом повторе бутстрэпа.

AUC по перекрёстной проверке — среднее AUC по блокам с интервалом по функции влияния, а у всех остальных строк перекрёстной проверки — точность Монте-Карло. В каждом повторении положительные и отрицательные случаи распределяются по k стратифицированным блокам, модель заново подгоняется без каждого блока и оценивается на нём, так что каждое наблюдение предсказывается один раз вне обучающих данных. Оцениваемая величина — среднее AUC по отложенным блокам, а не один AUC по объединённым баллам. Её интервал — интервал по функции влияния по Леделл, Петерсену и ван дер Лану (LeDell, Petersen & van der Laan, 2015): значение функции влияния каждого наблюдения центрируется на AUC его блока, а второй момент по выборке оценивает выборочную дисперсию среднего. К ней добавляется дисперсия оценки между повторениями, поскольку функция влияния учитывает одно разбиение на блоки, а при усреднении нескольких остаётся добавить только их разброс. Это доверительный интервал: он показывает, насколько изменился бы результат на другой выборке того же объёма. До разделения столбцов у всех строк перекрёстной проверки был t-интервал по повторениям, который легко принять за доверительный, хотя он им не является. Он описывает разброс между повторениями разбиения на блоки на одном фиксированном наборе данных, с ростом числа повторений стремится к нулю и никак не отражает выборочную изменчивость. На биномиальной модели по 300 наблюдениям он равен [0.819, 0.828] против [0.776, 0.871] по функции влияния для той же оценки. У остальных строк он остался по понятной причине: микро-среднее и M Хэнда — Тилла — функционалы, для которых функция влияния не определена, а D Сомерса, тау-c и оценка Брайера не являются AUC. Таблица держит эти две величины в отдельных столбцах, чтобы одну не принимали за другую. Блоки стратифицированы так, чтобы в каждом были оба класса, и если в каком-то уровне наблюдений меньше, чем блоков, расчёт блока останавливается с указанием причины. Разбиение на блоки — единственная случайная процедура шаблона, и зерно для каждого повторения выводится из зерна воспроизводимости, а пенализованная подгонка фиксирует собственные внутренние блоки. Число оценённых наблюдений — наименьшее по выполненным повторениям, поскольку повторение, потерявшее блок, оценило меньше наблюдений.

Чтение результатов — регуляризованная регрессия

Ковариаты не штрафуются, а все движки стандартизуют предикторы сами. Ковариата — контрольная переменная, учитываемая моделью при любом штрафе, поэтому её столбцам матрицы плана назначается коэффициент штрафа 0 (penalty.factor в glmnet и mpath, penaltyFactors в ordinalNet, группа “0” в grpreg, которую тот считает нештрафуемой), и они подгоняются при каждой λ. Карточка выводит для них Всегда включено, не приписывает им частоты отбора, а схемы устойчивости отбора и вывода после отбора никогда не считают их кандидатами. Все четыре движка стандартизуют предикторы перед подгонкой, так что штраф действует на каждый одинаково независимо от единиц измерения, а коэффициенты возвращают в исходной шкале. Поэтому таблица коэффициентов выглядит как таблица непенализованной модели, а норму в таблице групп приходится вычислять по коэффициентам, масштабированным на SD. Свободный член не штрафует ни один движок, поэтому он исключён из всех столбцов с интерпретацией.

Перекрёстная проверка использует не больше 10 и не меньше 3 блоков, для классификационных семейств — со стратификацией, а её SE считается по блокам, которые дали оценку. Число блоков равно max(3, min(10, n)), поскольку cv.glmnet выдаёт ошибку при двух блоках, а ordinalNetTune и cv.grpreg меньше не допускают. Для биномиальной, порядковой и мультиномиальной подгонки блоки формируются внутри каждой категории исхода, и их не больше, чем наблюдений в самой редкой категории: пакеты распределяют наблюдения случайно, а категория, отсутствующая в обучающей части блока, обрывает подгонку, а не просто ухудшает её. Для отрицательной биномиальной модели нет cv.glmregNB, работающего в WebR (он открывает кластер сокетов), поэтому её блоки подгоняются вручную на сетке λ полного пути и оцениваются по логарифму правдоподобия отложенных данных. Блок, подгонка которого не удалась, выпадает, и стандартная ошибка для каждой λ делится на число блоков, давших оценку, а не на число запрошенных, поскольку иначе выпавший блок уменьшил бы SE и сдвинул правило 1 SE к менее пенализованной λ. Все разбиения на блоки выполняются с зерном воспроизводимости.

Статистика соответствия — одна строка: доля объяснённого девианса под названием, принятым для семейства. Это единственная величина, которую сообщают все движки. В glmnet это dev.ratio, который для линейной модели равен R², а для исхода 0/1, номинального или порядкового (логарифм правдоподобия насыщенной модели для них равен 0) — R² Мак-Фаддена, поэтому строка подписана по семейству, а не выводит одно и то же число дважды. ordinalNet сообщает 1−ℓ/ℓ0 напрямую как devPct и нулевого девианса не даёт. Нулевой и остаточный девиансы в mpath вычисляются для каждой λ, поскольку θ оценивается заново в каждой точке. Первая точка пути grpreg содержит принудительно включённую группу ковариат без штрафа и потому не является нулевой моделью, так что нулевой девианс вычисляется заново как glm только со свободным членом, чтобы отношение было сопоставимо с glmnet.

Сжатие в гребневой регрессии сравнивается с повторной подгонкой при λ = 0, для которой нужно n > p + 1. Путь гребневой регрессии в glmnet заканчивается далеко от нуля (lambda.min.ratio масштабирует большую λ_max гребневой регрессии), так что наименьшая λ на нём не соответствует непенализованной подгонке, и опорой служит отдельная подгонка glmnet(alpha = 0, lambda = 0). Свободный член отнимает одну остаточную степень свободы, так что уже при n = p + 1 эта подгонка насыщена, и каждый процент измерялся бы относительно идеальной подгонки. При таком или меньшем n, а также если повторная подгонка не сошлась, столбец остаётся пустым, и примечание объясняет почему, — а это как раз тот режим, ради которого выбирают гребневую регрессию. Отрицательное отношение означает смену знака относительно непенализованной оценки, что при коллинеарных предикторах в гребневой регрессии действительно бывает, и оно подписывается соответственно, а не выражается процентом. Цветовые границы 90% и 50% — условные пороги для «почти не затронут» и «уменьшен вдвое».

λ выводится с четырьмя значащими цифрами. λ — настроечное значение, которое пользователь должен иметь возможность прочитать и ввести в поле ручного выбора, а formatNumber при заданной точности заменяет всё меньшее на «< 0.001» — как раз там, где пенализованный путь обычно и делает выбор. toPrecision(4) сохраняет цифры и не делает вид, что к ним применима настройка точности.

Таблица групп ранжирует по L2-норме, масштабированной на SD. Групповой штраф сжимает L2-норму стандартизованных коэффициентов группы, так что эта норма — и величина, по которой принято решение об отборе, и мера того, насколько велик эффект группы. grpreg стандартизует данные сам и возвращает коэффициенты в исходной шкале, поэтому норма вычисляется по коэффициентам, умноженным на стандартные отклонения их столбцов: исходная норма поставила бы предиктор, измеренный в миллисекундах, выше предиктора в секундах только из-за единиц. Группа, у всех столбцов которой коэффициент штрафа равен нулю, включена принудительно и кандидатом никогда не является, поэтому она не учитывается в числе Выбрано групп предикторов и частоты отбора не получает.

Строка степеней свободы показывает то, что сообщает движок, а для гребневой регрессии не выводится. df в glmnet — число ненулевых элементов β при данной λ (для мультиномиальной подгонки — число членов, ненулевых хотя бы в одном уравнении исхода, отсюда Ненулевые члены (любой исход)), а для гребневой регрессии — число предикторов при любой λ, «эффективное число параметров», которое заведомо им не является, поэтому там строка не выводится. В grpreg это число дробное и действительно эффективное, оно учитывает эффективные параметры каждой группы, поэтому только эта строка так и подписана. Кривая перекрёстной проверки показывает то же число вдоль верхнего края с той же подписью.

Многократное расщепление выборки подбирает λ заново для каждого расщепления, применяет поправку Бонферрони внутри него и объединяет результаты по правилу квантилей. Каждое из B расщеплений (от 20 до 200, по умолчанию 50) берёт половину строк (для классификационных семейств — со стратификацией по исходу) и заново выполняет на ней отбор, выбирая λ по правилу пользователя на собственной перекрёстной проверке этой половины. Число блоков при этом минимально допустимое для движков, 3, поскольку расщеплению нужно лишь выбрать λ, а грубое разбиение усредняется по B расщеплениям. Сетка для отрицательной биномиальной модели сокращена до 20 точек: 1.7 с на подгонку против 8 с на собственной сетке из 100. Отобранные члены затем подгоняются без штрафа на другой половине средствами семейства (lm, glm, MASS::glm.nb или polr, для которого p берётся из t как из нормального распределения). Расщепление, отобранная модель которого достигает размера половины для вывода, не оставляет остаточных степеней свободы и заменяется новым, до 20 раз. Расщепление, которое всё равно не удаётся подогнать, даёт p = 1 для каждого члена: так объединение идёт по всем B расщеплениям, а не по зависящему от данных подмножеству, и p-значения становятся соответственно консервативнее, о чём предупреждает примечание. Внутри расщепления исходные p-значения умножаются на размер отобранной модели, а по расщеплениям B значений каждого члена объединяются по правилу квантилей Майнсхаузена, Майера и Бюльмана (Meinshausen, Meier & Bühlmann, 2009): наименьший γ-квантиль, делённый на γ, по сетке от ⌈0.05B⌉/B до 1−1/B, умноженный на 1−log⁡γmin⁡ за перебор γ. Непенализованная оценка — отдельная подгонка по всей выборке членов, отобранных на полных данных. Она выводится, только если таких членов меньше n − 1, и не проверяется, поскольку её стандартные ошибки вычислялись бы на тех же строках, по которым отобраны члены. Процедура недоступна для гребневой регрессии, которая ничего не отбирает, и для мультиномиальной модели: glmnet подгоняет все уравнения исхода симметрично, без базовой категории, а nnet::multinom, единственный доступный непенализованный метод для номинального исхода, строит модель с базовой категорией, так что коэффициент повторной подгонки относился бы не к тому коэффициенту, что выведен рядом.

Дополняющие пары учитывают член на всей области λ, а оценку ошибки вычисляет stabs. Половины выборки по Майнсхаузену и Бюльману (Meinshausen & Bühlmann, 2010) — это B извлечений (от 10 до 500, по умолчанию 50), на каждом из которых модель подгоняется при выбранной λ на обрезанной сетке, описанной в заметке раздела «Настройка модели», и член засчитывается, если его коэффициент там ненулевой, — по тому же правилу, что и в столбце Статус. Дополняющие пары Шаха и Сэмворта (Shah & Samworth, 2013) — это половина и её дополнение (⌊n/2⌋ внутри каждого уровня при стратификации, так что при нечётной численности дополнение оказывается большей половиной), обе подгоняются заново, и член считается отобранным в половине, если он ненулевой хотя бы в одной точке пути вплоть до выбранной λ. Причина в том, что оценка сформулирована для объединения по этой области, и именно ожидаемый размер объединения её определяет. Пара, у которой не подогналась хотя бы одна половина, отбрасывается целиком, поскольку оценка определена для полных пар. Единица отбора зависит от штрафа: группа (без принудительно включённых групп) при групповом LASSO, член одного уравнения исхода в мультиномиальной модели, столбец матрицы плана в остальных случаях. Оценка — это stabs::stabsel_parameters(p, cutoff = π, q = q̂, B = pairs, sampling.type = "SS")$PFER при assumption = "none" для строки без допущений и "r-concave" для более точной, причём π ограничено диапазоном от 0.55 до 0.99. Оценка не выводится (с указанием причины), если кандидатов меньше двух или средняя половина отбирает их всех, если π не больше q̂ ⁄ p (тогда член преодолевает порог случайно, и выводится наименьшее π, при котором оценка возможна) или если stabs не удалось загрузить. Только r-вогнутая строка может оказаться неопределённой при пороге и размере множества, которые пакет отклоняет.

Траектории коэффициентов не строятся для мультиномиальной модели, а для гребневой регрессии подпись сообщает, что члены не входят в модель и не выходят из неё. Кривой перекрёстной проверки нужны только оценки для каждой λ, которые даёт любой движок. Траекториям нужна одна матрица коэффициентов вдоль пути, а у мультиномиальной подгонки по матрице на каждый уровень исхода, так что единой траектории нет. Эластичная сеть с α = 0 — это гребневая регрессия, и ни одна из них не обращает коэффициент точно в нуль, поэтому подпись к их траекториям сообщает, что члены не входят в модель и не выходят из неё, а не предлагает судить о порядке входа.

Сравнение моделей

Диапазон перебора проверяется по наименьшему кандидату, а не по наибольшему. Минимум больше максимума или больше числа выбранных предикторов не оставляет ничего для перебора, и карточка сообщила бы о сравнении нуля моделей, а эффективное число моделей 1/∑w2, вычисленное по пустому вектору, оказалось бы просто бесконечностью. Поэтому такой диапазон отклоняется ещё до передачи в R. Проверка числа параметров та же, что и для одиночной модели, но применяется к наименьшему кандидату, которого допускает диапазон: свободный член, ковариаты, главные эффекты модераторов и минимальное число самых «дешёвых» предикторов, посчитанные по семейству так же, как число параметров. Этот постоянный блок есть в каждом кандидате, поэтому если уже он один исчерпывает полные наблюдения, в диапазоне ничего подогнать нельзя, и вместо рейтинга карточка выдала бы множество сообщений об ошибках отдельных моделей. Полная модель вполне может быть насыщенной, когда меньшие кандидаты информативны, а насыщенный кандидат и так получает собственное сообщение о сингулярности. По тому же принципу отклоняется постоянный предиктор: из-за него не подогнался бы ни один содержащий его кандидат, перебор незаметно сократился бы вдвое, а список неподогнанных моделей заполнился бы сотнями записей вместо одного сообщения.

Ранжирование идёт по AICc, k — полное число параметров, а кандидат с избытком параметров получает ∞, а не урезанный знаменатель. Рейтинг, разности и веса Акаике строятся по одному критерию, и это AICc: с ростом выборки он сходится к AIC, а на малой выборке учитывает ту часть цены параметра, которую AIC упускает. k — это attr(logLik(), "df"), включая дисперсию линейной или отрицательной биномиальной модели и пороги порядковой, а не длина вектора коэффициентов, поскольку поправка определена для всех оцениваемых параметров. При n − k − 1 ≤ 0 поправка не имеет конечного значения, а урезанный знаменатель дал бы конечный и слишком хороший AICc именно тому кандидату, которого выборка не выдерживает. Поэтому такой кандидат получает ∞, оказывается в конце списка и получает нулевой вес. Если уже постоянные члены исчерпывают степени свободы, ∞ получают все кандидаты, и ∞ − ∞ превратило бы все веса в NaN. Тогда рейтинг, разности и веса строятся по AIC без поправки, о чём сообщает карточка. Кандидат, у которого не конечен сам AIC (идеальное соответствие данным при n ≤ k), вообще не может быть ранжирован и попадает в список неподогнанных моделей.

Неопределённость выбора выводится вместе с её максимумом и не выводится для единственного кандидата. У величины −∑wlog⁡w нет собственной шкалы: её максимум — логарифм числа кандидатов, и он достигается, когда у всех одинаковый вес. Поэтому карточка выводит оба числа рядом. Эффективное число моделей 1/∑w2 выражает ту же неопределённость в числе моделей. Единственный кандидат обращает обе величины в нуль, и такая пара выглядела бы как ошибка, а не как полная определённость, поэтому они выводятся только при числе кандидатов больше одного. Обе величины, как и веса, вычисляются по сохранённому набору.

Большие переборы после 2000 кандидатов сохраняют только модели с Δ ≤ 20 по каждому критерию, по которому ранжирует карточка. Если хранить каждую подогнанную модель, большой перебор исчерпывает память WASM раньше, чем закончится. Поэтому начиная с 2000 кандидатов (или с максимального числа отображаемых моделей, если оно больше) кандидат сохраняется, только если отстоит от текущего лучшего не больше чем на 20 единиц информационного критерия. По Бёрнему и Андерсону модель, отстоящая от лучшей больше чем на 10 единиц, практически не имеет поддержки. Здесь порог вдвое больше, и модель, отстающая на 20 единиц, получает меньше e⁻¹⁰ веса лучшей модели, так что сохранённый набор не меняет ни одной выводимой величины с выводимой точностью. Проверка выполняется по AICc, AIC и BIC одновременно, так что модель, безнадёжная по одному критерию, но конкурентоспособная по другому, сохраняется. Текущий минимум может только уменьшаться, поэтому кандидат, укладывающийся в порог относительно итогового лучшего, укладывается в него и относительно каждого промежуточного, и отсечение по текущему минимуму не отбрасывает ничего, что сохранил бы полный расчёт. Новый лучший кандидат вызывает повторную проверку всех сохранённых, а минимальное число важнее порога: если порог проходят слишком немногие, остальные места занимают лучшие из оставшихся. Число моделей и знаков по каждому предиктору накапливается по ходу цикла, так что и после отсечения описывает весь перебор, а веса, усреднение, доверительное множество и два показателя неопределённости вычисляются по сохранённому набору. Если эти числа расходятся (а это бывает как раз тогда, когда порог сработал), карточка называет оба. Ниже минимального числа ничего не отбрасывается, так что перебор, достаточно малый для полного вывода, выглядит так же, как до введения порога.

Стандартные ошибки усреднённых коэффициентов вычисляются по Бакленду, а отсутствие члена входит в них как вес, умноженный на оценку. Полное среднее сохраняет нуль каждого кандидата без этого члена и не перенормирует веса, так что оно равно взвешенной сумме по моделям, где член есть. Условное среднее делит эту сумму на важность члена. Стандартная ошибка вычисляется по Бакленду, Бёрнему и Огастину (Buckland, Burnham & Augustin, 1997): ∑wSE2+(estimate−average)2 по моделям, содержащим член, где разброс между моделями входит под корень для каждой модели. Поэтому сначала вычисляется среднее, а затем, вторым проходом, ошибка. Для полного среднего модели без члена дают оценку 0 с нулевой дисперсией, а поскольку веса по всему набору в сумме равны единице, их общая масса равна 1 − важность, и они добавляют к ошибке (1 − важность) × |среднее|. Условная ошибка — та же сумма, делённая на важность. Интервалы строятся по нормальному распределению с этими ошибками на заданном уровне. Усреднение, как и положено, выполняется в шкале связи, а экспоненцированные столбцы применяют exp() к усреднённой оценке и её границам только для вывода. У константы условного среднего нет, поскольку она есть в каждом кандидате.

Важность сравнивается с априорной долей включения, а её градации описательные. У суммы весов Акаике нет фиксированной точки «нет эффекта»: предиктор, который при заданном диапазоне перебора входит в каждого кандидата, получает ровно 1.0 при любых данных, а в обычном полном переборе подмножеств каждый предиктор ещё до подгонки какой-либо модели начинает с 0.5. Эту базовую линию и задаёт доля кандидатов, содержащих предиктор (число его моделей, делённое на число подогнанных). Поэтому интерпретация использует превышение над ней, отнесённое к остающемуся запасу, (importance−share)/(1−share), а предиктор, входящий во всех кандидатов или ни в одного, помечается как неразличимый, а не как очень высокий или очень низкий. Пороги 0.9, 0.7, 0.5 и 0.3 от запаса — описательные градации, за которыми не стоит опубликованный критерий, и карточка об этом сообщает. Число знаков учитывает только собственные столбцы предиктора (его главный эффект и фиктивные столбцы, причём категориальный предиктор считается положительным, если положителен любой его уровень), поскольку столбец взаимодействия содержит другую величину, которую отдельно учитывает таблица взаимодействий. Оба числа знаков и число моделей накапливаются по всем подогнанным кандидатам, а сама важность суммируется по сохранённому набору, так что первые описывают весь перебор, а вторая — его конкурентоспособную часть.

Сравнение AUC — парный критерий Делонга относительно модели, первой по AICc, с поправкой на M − 1 сравнений по отображаемым моделям. Для каждого отображаемого биномиального кандидата кривая восстанавливается по сохранённым предсказанным вероятностям, получает интервал, выбранный в разделе ROC, и сравнивается с кривой лучшей по рейтингу модели функцией pROC::roc.test(paired = TRUE) на тех же наблюдениях: критерием Делонга при интервале Делонга и бутстрэп-критерием при бутстрэп-интервале. Бутстрэп для каждой модели получает собственное зерно, так что интервал не зависит от того, сколько моделей стоит в рейтинге выше. Эталон — модель, первая по AICc, а не модель с наибольшим AUC, поскольку столбец отвечает на вопрос, различает ли какой-то другой кандидат исходы иначе, чем модель, выбранная по критерию. Этот выбор сделан на тех же данных, поэтому сравнение выполняется после отбора, и его p-значения разведочные, о чём сообщает примечание под таблицей. Исходные p-значения корректируются общим методом поправки по M − 1 сравнениям, показанным на карточке, причём максимальное число отображаемых моделей ограничивает и восстанавливаемые кривые, и вычисляемые интервалы, и семейство сравнений для поправки.

Медиация внутри перебора оценивается по Барону и Кенни с критерием Собела, усредняется и проверяется один раз. Бутстрэп для каждого кандидата умножил бы стоимость перебора на число повторов, поэтому пути каждого кандидата берутся из подмоделей. Путь a — линейная регрессия медиатора на предикторы кандидата, ковариаты и главные эффекты модераторов. Пути b и c′ — собственное уравнение кандидата (вместе с взаимодействиями, так что пути относятся к ранжированной модели) с добавленным медиатором. Косвенный эффект равен a × b со стандартной ошибкой Собела a2SE(b)2+b2SE(a)2 и усредняется по кандидатам точно так же, как коэффициент, где ошибка Собела заменяет ошибку коэффициента. Критерий в таблице — отношение полного среднего к его безусловной ошибке, рассматриваемое как нормальное отклонение. Наименьшее p-значение по набору кандидатов было бы отобранным экстремумом, оптимистичным по построению и без возможности поправки, поэтому выводится один критерий на путь, а не на модель. Нормальное приближение слишком либерально на малых выборках и при асимметричном распределении произведения, поэтому примечание на карточке советует для подтверждающего анализа выполнить отдельный анализ медиации с бутстрэп-интервалом.

Список неподогнанных моделей ограничен 100 записями, а в заголовке указано полное число. Систематически вырожденная матрица плана не даёт подогнать ни одного кандидата, и в большом переборе это сотни тысяч записей. Число уже указано в заголовке раскрывающегося блока, поэтому список обрывается на 100 записях строкой «… и ещё N». Для кандидата указывается ошибка R, остановившая подгонку, или неоцениваемые члены, которые R отбросил, если коэффициенты вернулись как NA (такой кандидат исключается, а не ранжируется по неполному вектору коэффициентов), или неконечный AIC, если ранжировать кандидата было не по чему.

Анализ путей (продвинутый режим)

Раскрытие формулы ограничено 256 членами. (a + b + … + t)^20 — допустимая формула, которая раскрывается примерно в миллион членов, а редактор разбирает текст заново при каждом нажатии клавиши с удалением дубликатов, квадратичным по числу членов, так что неограниченное раскрытие подвесило бы вкладку прежде, чем нажатие удалось бы отменить. Функции раскрытия прекращают работу после 256 членов, и редактор выводит сообщение. Этот предел намного выше любой модели, которую кто-либо подгоняет сознательно.

Число косвенных путей ограничено 100, а перебор — 20 000 посещений. Число простых путей к исходу растёт комбинаторно с плотностью связей в модели, и каждый путь стоит цикла бутстрэпа в R и строки в таблице разложения, а таблица становится нечитаемой задолго до того, как расчёт перестаёт быть выполнимым. После 100 путей обход в глубину останавливается, и запуск отклоняется с указанием числа. Ветвь, которая обрывается, не дойдя до исхода, пути не даёт, так что одно лишь ограничение числа путей позволило бы обходу перебрать экспоненциально много таких ветвей (узел, доступный только через член взаимодействия, поглощает каждую ведущую к нему ветвь). Поэтому ограничено и число посещений, причём намного выше того, во что обходится модель на пределе числа путей. Так прерывается только заведомо безнадёжная модель, и сообщение называет плотность связей, а не число путей, которое прерванный обход не мог бы найти.

Каждое уравнение подгоняется отдельно, но на одном наборе полных наблюдений системы. Наблюдения берутся полные по всем переменным системы, включая ковариаты, и каждое уравнение подгоняется именно на этом наборе. Коэффициенты, перемножаемые вдоль пути, сопоставимы, только если уравнения, из которых они взяты, получены на одних и тех же строках, а N для каждого уравнения скрыло бы, что цепочка проходит через несколько уравнений. Циклы редактор не допускает, так что нарисованная модель всегда рекурсивна, а для рекурсивной модели метод наименьших квадратов и максимальное правдоподобие по отдельным уравнениям дают состоятельные оценки. Совместное оценивание даёт эффективность и общий критерий соответствия, но не корректность, поэтому карточка не приближает одновременное оценивание, а отсылает к модулю SEM. Двухуровневый медиатор подгоняется бинарной логистической регрессией, а не отклоняется, поскольку у фактора с двумя уровнями один контраст и его уравнение — корректная ОЛМ. Медиатор с большим числом уровней попал бы в регрессию своими целочисленными кодами, поэтому он отклоняется по имени.

Переменные, следующие за воздействием, исключаются из модели исхода для пути, а недостающие воздействие или модератор добавляются в неё. Прямой и косвенный эффекты в анализе медиации основаны на сравнении сопоставимого: одних и тех же единиц с влиянием медиатора и без него. Если уравнение исхода фиксирует ещё одну переменную, на которую влияет воздействие, часть его эффекта блокируется до измерения, и разделение на прямой и косвенный эффекты перестаёт означать то, что обещают их названия. И mediate(), и анализ чувствительности используют нарисованное уравнение исхода как модель исхода, поэтому любой другой медиатор в нём, являющийся потомком воздействия данного пути, исключается из модели этого пути вместе со всеми содержащими его взаимодействиями. Это делается только для данного пути, поскольку у воздействия другого пути другие потомки. Воздействие добавляется, если в нарисованной модели нет прямой связи от него к исходу, поскольку каузальная медиация определена для модели исхода, которая его содержит. Модератор связи, ведущей в медиатор, добавляется как главный эффект, если его нет в уравнении исхода, поскольку mediate() фиксирует модератор через данные модели исхода, и модератор вне её зафиксировать невозможно. Каждое такое отличие даёт модель, которой нет в таблице коэффициентов исхода на карточке, поэтому собственная модель пути выводится под ней, а несколько путей на одной карточке относятся к нескольким моделям. Бутстрэп произведения берёт коэффициент b из нарисованного уравнения как есть, поэтому кривая чувствительности для пути-произведения вычисляется по этой модели, и список исключений анализу не передаётся: кривая по другой модели не относилась бы к этому b.

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

Категориальный узел с несколькими уровнями на пути выводится как невычисленный. Категориальный узел входит в матрицу плана фиктивными столбцами, так что его имя само по себе никогда не является именем коэффициента. У узла с двумя уровнями одна фиктивная переменная — единственный однозначный контраст, и он перемножается вдоль пути. У трёх и более уровней единого коэффициента для перемножения нет, и произведение было бы произвольным выбором одного из них. Путь выводится с причиной, а не отбрасывается, поскольку отсутствующий путь выглядит как отсутствие эффекта, и в общий эффект своего источника он ничего не добавляет. Общий эффект выводится только для источника хотя бы с одним пригодным косвенным путём, поскольку иначе он повторял бы прямой эффект. Прямой эффект категориального источника и его пути хранятся под разными ключами (по имени коэффициента и по имени узла) и объединяются через это соответствие, чтобы один предиктор не распадался на две строки, каждая с половиной его общего эффекта.

Прямой, косвенный и общий эффекты получаются из одного бутстрэпа, первая строка которого — наблюдаемая выборка. На каждой бутстрэп-выборке заново подгоняется вся система и пересчитываются все произведения, прямые коэффициенты и условные эффекты. Поэтому общий эффект (прямой коэффициент источника плюс все косвенные пути от него) собирается повтор за повтором из двух матриц хранения, а не из отдельно полученных бутстрэпом частей: его интервал строится по тем же повторам, что и интервалы частей, а повтор, потерявший одну часть, теряет и общий эффект. Первая строка каждой матрицы хранения — наблюдаемая выборка, относительно которой центрируется коррекция смещения. Интервал — тот же, что на вкладке Простой, с коррекцией смещения. Он вычисляется только при более чем десяти выполненных повторах, а иначе не выводится с указанием причины. Примечание о полноте для таблицы определяется её самой разреженной строкой, поскольку оно относится ко всем интервалам таблицы. Прямой эффект есть у каждого коэффициента уравнения исхода, кроме взаимодействий, включая медиаторы: у эндогенного узла такой же прямой эффект на исход, как у экзогенного, и его общий эффект верен, только если учтены обе половины. Стандартизованный эффект получается умножением на SD(источник) ⁄ SD(исход), где у категориального контраста множитель 1, а SD промежуточных медиаторов вдоль пути сокращаются. Сноска о модерируемой связи нужна потому, что безусловное произведение через модерируемую связь — это эффект при нулевом значении модератора, а эта точка обычно лежит вне диапазона нецентрированного модератора. Так же понимается и прямой коэффициент, входящий во взаимодействие.

Парное взаимодействие в уравнении исхода рассматривается в обе стороны, а взаимодействия более высоких порядков не оцениваются. Конструктор не назначает ролей, поэтому по нарисованному Y ~ X*W нельзя понять, какая переменная модерирует какую. Простые наклоны вычисляются по нарисованному уравнению исхода симметрично (X при уровнях W и W при уровнях X), и выводятся оба варианта, поскольку какая переменная служит модератором, знает исследователь, а не модель. Условные косвенные эффекты вычисляются по коэффициентам парных взаимодействий, поэтому взаимодействие третьего или более высокого порядка на связи перечисляется и исключается из выводимых значений, а не оценивается при произвольных значениях остальных факторов. Условный эффект при категориальном модераторе получается сменой базового уровня и повторной подгонкой затронутых уравнений на каждой бутстрэп-выборке, а бутстрэп-выборка, в которую не попал редкий уровень, пропускается для этой точки, не прерывая цикл.

R² при удалённом свободном члене вычисляется относительно начала координат. При удалении свободного члена summary.lm переходит к определению R² относительно нуля, так что уравнение, записанное с - 1 или + 0, даёт число, обычно завышенное и несопоставимое с R² уравнения со свободным членом. Карточка не скрывает эту строку, а сопровождает статистики соответствия такого уравнения примечанием.

C Фишера вычисляется по базисному множеству нарисованного ориентированного ациклического графа без пар экзогенных переменных и не выводится, если какое-то утверждение проверить нельзя. Базисное множество по Шипли (Shipley, 2000) содержит по утверждению на каждую пару переменных, не соединённых в модели связью, при условии родителей обеих переменных. Откликом пары считается переменная, стоящая позже в послойном топологическом порядке, так что утверждение проверяется уравнением, которое в модели есть: в модель отклика на обусловливающее множество добавляется вторая переменная пары. Если это уравнение гауссовское, используется точный F-критерий, для логистического медиатора или собственного семейства исхода — χ² отношения правдоподобия, так что многоуровневый предиктор проверяется целиком, а не по отдельным контрастам. При совместной нулевой гипотезе статистика C=−2∑ln⁡p распределена как χ² с удвоенным числом утверждений степеней свободы. Если p в точности равно нулю, C обратилась бы в бесконечность, поэтому вместо нуля подставляется наименьшее положительное число двойной точности: C остаётся конечной и всё равно намного превышает любое критическое значение. Пары экзогенных переменных исключаются и подсчитываются. Конструктор рисует только направленные связи, так что пользователь, считающий, что две необъясняемые моделью переменные ковариируют, не может этого выразить, а утверждение, от которого нельзя отказаться, модель на самом деле не делает. Поэтому C проверяет только перечисленные утверждения и ничего больше. Если уравнение какого-то утверждения не подгоняется или добавленная переменная не даёт оцениваемого члена (предиктор, линейно зависимый от обусловливающего множества, не добавляет параметров, а pchisq при нуле степеней свободы возвращает p = 0, то есть отвержение по критерию, который не выполнялся), C не выводится вовсе, а не пересчитывается с меньшим числом степеней свободы, поскольку статистика определена по всему базисному множеству. Насыщенная модель не даёт ни одного утверждения, поэтому раздел сообщает об этом вместо пустой таблицы и не приводит ссылок, поскольку критерий не выполнялся. Интерпретация C и ячейки каждого утверждения используют уровень значимости для проверки допущений, как и другие проверки модели: нулевая гипотеза здесь — сама модель, так что снижение основного уровня ослабило бы проверку.

Пропущенные данные

Один набор полных наблюдений используется для всей карточки. Перед первой подгонкой расчёт отбрасывает в R каждую строку с пропуском в любой из вошедших переменных (исходе, предикторах, ковариатах, модераторах и медиаторах, хотя основная формула медиаторы не использует) при любой настройке пропущенных данных. Иначе каждый блок использовал бы свои полные наблюдения, и таблица коэффициентов, таблицы медиации, диагностика и блок ROC описывали бы разные выборки под одним N. Платой за это становятся строки, которые могла бы использовать одна основная модель, и карточка называет их рядом с N как отброшенные неполные строки.