Il problema che stai riscontrando (cioè "singolarità") può essere considerato come un'istanza di multicollinearità . La multicollinearità è spesso definita come:
Una o più variabili predittive sono una combinazione lineare di altre variabili predittive.
Questa è, in effetti, una definizione piuttosto rigorosa; è una multicollinearità perfetta e puoi facilmente avere un problema con la multicollinearità senza che nessuna delle tue variabili sia una perfetta combinazione lineare di altre. Inoltre, raramente si verifica una perfetta multicollinearità. Tuttavia, ti sei imbattuto in un caso in cui può accadere. Vediamo come possiamo prevedere perfettamentemedium quality
dalla nostra conoscenza delle altre due categorie (lo faremo con un modello di regressione dove medium quality
è , e e sono X 1 e X 2 , rispettivamente): Y = β 0 + β 1Ybad quality
high quality
X1X2
Notare che non esiste un termine di errore, ε , perché possiamo prevederlo perfettamente. Per fare ciò, impostiamo β 0 = 1 , β 1 = - 1 e β 2 = - 1 . Ora, quando hai, allora X 1 = 1 , che annulla β 0 () emodo che anche quel termine venga cancellato (
Y= β0+ β1X1+ β2X2
εβ0= 1β1= - 1β2= - 1bad quality
X1= 1β01+- 1×1X2= 0- 1 × 0). Pertanto, ci viene lasciato un valore previsto di per ( ), che è esattamente corretto. Lascerò a te elaborare le altre possibilità (funziona sempre, nel tuo caso).
0Ymedium quality
Quindi cosa dovresti fare? Quando si rappresenta una variabile categoriale, generalmente si usa la codifica delle celle di riferimento (spesso chiamata "codifica fittizia"). Per fare ciò, scegliamo un livello della nostra variabile categoriale come livello di riferimento; quel livello non ottiene il proprio codice fittizio, ma viene semplicemente indicato avendo tutti gli nei codici fittizi per tutti gli altri livelli. Gli altri livelli della variabile categoriale sono rappresentati da codici fittizi proprio come hai già fatto. (Per ulteriori informazioni su questo, puoi vedere la mia risposta qui: Regressione basata ad esempio sui giorni della settimana .) Se stai usando , puoi usare un e0R
factor
R
farà tutto questo per te - sarà fatto correttamente, ed è molto più conveniente - tuttavia, vale la pena capire che questo è ciò che sta accadendo "dietro le quinte".