Estou realizando regressões quantílicas em R usando o pacote quantreg. Meu conjunto de dados inclui 12.328 observações, variando de 0,12 a 330. Os pontos no tempo para meus dados não são exatamente contínuos; todos os dados se enquadram em uma das dezenas de posições que variam de 73 a 397.
Quando realizei uma regressão linear nesses dados usando a função lm (), consegui fazer isso com polinômios de até 4:
lm(Y~poly(X,3,raw=TRUE),data=mydata)
No entanto, com o pacote quantreg e o comando rq (), não posso usar nenhum polinômio. Uma regressão simples funciona bem:
rq(Y~X,data=mydata,tau=.15)
Mas assim que eu entro em polinômios, não há dados. Quando eu insiro isso:
rq(Y~poly(X,2,raw=TRUE),data=mydata,tau=.15)
Eu recebi a seguinte mensagem de erro:
Error in rq.fit.br(x, y, tau = tau, ...) : Singular design matrix
Eu li sobre matrizes singulares e acho que pode haver duas razões para isso: (1) só tenho uma variável em cada eixo ou (2) meus dados estão em bin / a variável Y não é verdadeiramente contínua.
Alguém pode me dizer por que estou recebendo esse erro?
PS - é assim que o gráfico se parece:
fonte
Respostas:
Acredito que o motivo pelo qual ele aparece como singular é o seu segundo motivo, porque os dados estão em um bin. A duplicação de observações (para um único valor x, múltiplas respostas) aumenta as chances de singularidade.
Eu recebi a mesma mensagem de erro que você com um conjunto de dados estruturado de maneira semelhante. Eu tenho várias observações para cada valor x, algumas das quais eram idênticas. Eu cheguei a isso 'agitando' os dados, adicionando uma quantidade muito pequena de ruído aleatório aos valores de resposta usando rnorm (). Isso significava que, embora houvesse várias observações para cada valor x, não havia repetições idênticas e a função rq () funciona. Contanto que o ruído adicionado seja pequeno, ele não afetará o coeficiente e as estimativas SE de rq visivelmente.
fonte
Uma alternativa à
rnorm()
proposta por Jack Ballard está usandojitter()
o pacote base.fonte