Регрессия дает ошибку по одной из входных переменных, контрасты могут применяться только к факторам с 2 или более уровнями [дубликаты]

Я запускаю логит-регрессию в R с большим количеством входных переменных.

newlogit <- glm(install. ~ SIZES + GROSSCONSUMPTION.... + 
                NETTCONSUMPTION..... + NETTGENERATION....... + 
                GROSSGENERATION.... + Variable. + Fixed + 
                Cost.of.gross.cons + Cost.of.net.cons + Cons.savings + 
                generation.gains + Total.savings + Cost.of.system + 
                Payback + Self.consumption + Total.consumption.as.solar + 
                Owner.occupied + postcode + Suburb + Market.penetration + 
                X..green.vote, data = newdata, family = "binomial")

Я получаю эту ошибку:

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

Не могли бы вы сообщить, почему возникает эта ошибка и есть ли способ запустить эту регрессию?


person Cara Teoh    schedule 01.05.2015    source источник
comment
Невозможно сказать, почему это происходит без минимального воспроизводимого примера . Я предполагаю, что одна или несколько переменных в вашем большом количестве входных переменных имеют только одно уникальное значение.   -  person Alex A.    schedule 01.05.2015


Ответы (2)


Он возражает против одной из ваших переменных (как сказал gvrocha); у вас может быть фактор только с одним уровнем или строка.

Совет, чтобы быстро отследить вызывающую ошибку переменную (переменные), состоит в том, чтобы разделить интервал пополам и увеличить/уменьшить индексы столбцов, пока не возникнет ошибка.

Лучше всего использовать числовой интерфейс (индекс столбца) для glm (glm(data[,'install.'] ~ data[,2:40]), см. [1])

а не интерфейс формулы glm(install. ~ var1 + var2 + ...:

[1] Динамическое создание формулы в R?

person smci    schedule 01.05.2015

Я видел, как эта проблема возникает, когда одна из переменных в правой части модели является фактором с одним уровнем.

Если это так, все, что вам нужно сделать, это удалить этот фактор из модели.

person W7GVR    schedule 01.05.2015
comment
Что делать, если мне нужна переменная? Должна быть возможность что-то сделать, не удаляя его, верно? - person Tom; 05.09.2018
comment
Если он имеет только один уровень, он вам не нужен, так как он не содержит никакой информации для вашей модели. - person Moody_Mudskipper; 24.09.2018