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

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

Прежде чем мы начнём, два важных нюанса:

  • В этом параграфе мы дадим теорию, все вычисления будут в Python в следующем параграфе.
  • Это один из самых сложных параграфов учебника. Но вы справитесь!

Размерность данных

Мы можем фиксировать характеристики наблюдений большим или меньшим числом переменных. Каждая переменная хранит в себе один тип информации и определенный смысл. Число переменных можно понимать как размерность данных.

🔍 Размерность данных — степень величины информации, которая зависит от количества переменных. Чем больше информации о наблюдаемом явлении мы имеем, тем больше размерность этих данных.

Управлять размерностью можно как на этапе сбора данных, так и проведения исследования.

На этапе сбора:

  • Добавление новых переменных. Это приводит к увеличению размерности и нужно, если нам не хватает данных, чтобы ответить на исследовательские вопросы.
  • Сокращение количества переменных. Это приводит к сокращению размерности и нужно, если данных гораздо больше, чем нужно для исследования.

На этапе проведения исследования:

  • Замена нескольких переменных на одну с помощью методов анализа данных (это тоже сокращение размерности).

О методах мы поговорим чуть ниже, сейчас расскажем — зачем вообще нужна замена переменных.

Например, если мы не можем получить ответ напрямую, но можем вывести его из нескольких переменных. Это похоже на судоку — если мы знаем расположение нескольких чисел, то мы можем вычислить, куда поставить другое число.

В реальной жизни это нужно, когда мы пытаемся узнать ценностные установки респондентов. На вопрос «Считаете ли вы себя добрым человеком?» все поголовно ответят «Да». Но если задать несколько других вопросов вроде: «Как часто вы жертвуете на благотворительность?» и «Как часто вы жертвуете на улице незнакомцам?», а затем либо сложить эти переменные, либо найти их среднее — то мы вычислим новую переменную, которая будет характеризовать доброжелательность человека.

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

🔍 Наблюдаемая переменная — переменная, которую зафиксировали в явном виде.

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

Представим, что у нас есть результаты опроса про то, как люди проводят свое свободное время. В опроснике перечислены несколько вариантов досуга и по поводу каждой из категорий спрашивается, насколько часто люди проводят время таким образом. И если нас интересует тонкое разделение между разными видами досуга, то нам не стоит искать скрытую переменную. Но в случае, если перед нами стоит задача посмотреть на более общее явление, для которого достаточно нескольких категорий, мы можем их обобщить.

6

Возникает очередной вопрос — можем ли мы это делать свободно и без каких-либо ограничений, вроде «рыбалка и походы — это активный отдых на природе, значит я просто объединю эти переменные»? Конечно, нет. Смысловая общность переменных очень важна, однако нам стоит опираться не только на концептуальный смысл, но и на методы анализа данных.

Далее мы попробуем ответить на три вопроса, о том как:

  • вычислить скрытые переменные;
  • понять сколько их должно быть;
  • определить как связаны наблюдаемые и скрытые переменные.

Об методах мы уже упоминали выше, а сейчас назовём один из них — это метод главных компонент. Далее расскажем, в чём он заключается.

Как вычислить скрытые переменные? Метод главных компонент

Давайте начнем чуть издалека. Как исследователей нас прежде всего интересуют изменения признаков между разными наблюдениями. Если признак не изменяется, то мы можем разве что зафиксировать его. Наоборот, если изменений много, то мы можем анализировать случаи и ситуации, когда изменения происходят. Мы фиксируем другие признаки наблюдений и сравниваем их между собой.

Однако что если у нас слишком много признаков, и все они изменяются? Было бы удобно сохранить зафиксированные изменения в признаках, но сделать это с помощью меньшего числа признаков. Вот тут-то нам и поможет метод главных компонент.

🔍Компонент — в данном случае то же, что и скрытая переменная.

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

Может звучать запутанно, но давайте разбираться на примерах.

