O erro "sistema é computacionalmente singular" ao executar um glm

29

Estou usando o pacote robustbase para executar uma estimativa de glm. No entanto, quando faço isso, recebo o seguinte erro:

Error in solve.default(crossprod(X, DiagB * X)/nobs, EEq) : 
  system is computationally singular: reciprocal condition number = 1.66807e-16

O que isso significa / indica? E como posso depurá-lo?

PS. Se você precisar de alguma coisa (a fórmula / especificação ou dados) para responder, terei prazer em fornecê-lo.

NK1
fonte

Respostas:

26

Isso significa que sua matriz de design não é invertível e, portanto, não pode ser usada para desenvolver um modelo de regressão. Isso resulta de colunas linearmente dependentes, ou seja, variáveis ​​fortemente correlacionadas. Examine a covariância (ou correlação) aos pares de suas variáveis ​​para investigar se há alguma variável que possa ser potencialmente removida. Você está procurando covariâncias (ou correlações) >> 0. Como alternativa, você provavelmente pode automatizar essa seleção de variáveis ​​usando uma regressão passo a frente.

Isso também pode resultar de ter mais variáveis ​​do que observações; nesse caso, sua matriz de design provavelmente não está na classificação completa. Isso é um pouco mais difícil de corrigir, mas existem maneiras. Acredito que a regressão do laço funcione bem quando os dados são "mais amplos" do que "longos".

Lembre-se: se você decidir tentar o laço ou a seleção gradual, você estará fazendo muito mais (em termos de seleção de variáveis) do que apenas lidar com a multicolinearidade.

David Marx
fonte
Obrigado, duas perguntas: 1. Você conhece algum procedimento em r que possa funcionar bem para mim na depuração disso? 2. Vejo que, quando executo exatamente o mesmo modelo nos mesmos dados com glm () em vez de glmrob (), não recebo nenhum erro - isso faz sentido ou implica um erro no glmrob () função?
NK1
2

Passei muito tempo com esse erro, mas paguei esta página que resolveu para mim

https://www.kaggle.com/c/house-prices-advanced-regression-techniques/discussion/24586

Basicamente, você pode simplesmente mudar o método usado pelo mouse. Eu estava usando ppn e mudei para carrinho

rlhull6
fonte
2
Tente tornar a resposta independente no texto da sua resposta, por favor. Dessa forma, as pessoas têm maior probabilidade de lê-lo e menos probabilidade de excluí-lo por ser muito curto e não no tópico.
Carl