Ursache der Singularität in der Matrix für die Quantilregression

8

Ich führe Quantilregressionen in R mit dem Paket quantreg durch. Mein Datensatz enthält 12.328 Beobachtungen zwischen 0,12 und 330. Die Zeitpunkte für meine Daten sind nicht genau kontinuierlich. Alle Daten fallen in einen von wenigen Dutzend Fächern zwischen 73 und 397.

Als ich mit der Funktion lm () eine lineare Regression dieser Daten durchführte, konnte ich dies mit Polynomen bis zu 4 tun:

lm(Y~poly(X,3,raw=TRUE),data=mydata)

Mit dem Paket quantreg und dem Befehl rq () kann ich jedoch keine Polynome verwenden. Eine einfache Regression funktioniert einwandfrei:

rq(Y~X,data=mydata,tau=.15)

Aber sobald ich in Polynome gerate, keine Würfel. Wenn ich dies eingebe:

rq(Y~poly(X,2,raw=TRUE),data=mydata,tau=.15)

Ich erhalte die folgende Fehlermeldung:

Error in rq.fit.br(x, y, tau = tau, ...) : Singular design matrix

Ich habe einzelne Matrizen gelesen und denke, dass es zwei Gründe dafür geben kann: (1) Ich habe nur eine Variable auf jeder Achse oder (2) meine Daten sind gruppiert / die Y-Variable ist nicht wirklich stetig.

Kann mir jemand sagen, warum ich diesen Fehler bekomme?

PS - So sieht das Diagramm aus:

Geben Sie hier die Bildbeschreibung ein

Charcha
quelle
Hast du eine Antwort darauf bekommen? Scheint so, als ob dies an der großen Nr. Liegt. von wiederholten Werten [ stat.ethz.ch/pipermail/r-help//2013-April/351935.html]
Mohit Verma

Antworten:

7

Ich glaube, der Grund, warum es als Singular auftaucht, ist Ihr zweiter Grund, dass die Daten zusammengefasst sind. Das Duplizieren von Beobachtungen (für einen einzelnen x-Wert mehrere Antworten) erhöht die Wahrscheinlichkeit einer Singularität.

Ich hatte die gleiche Fehlermeldung wie Sie mit einem ähnlich strukturierten Datensatz. Ich habe mehrere Beobachtungen für jeden x-Wert, von denen einige identisch waren. Ich habe es umgangen, indem ich die Daten "zitterte" und den Antwortwerten mit rnorm () eine sehr kleine Menge zufälligen Rauschens hinzufügte. Dies bedeutete, dass es zwar mehrere Beobachtungen für jeden x-Wert gab, jedoch keine identischen Wiederholungen gab und die Funktion rq () funktioniert. Solange das von Ihnen hinzugefügte Rauschen gering ist, werden die Koeffizienten- und SE-Schätzungen von rq nicht merklich beeinflusst.

Jack Ballard
quelle
1

Eine Alternative zu dem rnorm()von Jack Ballard vorgeschlagenen ist die Verwendung jitter()aus dem Basispaket.

Florian
quelle