Вернёмся к опросу о хобби россиян: каждому респонденту требовалось заполнить анкету и указать время, которое он уделяет той или иной активности. Например — 30 минут в день играет на гитаре. Теперь мы хотим объединить схожие активности (тут каждая активность — это переменная).

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

Вот они на графике:

6

Здесь каждая точка — респондент. Если он только играет на гитаре и не рисует, то точка будет ровно на оси X — и наоборот.

Визуально понятно, что если один признак большой, то другой маленький. Расстояние между точкой и осями отражает изменчивость наблюдений. Но мы можем сделать следующий трюк: мы можем повернуть ось координат на 45 градусов (конкретно для этого примера) по часовой стрелке.

Теперь оказывается, что наблюдения сильно изменяются по новой оси координат X и совсем немножко по оси Y. В таком случае, мы могли бы сказать что-то вроде «ну, признак по оси Y не особо важный, мы можем использовать только значения по оси X. Новая ось X и станет нашим компонентом, то есть скрытой переменной.

6

Вот это и есть метод главных компонент с математической точки зрения: заменить прежние координатные оси и значения, которым соответствовали наблюдения, на новые оси и значения так, чтобы итоговое количество осей стало меньше. Но есть нюансы о том как выбрать:

  • точку начала координат;
  • направление осей.

Выбираем точку начала координат

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

То есть — если у нас минимальное количество минут игры на гитаре — 0, а максимальное — 96, то среднее будет 48. Для рисования это 0 и 95, значит среднее будет 47,5.

Из этой точки на графике мы можем провести новые оси координат. Это нормально: центрирование никак не меняет позиции каждой точки по отношению друг к другу, мы просто изменили точку зрения.

6

Точку начала координат мы выбрали, теперь выберем направление осей.

Выбираем направление осей

Каждая из новых осей — это и есть главный компонент, то есть линия.

Чтобы его провести, необходимо мысленно обвести все точки на графике в овал. Расстояние между наиболее вытянутыми сторонами овала и будет первым главным компонентом. Далее перпендикулярно нему проводим второй главный компонент.

6

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

По ссылке — научный рассказ о том, как нужно проводить главные компоненты. Здесь мы воспользовались аналогом «правила буравчика» — просто, эффективно и без глубокого погружения в термины.

И последнее. Как мы уже сказали в начале главки, каждый из компонентов объясняет какое-то количество изменчивости наблюдаемых переменных. То, что мы называем изменчивостью, в статистике называется дисперсией — то есть величиной отклонения значения переменной от среднего значения. Мы уже давали определение в параграфе 2.2.

🔍 Дисперсия — мера средней степени различий наблюдений и среднего.

Повторимся, чтобы усвоить наверняка: нас интересует компонент, который объясняет больше всего дисперсии. Это и будет наша скрытая переменная.

6

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

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

Все точно гораздо сложнее, если мы сравниваем много переменных (например, 10).

Во-первых, мы не можем с уверенностью сказать, что для описания 10 переменных будет достаточно одной новой переменной. Метафора: бармен смешал для нас какой-то коктейль. Из каких ингредиентов он состоит мы не знаем, а значит не знаем, какой он будет на вкус: кисло-сладкий, сладко-горький, кисло-сладко-горький и т.д.

Во-вторых, мы не знаем, из каких переменных какой компонент «образован», а значит мы не можем придумать содержательной интерпретации. Продолжение метафоры: если мы не знаем, из каких ингредиентов он состоит, значит мы не сможем узнать, как он называется.

Чтобы всё это узнать, нам нужно воспользоваться методом локтя.

Как понять, сколько скрытых переменных должно быть? Метод локтя

«Метод локтя» — это график, на котором отмечена доля объясненной этим компонентом дисперсии по оси Y и порядковый номер компонента по оси X. Мы не будем объяснять, как вычисляется доля объясненной дисперсии, это увеличит параграф ещё вдвое. Да и всё равно, за вас это сделает Python. Просто сфокусируйтесь на том, как этим пользоваться.

