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

Анализ надёжности — методические заметки

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

Обратные пункты

Пункты переворачиваются относительно заданного диапазона, а пустая граница берётся из диапазона, наблюдаемого по всей шкале. Перевёрнутый пункт получает значение «наименьшее + наибольшее − старое». Если пользователь указал обе границы в группе Диапазон шкалы ответов, используются они. Пустая граница заменяется крайним значением, наблюдаемым по всем выбранным пунктам, а не по самому пункту. Если бы каждый пункт переворачивался относительно собственного наблюдаемого диапазона, пункты с разным распределением ответов оказались бы на разных шкалах: пункт, которому никто не поставил 1, отразился бы относительно 2–5 и сдвинулся бы на балл относительно остальных, а сдвиг выглядел бы как ложное различие средних по пунктам. Общий диапазон сохраняет сопоставимость пунктов с одним форматом ответа, когда границы не заданы. И всё же границы лучше задавать явно: общий диапазон тоже может оказаться уже диапазона опросника, если крайним значением никто не воспользовался ни в одном пункте.

Пункты, направленные против шкалы, показываются пользователю и никогда не переворачиваются автоматически. psych::alpha() по умолчанию работает с check.keys = TRUE и без предупреждения переворачивает любой пункт, отрицательно коррелирующий с суммой. Модуль передаёт check.keys = FALSE во все вызовы psych и вместо автоматического переворота запускает обнаружение направления на подсчитанных данных, уже после применения списка обратных пунктов. Пункт, который и тогда оказывается направленным против остальных, называется в примечании под таблицей метрик, а в его строке появляется действие Отметить этот пункт как обратный. Автоматический переворот спрятал бы самую частую ошибку подсчёта (неотмеченный обратный пункт) за правдоподобной альфой. Примечание оставляет решение пользователю, а действие делает его простым. Обнаружение используется вместо простой корреляции с остатком потому, что на сбалансированной шкале, где пунктов каждого направления поровну, их вклады в исходную сумму взаимно гасятся, и корреляции с остатком указывают на пункты почти случайно.

Обнаружение — правило модуля IRT, применяемое к каждой шкале отдельно. Кнопка Обнаружить на панели выбора и описанное выше примечание используют ту же процедуру, что и модуль IRT: старт по первой главной компоненте, переворот пунктов, пока на пересчитанной сумме не останется отрицательных корреляций с остатком, полоса 2/√n для неклассифицируемых пунктов и сохранение направления большинства. Обоснование, проверка и ограничение, связанное со склонностью к согласию, изложены в методических заметках IRT. Если шкал несколько, каждая проверяется по своим пунктам, поскольку направление пункта определяется относительно той шкалы, в которой он рассматривается. Пункт, направление которого в двух шкалах получилось разным, нельзя отметить один раз для обеих (переворот действует во всех шкалах, куда входит пункт), поэтому он остаётся неотмеченным, а его название выводится рядом с кнопкой.

Проверка. На шести пунктах удовлетворённости кафе, где медленно не перевёрнут, Обнаружить выбирает медленно, и альфа с этой отметкой, 0.70286, совпадает с расчётом на данных, где медленно перевёрнут заранее. Примечание называет медленно, только пока пункт не отмечен.

Пункты без дисперсии исключаются до подгонки. Методы оценивания psych завершаются ошибкой на постоянном столбце («missing values (NAs) in the correlation matrix»), и один такой пункт лишил бы расчёт всех коэффициентов. Модуль исключает каждый пункт, у которого после переворота и построчного удаления остаётся меньше двух различных непропущенных значений, указывает его в сведениях о шкале как исключённый из-за отсутствия дисперсии и продолжает расчёт по остальным пунктам. Шкала, в которой осталось меньше двух пунктов, пропускается, и её название выводится.

Метрики надёжности

Интервал для альфы — F-интервал Фельдта, для остальных коэффициентов — бутстрэп. Фельдт (Feldt, 1965) показал, что при сложной симметрии выборочное распределение α — это преобразованное F-распределение с n − 1 и (n − 1)(k − 1) степенями свободы, поэтому интервал равен 1−(1−α)F при двух хвостовых квантилях F и вычисляется по полным наблюдениям. Интервал точен при тау-эквивалентности, а в остальных случаях приближён. Он вычисляется мгновенно и, в отличие от симметричного интервала α±z⋅SE, не выходит за 1. Стандартизованная альфа получает интервал той же формы, поскольку при сложной симметрии исходная и стандартизованная α совпадают. Пригодного интервала в замкнутой форме нет ни у одного из остальных коэффициентов, поэтому для них используется общий бутстрэп.

