Преобразование факторов в типы двоичных асимметричных переменных - PullRequest
0 голосов
/ 26 апреля 2018

Я хочу преобразовать некоторые типы переменных в R из факторов в типы двоичных асимметричных переменных.

Я успешно преобразовал некоторые из моих данных из факторов в упорядоченные факторы, используя этот синтаксис: mydata[,200] <-as.ordered(mydata[,200]), но когда я попытался что-то похожее преобразовать их в двоичные асимметричные переменные, у меня не получилось, и у меня возникли проблемы с поиском какой-либо информации о том, как сделать это онлайн или в книге, которую я имею. Мне нужно, чтобы они были определены как асимметричные, потому что я собираюсь использовать функцию ромашки, чтобы посмотреть на различия. Если бы кто-нибудь мог сказать мне, как преобразовать коэффициенты в двоичные асимметричные, я был бы невероятно благодарен.

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

Итак, я собираюсь установить его там, где по существу 0 = неважно, 1 = важно. Из того, что я прочитал (Kaufmann & Rousseeuw 1990), важно различать, что они несимметричны при различиях.

structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, NA, 1L, NA, 
1L, 1L, 1L, NA, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")

Дополнительные правки: я не верю, что мне нужна фиктивная переменная, поскольку она технически уже является двоичной (все равно 1, 0 или NA) - я просто не знаю, как заставить R изменить переменную на асимметричная двоичная переменная, а не фактор.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Один из способов - сначала использовать as.vector() для преобразования вашего фактора в символьный вектор с заменой уровней 1 и 2 на их метки "0" и "1", а затем использовать as.numeric() для преобразования результат для чисел 0 и 1:

v <- structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, NA, 1L, NA, 
                 1L, 1L, 1L, NA, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                 1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")

v <- as.numeric(as.vector(v))

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

v <- as.numeric(v) - 1

as.numeric() берет коэффициент и преобразует его в вектор уровней (которые являются числами 1 и 2), а затем вычитая 1, приводит результат к 0 и 1. В любом случае вы получите двоичный числовой вектор:

> v
 [1]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0
[27] NA  0 NA  0  0  0 NA NA  0  0  0 NA  0  0  0  0  0  0  0  0  0  0  0  0
0 голосов
/ 26 апреля 2018

Будет полезно добавить пример ввода и желаемый результат. Я считаю, что вы ищете что-то под названием dummy variables.

    col1
row1  a   
row2  b
row3  a 

преобразовано в

      a b
row1  1 0
row2  0 1
row3  1 0

Если это то, что вы подразумеваете под преобразованием факторных переменных в двоичные асимметричные переменные, пожалуйста, проверьте dummies package , который делает это в R.

...