Сам график устроен следующим образом: каждый компонент уменьшает долю объясненной дисперсии, однако неравномерно. Один — например на 40%, другой — на 17%, ещё один — на 4%. Доля последовательно уменьшается от первого к последнему компоненту: первый объясняет больше, последние меньше.

Наша цель — выбрать оптимальное по сумме объяснённой дисперсии количество компонентов. Оптимальным считается такое количество компонентов, после которого линия на графике становится более пологой.

6

Как видите, оптимальное количество компонентов — три.

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

Остаётся последний вопрос: «Как понять связь компонентов с наблюдаемыми переменными?»

Как связаны наблюдаемые и скрытые переменные? Факторный анализ

Нам остается сделать последний шаг и связать между собой наблюдаемые и скрытые переменные. Возвращаясь к картинке со списком хобби — связать рыбалку и походы с активным отдыхом на природе.

Делается это просто, но сперва нужно отметить один нюанс. Мы не можем проводить связь случайно: между наблюдаемыми и скрытыми переменными должен быть какой-то общий смысл.

Грубо говоря, первый шаг дал нам «корзинки», второй — оптимальное количество корзинок. На третьем мы должны придумать, как их назвать и разложить по ним похожие переменные.

Возвращаемся к барной метафоре. Допустим, бармен изобретает новый коктейль. У него на складе десятки напитков и ингредиентов, но он вслепую выбрал джин, тоник и лимон. Осталось придумать название. И тут было бы странно, если бы он назвал коктейль «мятно-клубничный дайкири» — а вот название «джин-тоник» подходит идеально.

Продолжаем. Здесь «корзинка» и коктейль — это факторы.

🔍Фактор — в данном случае это компонент, который связан с несколькими наблюдаемыми переменными.

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

Послесловие: ограничения метода главных компонент

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

Итак, метод главных компонент крайне зависим от шкал, в которых выражены переменные. Если вы измеряете одну переменную по шкале от 1 до 100, а другую от 1 до 5, то как бы вы не крутили оси, то получится, что расстояния между разными точками и осями будет зависеть больше от переменной, которая выражена в шкале с большими значениями. Это делает бессмысленным процесс подбора новых координатных осей: они будут основываться на непропорциональных друг другу значениях.

Выход: использовать стандартизированную оценку значений переменных.

🔍 Стандартизированная оценка — это такое преобразование шкалы переменной, когда за нулевое значение шкалы принимается среднее значение переменной, а значения отдельных наблюдений по этой шкале соответствуют расстоянию до центра в стандартных отклонениях.

Мы писали про стандартное отклонение в параграфе 2.2.

Представим, у нас есть несколько значений в диапазоне от 0 до 80 со средним значением равным 40 и стандартным отклонением равным пяти.

А теперь рассчитаем стандартизированное значение для первого и второго наблюдения по вот этой формуле.

Нужно из 40 вычесть 40, а потом поделить на пять. У нас получился ноль, как и следует из определения: 40 — это среднее значение, поэтому оно должно равняться нулю.

Для второго значения у нас получилось -7.

Исходное значение

Стандартизированное значение

40

0

30

-2

50

2

0

-8

80

8

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

Всё, пора заканчивать. Напоследок скажем, что МГК — это очень мощный инструмент для упрощения данных, который применяется во многих сферах кроме статистики.

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

Это только малая часть того, где можно его применить. Подумайте как-нибудь — а где бы вы применили его сами?

В следующем параграфе мы будем практиковаться — реализуем МГК с помощью Python.

Отмечайте параграфы как прочитанные чтобы видеть свой прогресс обучения

Вступайте в сообщество хендбука

Здесь можно найти единомышленников, экспертов и просто интересных собеседников. А ещё — получить помощь или поделиться знаниями.
Вступить
Сообщить об ошибке
Предыдущий параграф6.1. Опросные данные
Следующий параграф6.3. Метод главных компонент и факторный анализ в Python