Полиномиальная логит-модель

Я собираюсь использовать пакет mlogit. Я запускаю его как пример, но он все равно дает мне ошибку, и я не знаю, что с этим делать.

data72 = mlogit.data(data, choice ="Hour72motor", shape ="long", ,alt.levels="mode")
simple = mlogit(Hour72motor ~ Hemisphere +Lesionlocation + gender + Age+ DoesHematoma+study, data=data72)

Ошибка:

Ошибка в контрастах‹-(tmp, value = contr.funs[1 + isOF[nn]]): контрасты могут применяться только к факторам с 2 или более уровнями

Спасибо за поддержку.

Я добавляю комментарий, который рекомендуется; изучить количество нечисловых переменных в модели

testdat <- na.omit(data72[c("Hour72motor", "Hemisphere", "Lesionlocation", 
      "gender","Age", "DoesHematoma", "study")]) ; 

lapply(testdat[!sapply(testdat, is.numeric)], table)
# $Hour72motor
# FALSE  TRUE 
#   128    16 

person Maryam Gh    schedule 07.07.2015    source источник
comment
можете ли вы включить первые несколько строк data72, по крайней мере, столбцы, которые вы используете в своей модели? Похоже, у вас есть фактор только с одним уровнем, но вам нужно сделать что-то вроде lapply(data72, function(x) length(unique(x)), чтобы проверить   -  person C8H10N4O2    schedule 08.07.2015
comment


Ответы (1)


По моему опыту, это сообщение об ошибке обычно означает, что объект данных, который вы пытаетесь использовать на этапе моделирования, пуст или поврежден, или тип переменной, который вы используете в качестве y в вашей модели, не тот тип, который ему нужен. быть. Вы проверили фрейм данных, чтобы убедиться, что ваша первая строка кода произвела то, что вы хотели? Пытаться:

str(data72)
table(data72$Hour72motor)

Есть ли в нем ожидаемое количество столбцов и строк? Принимает ли цель вашей модели (Hour72motor) ожидаемые значения? Если нет ни того, ни другого, попробуйте поработать с первой строкой, чтобы убедиться, что вы получаете нужные данные в нужном формате.

person ulfelder    schedule 07.07.2015
comment
Спасибо за ваш быстрый ответ: - person Maryam Gh; 08.07.2015
comment
Я сделал то, что вы сказали, но ничего плохого: - person Maryam Gh; 08.07.2015
comment
Есть ли у вас предложения? - person Maryam Gh; 08.07.2015
comment
Более чем вероятно, что одна из переменных в вашей модели имеет только один уровень — помните, что все строки с отсутствующими данными будут удалены. Попробуйте testdat <- na.omit(data72[c("Hour72motor", "Hemisphere", "Lesionlocation", "gender","Age", "DoesHematoma", "study")]) ; lapply(testdat[!sapply(testdat, is.numeric)], table) - person user20650; 08.07.2015
comment
Спасибо, но он по-прежнему дает мне тот же ответ с таблицей (data72 $ Hour72motor) - person Maryam Gh; 08.07.2015
comment
Насколько я понимаю, если ответ отсутствует или ответ одного уровня, он должен дать мне другой ответ, верно? - person Maryam Gh; 08.07.2015
comment
Не могли бы вы отредактировать свой вопрос с результатами приведенных выше команд, пожалуйста: вы можете сделать это, опубликовав результаты dput(lapply(testdat[!sapply(testdat, is.numeric)], table)) - person user20650; 08.07.2015
comment
testdat ‹- na.omit(data72[c(Час72мотор, Полушарие, Расположение поражения, пол, Возраст, Есть ли гематома, исследование)]) ; lapply(testdat[!sapply(testdat, is.numeric)], table) $Hour72motor FALSE TRUE 128 16 › dput(lapply(testdat[!sapply(testdat, is.numeric)], table))structure(list(Hour72motor = структура (c (128L, 16L), .Dim = 2L, .Dimnames = структура (список (c (FALSE, TRUE)), .Names = ), класс = таблица)), .Names = Hour72motor) - person Maryam Gh; 08.07.2015
comment
Спасибо. хорошо, я не уверен, но я подозреваю, что проблема может быть в разделении, так как есть только 16 случаев. Попробуйте запустить модель с одним предиктором за раз и постепенно наращивайте модель, чтобы увидеть, когда она начнет выдавать ошибку. [Кроме того: я бы сказал, просто глядя на имена предикторов в вашей модели, удивительно, что все они числовые] - person user20650; 08.07.2015
comment
Спасибо, @user20650. Я изменил свой набор данных по-другому, и это, наконец, сработало. - person Maryam Gh; 10.07.2015
comment
Отличный материал, Марьям, я не думаю, что сильно помог, но рад, что у тебя все получилось. - person user20650; 10.07.2015