Бутстрэп-интервал — процентильный с коррекцией смещения, без ускорения. Коэффициенты надёжности ограничены сверху единицей, а их выборочные распределения скошены влево, и именно в таких условиях простой процентильный интервал даёт заниженное покрытие. Коррекция смещения (BC) сдвигает квантили на величину расхождения между точечной оценкой и медианой бутстрэп-оценок. Ускорение (BCa) не используется: для него понадобился бы джекнайф, то есть ещё n переподгонок на каждый коэффициент. В каждом повторе наблюдения извлекаются с возвращением, и каждый из четырёх методов оценивания подгоняется заново один раз. Все выбранные коэффициенты берутся из этих подгонок, поэтому добавленный коэффициент почти не удлиняет расчёт. Число повторов задаёт настройка повторов бутстрэпа, а последовательность случайных чисел — зерно бутстрэпа. Если значение получено меньше чем в половине повторов, интервал остаётся пустым: у коэффициента, не вычисляемого на большинстве бутстрэп-выборок, интервал выводить бессмысленно. omega() и glb.fa() подгоняются заново в каждом повторе, поэтому на шкалах с большим числом пунктов интервалы при выбранных ω и GLB вычисляются медленно.

Омега вычисляется по бифакторному решению, число факторов в котором зависит от числа пунктов. psych::omega() вызывается с nfactors = max(1, min(3, k ÷ 3)), то есть с одним групповым фактором на три пункта, но не больше трёх, с извлечением методом максимального правдоподобия и с flip = FALSE, чтобы сохранилось направление пунктов, заданное модулем. При числе пунктов меньше шести бифакторная модель не идентифицируется, и вызов сводится к конгенерическому однофакторному решению: полная ω выводится, иерархическая не определена, и примечание под таблицей об этом сообщает. То же число факторов используется в таблице удаления и в каждом бутстрэп-повторе, поэтому все ω на карточке получены одним методом, а столбец «при удалении» сравнивает сопоставимые величины.

Среднее по разбиениям пополам — коэффициент Рулона — Фланагана, усреднённый по 10 000 случайных разбиений. psych::splitHalf() вычисляет для каждого разбиения 1−var⁡(difference of halves)/var⁡(total), а не корреляцию половин, повышенную по формуле Спирмена — Брауна, и переходит к случайным разбиениям, когда перебрать все становится непрактично (начиная с 17 пунктов). Параметр n.sample закреплён на принятом в psych значении по умолчанию, 10 000, чтобы точечная оценка, таблица удаления и бутстрэп-повторы опирались на одинаковое число разбиений. Сами разбиения извлекаются при зерне приложения, так что расчёт с заданным зерном воспроизводится. При чётном числе пунктов среднее по всем разбиениям алгебраически тождественно стандартизованной альфе: усреднение коэффициента Рулона — Фланагана по всем разбиениям — то же вычисление, выполненное другим путём. Поэтому выбрать оба коэффициента — значит проверить согласованность расчёта, а не получить независимое свидетельство.

λ2 и λ4 берутся из подгонки расщепления, λ6 — из alpha(). splitHalf() возвращает λ2 Гуттмана как lambda2, а наибольший коэффициент расщепления, то есть λ4, — как maxrb. Та же функция возвращает β Ревелла как minrb. λ6 — это G6(smc) из alpha(), вариант, вычисляемый через квадраты множественных корреляций. Таким образом, три лямбды зависят от двух разных методов оценивания, и если один из них откажет, лямбда другого сохранится.

Составная надёжность и AVE вычисляются по однофакторной модели максимального правдоподобия. Стандартизованные нагрузки даёт psych::fa(nfactors = 1, fm = "ml", rotate = "none"). CR равна (∑λi)2(∑λi)2+∑(1−λi2), а AVE — среднему квадрату нагрузки. На одномерной шкале CR совпадает с ω Мак-Дональда до третьего знака, потому что это один и тот же коэффициент в двух параметризациях. Модуль выводит оба, поскольку в литературе по конфирматорному факторному анализу CR требуют под этим названием.

Проверка. На пунктах кафе о еде CR и ω обе равны 0.718.

Для коэффициента H общности ограничиваются значением меньше 1. В формуле Хэнкока и Мюллера (Hancock and Mueller, 2001) H=(1+(∑hi/(1−hi))−1)−1 общность каждого пункта hi входит в знаменатель 1−hi, который обращается в нуль в случае Хейвуда (нагрузка 1 и выше). Поэтому перед суммированием общности ограничиваются сверху значением 0.9999, и пункт Хейвуда даёт вместо ошибки конечное значение H, близкое к 1, а нагрузки на карточке показывают, откуда оно взялось.

GLB при неудаче даёт NA, а не ошибку. psych::glb.fa() итеративно подбирает факторное решение и сходится не всегда. Чаще всего это случается на очень коротких шкалах: после удаления пункта из шкалы в три пункта остаются два, и на них подгонка обычно не удаётся. Вызов обёрнут так, что неудача записывается как пропущенное значение. Строка остаётся на карточке с Нет сходимости вместо числа, а в столбце «при удалении» пустеет одна ячейка, тогда как столбец целиком сохраняется.

