Cause de singularité dans la matrice pour la régression quantile

8

J'effectue des régressions quantiles dans R en utilisant le paquet quantreg. Mon ensemble de données comprend 12 328 observations allant de 0,12 à 330. Les points temporels de mes données ne sont pas exactement continus; toutes les données se trouvent dans l'une des quelques dizaines de casiers allant de 73 à 397.

Lorsque j'ai effectué une régression linéaire sur ces données en utilisant la fonction lm (), j'ai pu le faire avec des polynômes jusqu'à 4:

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

Cependant, avec le paquet quantreg et la commande rq (), je ne peux pas utiliser de polynômes. Une simple régression fonctionne très bien:

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

Mais dès que j'entre dans les polynômes, pas de dés. Lorsque j'entre ceci:

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

Je reçois le message d'erreur suivant:

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

J'ai lu sur des matrices singulières, et je pense qu'il pourrait y avoir deux raisons à cela: (1) je n'ai qu'une seule variable sur chaque axe, ou (2) mes données sont groupées / la variable Y n'est pas vraiment continue.

Quelqu'un peut-il me dire pourquoi j'obtiens cette erreur?

PS - Voici à quoi ressemble le graphique:

entrez la description de l'image ici

Charcha
la source
Avez-vous obtenu une réponse à cela? On dirait que cela est dû au grand non. de valeurs répétées [ stat.ethz.ch/pipermail/r-help//2013-April/351935.html]
Mohit Verma

Réponses:

7

Je crois que la raison pour laquelle cela apparaît au singulier est votre deuxième raison, que les données sont regroupées. La duplication des observations (pour une seule valeur x, plusieurs réponses) augmente les chances de singularité.

J'ai eu le même message d'erreur que vous avec un ensemble de données de structure similaire. J'ai plusieurs observations pour chaque valeur x, dont certaines étaient identiques. Je l'ai contourné en `` agitant '' les données, en ajoutant une très petite quantité de bruit aléatoire aux valeurs de réponse à l'aide de rnorm (). Cela signifiait que même s'il y avait plusieurs observations pour chaque valeur x, il n'y avait pas de répétitions identiques et la fonction rq () fonctionnait. Tant que le bruit que vous ajoutez est faible, il n'affectera pas sensiblement le coefficient et les estimations SE de rq.

Jack Ballard
la source
1

Une alternative à celle rnorm()proposée par Jack Ballard est d'utiliser jitter()le package de base.

florian
la source