2016-12-14 3 views
1

Я пытаюсь использовать glmer для моделирования вербовки кораллов и получить ошибку «Ошибка: неверная спецификация фактора группировки, сайт», когда я запускаю модель после повторного масштабирования переменных. Помощь высоко оценилиОшибка: Недопустимая спецификация фактора группировки

m1<-glmer(Tot~cs.Tile(Tile)+cs.Coral_T(Coral_T)+cs.Sponge(Sponge)+ 
cs.Turf(Turf)+cs.Acro(Acro)+cs.Por(Por)+cs.Poc(Poc)+ 
cs.Mer(Mer)+cs.Agar(Agar)+cs.Fav(Fav)+ 
cs.Den(Den)+cs.Sid(Sid)+cs.CCA(CCA)+cs.Soft(Soft)+ 
    (1|Site), 
family=poisson, data=data) 

У меня есть 16 переменных и 368 набл:

str(data) 
'data.frame': 368 obs. of 16 variables: 
$ Site : Factor w/ 25 levels "Eight","Eighteen",..: 10 10 10 10 10 10 10 10 10 10 ... 
$ Tile : int 1 2 3 4 5 6 7 8 9 10 ... 
$ Tot : int 28 24 17 13 29 19 6 13 14 4 ... 
$ Coral_T: num 32.6 32.6 32.6 32.6 32.6 ... 
$ Sponge : num 0.206 0.206 0.206 0.206 0.206 ... 
$ Turf : num 32.3 32.3 32.3 32.3 32.3 ... 
$ Acro : num 3.45 3.45 3.45 3.45 3.45 ... 
$ Por : num 1.15 1.15 1.15 1.15 1.15 ... 
$ Poc : num 0 0 0 0 0 0 0 0 0 0 ... 
$ Mer : num 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 ... 
$ Agar : num 24.2 24.2 24.2 24.2 24.2 ... 
$ Fav : num 1.02 1.02 1.02 1.02 1.02 ... 
$ Den : num 1.18 1.18 1.18 1.18 1.18 ... 
$ Sid : int 0 0 0 0 0 0 0 0 0 0 ... 
$ CCA : num 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 ... 
$ Soft : num 0 0 0 0 0 0 0 0 0 0 ... 
+0

вы можете объяснить вашу запись? являются скобками, относящимися к альтернативным переменным, например. вы используете 'Tile' или' cs.Tile', где последняя является центрированной и масштабированной версией 'Tile'? Я не могу сразу увидеть, как это может произойти. Можем ли мы увидеть, что в нем находится кадр данных с центрированным масштабированием? Я мог догадаться, что, может быть, вы забыли включить 'Site' в кадр с масштабированием по центру ... ??? –

+0

поочередно (и желательно) вы можете предоставить [mcve] –

ответ

3

Я столкнулся с той же ошибки в вызове update.merMod, а также после повторного масштабирования переменных. После того, как вы спустились через стек traceback() и порылись с тем, что я нашел там, используя масштабированные и немасштабированные наборы данных, я обнаружил, что проблема возникла при создании фрейма модели и произошла из-за того, что мой алгоритм масштабирования и центрирования не учитывался для значений NA в исходных переменных. Первоначально я выполнил центрирующее/масштабирование следующим образом:

csData <- data %>% mutate(Var1 = (Var1 - mean(Var1)/sd(Var1), 
          Var2 = (Var2 - mean(Var2)/sd(Var2)) 

Существовало несколько NA значений в одной из этих переменных и масштабирования и центрирования его таким образом, в результате пустой (все NA) вектора в csData. Это впоследствии (и молча) привело к возврату пустой рамки от model.frame(). Хотя пустая рамка была причиной ошибки, она (ошибка) возникла из-за моей (неправильной) обработки значений NA в моих переменных во время повторного масштабирования. Установка na.rm=TRUE для звонков в sd() и mean() решена проблема для меня:

csData <- data %>% mutate(Var1 = (Var1 - mean(Var1, na.rm=TRUE)/sd(Var1, na.rm=TRUE), 
          Var2 = (Var2 - mean(Var2, na.rm=TRUE)/sd(Var2, na.rm=TRUE)) 
+0

Также отвечает на мою проблему. Я масштабировал свои непрерывные предиктора, не понимая, что в одной колонке есть некоторые НС. – dmt

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