Каждый из четырёх методов оценивания отказывает независимо от остальных. Коэффициенты получаются из четырёх отдельных подгонок (alpha(), fa(), splitHalf() и omega()), и каждая обёрнута так, что при ошибке записывается ключ метода, а результат не возвращается. Значение коэффициента выводится, только если удалась подгонка его метода. Коэффициенты отказавшего метода сохраняют свои строки с Нет сходимости вместо значения, а примечание под таблицей называет метод и перечисляет потерянное (альфа: α, λ6 и корреляции пункт–сумма; факторный анализ: CR, AVE и H; расщепление: среднее по разбиениям, λ2, λ4 и β; омега: ω). Так ни один коэффициент не пропадает без предупреждения, а коэффициенты, не зависящие от отказавшего метода, выводятся как обычно.

λ4, GLB, β и иерархическая ω не получают оценки достаточности. Пороги 0.50 ⁄ 0.60 ⁄ 0.70 ⁄ 0.80 ⁄ 0.90 в столбце Интерпретация выведены для α и ω как оценок надёжности. λ4 и GLB — границы надёжности (лучшее разбиение и наибольшее значение, совместимое с ковариационной матрицей), и на малых выборках с большим числом пунктов обе завышаются за счёт случайности. β и ω_h измеряют насыщенность общим фактором, то есть другую величину. По тем же порогам граница могла бы получить оценку «Отличная», а индекс насыщенности — «Плохая», причём по причинам, не имеющим отношения к шкале. Поэтому вместо оценки выводится длинное тире, а примечание под таблицей называет эти коэффициенты и объясняет причину.

AVE оценивается по собственным порогам, и низкое значение не выносится в предупреждение. AVE показывает, объясняет ли фактор в среднем больше половины дисперсии каждого пункта, поэтому её пороги взяты из оценки конвергентной валидности (слабая ниже 0.50, приемлемая от 0.50 до 0.70, хорошая от 0.70), а не надёжности. Порог 0.50 строгий: у хорошо зарекомендовавших себя шкал обычны значения от 0.30 до 0.45, поскольку психологические конструкты широки и ни один фактор не объясняет большую часть дисперсии каждого пункта. Если α и ω достаточно высоки, низкая AVE означает широкий конструкт, а не плохую шкалу, поэтому карточка не выделяет её ничем, кроме оценки в столбце. Полный вес порог приобретает, лишь когда речь идёт о дискриминантной валидности.

Параметры вывода

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

Столбцы пункт–сумма — это raw.r, r.drop и r.cor из psych. raw.r — корреляция пункта с суммой, в которую он входит сам. r.drop — корреляция с суммой остальных пунктов, то есть классическая скорректированная корреляция пункт–сумма, для которой и определены пороги дискриминативности 0.20 ⁄ 0.30 ⁄ 0.50, поэтому столбец Интерпретация опирается только на неё. r.cor дополнительно скорректирована с учётом ненадёжности остальной части шкалы и систематически выше: она полезна как оценка корреляции пункта с конструктом, но не как индекс дискриминативности и теряет смысл, если надёжность шкалы близка к нулю или отрицательна. psych вычисляет её как сумму по столбцу пункта, делённую на квадратный корень из общей дисперсии шкалы (корреляционной матрицы с квадратами множественных корреляций на диагонали). Поэтому при неверно направленном пункте общая дисперсия в знаменателе падает до нуля и ниже. На этом знаменателе построено каждое значение столбца, а не только выходящие за ±1. Если хотя бы одно значение не определено или выходит за ±1, модуль скрывает весь столбец и сообщает об этом в примечании под таблицей, а не очищает и не обрезает отдельные ячейки, которые выглядели бы правдоподобно.

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

Таблице удаления нужно не меньше трёх пунктов. Если удалить пункт из шкалы в два пункта, останется один, а для одного пункта ни один коэффициент внутренней согласованности не определён. Поэтому при числе пунктов меньше трёх Надёжность при удалении пункта не вычисляется, и примечание объясняет почему.

Отметки эффектов пола и потолка ставятся, когда на крайнем значении больше 15% ответов. Вслед за Терве и др. (Terwee et al., 2007) у пункта отмечается возможный эффект пола или потолка, если больше 15% ответов на него приходится на наблюдаемый минимум или максимум. Доля считается по непропущенным ответам каждого пункта и относительно его собственных наблюдаемых крайних значений, так что пункт со шкалой 1–5, на который никто не ответил 1, оценивается относительно 2 и 5.

Отметка низкой дисперсии ставится, когда отношение SD к диапазону меньше 0.10. Пункт, стандартное отклонение которого меньше десятой части его наблюдаемого диапазона, почти постоянен (на пятибалльном пункте это SD ниже 0.4) и не может различать респондентов. Отметка служит предупреждением, поскольку такой пункт вдобавок занижает все коэффициенты своими малыми ковариациями.

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

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

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