group-telegram.com/artificial_stupid/331
Last Update:
#statistics
Ловушка фиктивных переменных.
Давайте вспомним, что такое фиктивная переменная (dummy variable)? Вещь простая, но очень надежная. Предположим, у нас есть персонажи из анекдота - русский, немец и американец. Как нам закодировать их, если у нас есть некоторые табличные данные? Есть разные варианты, конечно. Но самый простой - это объявить 1 для наличия категориального признака и 0 для его отсутствия.
Но тут нас и поджидает ловушка джокера фиктивных переменных. Если мы закодируем каждый из признаков 1 или 0 (то есть, создадим 3 столбца), то получим чистую мультиколлинеарность. А как мы знаем, иметь ее в данных - это дело нехорошее.
Посмотрим на примере. Предположим, у нас есть немножечко данных такого вида:alcogol | nation
0.5 | русский
0.3 | немец
0.1 | американец
0.7 | русский
0.1 | немец
0.2 | американец
Если закодируем переменную nation
тремя столбцами, то получим такой вид:1 | 0 | 0
0 | 1 | 0
0 | 0 | 1
1 | 0 | 0
0 | 1 | 0
0 | 0 | 1
А это значит, что у нас сумма этих столбцов всегда будет равна единице. Упс, получаем чистую мультиколлинеарность.
Потому что, если мы будем именовать значения в столбцах за Ai, Bi, Ci
, то легко выразим, например, Ci
в виде: Ci = 1 - Ai - Bi
.
И что же делать?
Все просто - вместо k столбцов под каждую категорию, мы сделаем k-1 столбцов. Проблема решена.
Например, в нашем примере получим, что 0 и 0 для русского и немца означают американца (а все оттого, что у нас всего 3 категории, так что не являясь немцем или русским, человеку остается только быть американцем).
В принципе, это не особо большая проблема для всех сколько-нибудь адекватных статистических пакетов. Но если вы решите самостоятельно делать перевод категориальных значений в фиктивные переменные, помните о такой вот загвоздке.
BY Artificial stupidity
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/artificial_stupid/331