lme4::lmer-Berichte "fixed-effect model matrix Rang mangelhaft", brauche ich ein Update und wie?
Ich versuche zu laufen, ein mixed-effects-Modell, das vorhersagt F2_difference
mit dem rest der Spalten als Prädiktoren, aber ich bekomme eine Fehlermeldung, die sagt
fixed-Effekt-Modell der matrix Reihe mangelhaft, so fallen 7 Spalten /Koeffizienten.
Unter diesem link, Fixed-effects-Modell ist rank mangelhaftich denke, ich sollte verwenden findLinearCombos
im R-Paket caret
. Jedoch, wenn ich versuche findLinearCombos(data.df)
es gibt mir die Fehlermeldung
Fehler in qr.Standard(object) : NA/NaN/Inf in foreign function call (arg 1)
Zusätzlich: Warnmeldung:
In qr.Standard(object) : NAs introduced by coercion
Meine Daten nicht alle NAs -, Was könnte die Ursache sein? (Sorry, wenn die Antwort ist, die verschiedenen auf der Hand - ich bin neu in R).
Alle meine Daten sind Faktoren, außer der numerische Wert, dass ich versuche, vorherzusagen. Hier ist eine kleine Auswahl meiner Daten.
sex <- c("f", "m", "f", "m")
nasal <- c("TRUE", "TRUE", "FALSE", "FALSE")
vowelLabel <- c("a", "e", "i", "o")
speaker <- c("Jim", "John", "Ben", "Sally")
word_1 <- c("going", "back", "bag", "back")
type <- c("coronal", "coronal", "labial", "velar")
F2_difference <- c(345.6, -765.8, 800, 900.5)
data.df <- data.frame(sex, nasal, vowelLabel, speaker,
word_1, type, F2_difference
stringsAsFactors = TRUE)
Bearbeiten:
Hier ist etwas code, wenn es hilft.
formula <- F2_difference ~ sex + nasal + type + vowelLabel +
type * vowelLabel + nasal * type +
(1|speaker) + (1|word_1)
lmer(formula, REML = FALSE, data = data.df)
- Editor Bearbeiten:
Die OP nicht ausreichende Anzahl von test-Daten zu ermöglichen, eine tatsächliche Ausführung des Modells in lmer
für den Leser. Aber das ist nicht zu groß ein Problem. Dies ist immer noch ein sehr guter Beitrag!
InformationsquelleAutor der Frage Lisa | 2016-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie etwas über-besorgt mit der Warnmeldung:
Es ist eine Warnung, kein Fehler. Es ist weder Missbrauch von
lmer
noch krank-Spezifikation von Modell-Formel, so erhalten Sie eine geschätzte Modell. Aber um deine Frage zu beantworten, ich werde mich bemühen, es zu erklären.Während der Ausführung von
lmer
Ihr Modell der Formel ist aufgeteilt in ein fixed-Effekt-Formel und ein random-Effekt-Formelund für jeden ein Modell matrix aufgebaut ist. Aufbau für das fest ist über die standard-Modell-matrix-Konstruktormodel.matrix
; Bau der Zufall eine komplizierte, aber nicht zu deiner Frage, also habe ich Sie einfach überspringen.Für Ihr Modell, können Sie überprüfen, was der fixed-Effekt-Modell matrix sieht aus wie von:
Alle Ihre Variablen Faktor so
X
werden binäre. Obwohl- Modell.matrix
Kontraste
für die einzelnen Faktoren und Ihre Interaktiones ist immer noch möglich, dassX
nicht am Ende mit vollen Spalte Rang, als eine Spalte kann eine lineare Kombination von einigen anderen (die entweder präzise oder numerisch in der Nähe). In Ihrem Fall, einige levels eines Faktors können verschachtelt werden in einigen levels von anderen.Rang-Mangel kann auf viele verschiedene Arten entstehen. Die andere Antwort Aktien ein CrossValidated Antwort bietet erhebliche Diskussionen, auf die ich einige Anmerkungen machen.
So, manchmal können wir Abhilfe des Mangels, aber es ist nicht immer möglich, dies zu erreichen. So gut geschrieben-Modell fitting routine, wie
lm
glm
mgcv::gam
ist, gilt QR-ZERLEGUNG fürX
nur verwenden Ihre full-Rang Unterraum, D. H., eine maximale Teilmenge vonX
's Spalten, das gibt eine full-Rang-Raum, für die Bewertung, die Festsetzung von Koeffizienten verbunden mit dem rest der Spalten bei 0 oderNA
. Die Warnung, du hast nur impliziert. Es sind ursprünglichncol(X)
Koeffizienten zu schätzen, aber aufgrund von Mangel, nurncol(X) - 7
geschätzt werden, der rest 0 oderNA
. Solche numerischen Abhilfe sorgt dafür, dass ein least-squares-Lösung kann erhalten werden, in der die meisten stabil.Besser zu verdauen dieses Problem können Sie mit
lm
passen Sie ein lineares Modell mitfix.formula
.method = "qr"
undsingular.ok = TRUE
sind Standard, so dass wir eigentlich gar nicht brauchen, um es zu setzen. Aber wenn wir angebensingular.ok = FALSE
lm
stoppen und beschweren sich über Rang-Mangel.Können Sie dann prüfen Sie die zurückgegebenen Werte in
fix.fit
.Ist gewährleistet, dass
p = ncol(X)
aber Sie sollten sehenno.NA = 7
undrank + no.NA = p
.Genau das gleiche passiert im inneren
lmer
.lm
wird nicht melden-Mangel währendlmer
tut. Dies ist in der Tat informativ, wie es allzu oft sehe ich die Menschen Fragen, warumlm
zurückNA
für einige Koeffizienten.Update 1 (2016-05-07):
Mach dir keine sorgen über die Verwendung von
summary
oderanova
. Methoden sind so geschrieben, dass die korrekte Anzahl der Parameter (degree of freedom) wird verwendet zu produzieren, die gültige Zusammenfassung der Statistik.Update 2 (2016-11-06):
Lassen Sie uns auch hören, was der Paket-Autor
lme4
würde sagen: Rang-Mangel Warnung gemischten Modell lmer. Ben Bolker erwähnt hatcaret::findLinearCombos
auch, vor allem, weil die OP will, nur zu-Adresse-Mangel-Problem selbst.Update 3 (2018-07-27):
Rang-Mangel ist nicht ein problem für die gültige Modell-Schätzung und-Vergleich, konnte aber eine Gefahr bei der Vorhersage. Ich habe vor kurzem komponierte eine ausführliche Antwort mit simulierten Beispielen auf CrossValidated: R
- lm
Könnte mir jemand ein Beispiel für die irreführende Fall auf "Vorhersage von einem Rang-Mangel"? So, ja, in der Theorie wir sollten es vermeiden, Rang-defizienten Schätzung. Aber in der Realität, es gibt keine so genannte "wahre Modell": wir versuchen zu lernen aus Daten. Wir können nicht vergleichen eines geschätzten Modells, um "die Wahrheit"; die beste Wette, um die beste zu wählen aus einer Vielzahl von Modellen, die wir gebaut haben. Also, wenn das "beste" Modell landet Rang-mangelhaft, sind wir skeptisch, aber es gibt wohl nichts, was wir tun können, sofort.InformationsquelleAutor der Antwort 李哲源
Diese Antwort hat eine ausgezeichnete Arbeit zu erklären, was Rang Mangel ist, und was die möglichen Ursachen sein kann.
Viz:
InformationsquelleAutor der Antwort Mox