Итак, вот моя проблема. У меня есть набор данных в R, на котором мне нужно запустить модель смешанных эффектов. Вот код:
data <- read.csv("D:/blahblah.csv")
analysis.data <- lmer(intdiff ~ stress_limit * word_position * follows + (1|speaker), data)
summary(analysis.data)
Когда я пытаюсь запустить скрипт, он возвращает следующую ошибку:
Error in mer_finalize(ans) : Downdated X'X is not positive definite, 15.
Я отследил ошибку до параметра «follows», потому что, когда я просто использую stress_limit и word_position, он работает нормально. Если это поможет, данные в "follows" - это только 3 строки: n или l, согласная, гласная. Я пытался заменить пробелы на _, но безуспешно. Есть ли что-то во внутренней работе функции lmer(), что препятствует использованию в этом случае «follows»? Любая помощь будет здорово!
Для получения дополнительной информации: intdiff содержит числовые значения, stress_limit — это строки (с ударением или без ударения), а позиция слова — это также строки (Word Medial или Word Initial).
РЕДАКТИРОВАТЬ: Вот пример данных, который воспроизводит ошибку:
structure(list(intdiff = c(11.45007951, 12.40144758, 13.47898367,
6.279497762, 18.19461897, 16.15539707), word_position = structure(c(2L,
2L, 2L, 1L, 1L, 1L), .Label = c("Word Initial", "Word Medial"
), class = "factor"), follows = structure(c(4L, 4L, 4L, 1L, 2L,
4L), .Label = c("Consonant", "n or l", "Pause", "Vowel"), class = "factor"),
stress_limit = structure(c(2L, 1L, 1L, 2L, 2L, 2L), .Label = c("Stressed",
"Unstressed"), class = "factor"), speaker = structure(c(2L,
2L, 2L, 2L, 2L, 2L), .Label = c("f11r", "f13r", "f15a", "f16a",
"m09a", "m10a", "m12r", "m14r"), class = "factor")), .Names = c("intdiff",
"word_position", "follows", "stress_limit", "speaker"), row.names = c(NA,
6L), class = "data.frame")
Я также попробовал функцию lme(), но она вернула эту ошибку:
Error in MEEM(object, conLin, control$niterEM) :
Singularity in backsolve at level 0, block 1
Код в моем исходном посте — это точный код, который я использую, за исключением вызова библиотеки (lme4), поэтому я не упускаю никакой информации, которую могу придумать.
Моя версия R 2.15.2.
data
? - person Sven Hohenstein   schedule 02.02.2013with(data,all(table(stress_limit,word_position,follows)>=1))
? (Это превращается в вопрос статистики, а не вопрос программирования...) - person Ben Bolker   schedule 03.02.2013