2017-02-19 12 views
1

я получить 2 разных результаты моих данных, используя sjp.likert команду , это мой код:Команда sjp.likert в sjplot, factor или numeric ?, почему два разных результата?

library(sjPlot) 

l <- c(1,2,2,2,3,3,4,4,5,5,5,4,3,2,2) 

lab <- c("strongly not agree", 
     "not agree", 
     "Neutral", 
     "Agree", 
     "Strongly agree") 


sjp.likert(items  = l, 
      cat.neutral = 3, 
      catcount = 4, 
      legend.labels = lab) 

обратите внимание, что я работаю с числовым переменным не фактором, на данный момент все выглядит нормально , но иногда я предпочитаю работать с фактором, чтобы опустить параметр legend.labels. Поэтому я использую этот

l.factor <- factor(x = l,labels = lab) 

sjp.likert(items  = l.factor, 
      cat.neutral = 3, 
      catcount = 4) 

Но это, где я получаю эту проблему, например: «нейтральный» ответ не более 20%, в настоящее время составляет 6,7%. Насколько я могу видеть, пакет считает нейтральный ответ нейтральным, потому что серый цвет в правой части.

Вы можете видеть, что правильное число 20% при использовании этого

prop.table(table(l.factor)) 
prop.table(table(l)) 

Что я делаю неправильно? это ошибка?

ответ

0

Проблема заключается в том, что переопределение значений внутри функции sjp-likert() (если у вас есть нейтральная категория) основано на числовых индексах - что не работает с факторами с уровнями символов. Таким образом, вы должны изменить порядок ваших уровней фактора перед вызовом функции:

l.factor <- factor(x = l,labels = lab[c(1,2,4,5,3)]) 

sjp.likert(items  = l.factor, 
      cat.neutral = 5, 
      catcount = 4) 

Другим способом заключается в преобразовании коэффициентов в числовые значения и установите уровни фактора в качестве метки-атрибута. Вы можете сделать это с помощью sjmisc::to_value() с аргументом keep.labels = TRUE. Принимая ваш пример, и изменяющие его slighlty:

l <- c(1,2,2,2,3,3,4,4,5,5,5,4,3,2,2) 

lab <- c("strongly not agree", 
     "not agree", 
     "Neutral", 
     "Agree", 
     "Strongly agree") 

l.factor <- factor(x = l,labels = lab) 

l.factor <- to_value(l.factor, keep.labels = T) 

sjp.likert(items  = l.factor, 
      cat.neutral = 3, 
      catcount = 4) 

to_value() работает как на векторах и кадра данных, так что вы можете легко конвертировать факторы в кадре данных в числовой, сохраняя значение метки:

to_value(my_data_frame, keep.labels = T)

+0

Первый. Спасибо !, Большое спасибо. Есть ли какой-либо план добавить этот вид «ограничения» в документацию? я не нашел что-то о проблеме переменных факторов на нем. Я спрашиваю, потому что с созданным последним сюжетом это создает путаницу, потому что действительно заставляю меня думать, что это правильно читает. Или, может быть, изменить функцию? –

 Смежные вопросы

  • Нет связанных вопросов^_^