У меня возникла проблема с отображением правильной группировки фактор-переменной после использования MICE. Я считаю, что это вещь R, но я включил ее с мышами, чтобы быть уверенным.Отображение уровней факторов и меток в R
Итак, я запускаю мой алгоритм мышей, здесь есть snipit, как я называю, я отформатирую его в алгоритме мышей. Обратите внимание, что я хочу быть 0 для не лекарства, и 1 для да лекарства, так что я принуждать его быть фактором с уровнями 0 и 1, прежде чем запускать его
mydat$drug=factor(mydat$drug,levels=c(0,1),labels=c(0,1))
тогда я бегу мыши, и она работает логистическую регрессия (это значение по умолчанию) на наркотиках, а также другие переменные, подлежащие вменению.
я могу извлечь результаты одного из вмененных, когда она будет завершена по
drug=complete(imp,1)$drug
Мы можем увидеть его
> head(drug)
[1] 0 0 1 0 1 1
attr(,"contrasts")
2
0 0
1 1
Levels: 0 1
Таким образом, данные, конечно, 0,1.
Однако, когда я делаю что-то с ним, как cbind, она меняется на 1-х и 2-х
> head(cbind(drug))
drug
[1,] 1
[2,] 1
[3,] 2
[4,] 1
[5,] 2
[6,] 2
Даже когда я принуждать его к числовому
> head(as.numeric(drug))
[1] 1 1 2 1 2 2
Я хочу сказать, что есть что-то делать с контрастами, но когда я удаляю контраст, делаю
attr(drug,"contrasts")=NULL
Он по-прежнему показывает wi 1-го и 2-го числа, когда их вызывают и печатают другие.
Я могу получить его правильно напечатать с помощью I()
> head(I(drug))
[1] 0 0 1 0 1 1
Levels: 0 1
Таким образом, я считаю, что это вопрос, R, но я не знаю, как исправить это. Использует ли I() правильное решение, или это просто обходной путь, который здесь работает? Что на самом деле происходит за кулисами, которые делают выводным дисплеем как 1, так и 2?
Благодаря
'cbind' возвращается матрица, которая не хранит факторы (она будет хранить только строки символов и числовые символы). При преобразовании в матрицу ваши факторы представлены численным кодированием, а не символьной меткой. Все факторы сохраняются как целые числа, где первый уровень равен 1, а последующие уровни соответственно нумеруются. Ваш лучший способ исправить это - избегать хранения факторов в матрицах. – Benjamin
На самом деле, голова (cbind (I (лекарство))) все еще дает 1 и 2, так что это не должно быть правильным решением. – RayVelcoro
Но вы все еще используете 'cbind', который отчаянно пытается вернуть матрицу. И вы не можете хранить факторы в матрице. Вы должны рассмотреть решения, которые не связаны с 'cbind'. – Benjamin