Qual è un esempio di perfetta multicollinearità?


12

Qual è un esempio di perfetta collinearità in termini di matrice del design ?X

Vorrei un esempio in cui non può essere stimato perché non è invertibile.β^=(XX)1XY(XX)


Ho esaminato il post consigliato per Colinearity e ho ritenuto che fosse sufficiente da capire, ma un semplice esempio che utilizzava i dati avrebbe aggiunto chiarezza.
TsTeaTime

2
Cosa intendi con "in termini di X e Y"? La colinearità esiste tra le variabili X, Y non ha nulla a che fare con essa.
gung - Ripristina Monica

1
Ho modificato la domanda in modo più specifico per quanto riguardaX
TsTeaTime

1
Come mostra multicollineariry di nella singolarità di , potresti voler leggere anche questa domanda: stats.stackexchange.com/q/70899/3277 . X XXXX
ttnphns,

Risposte:


10

Ecco un esempio con 3 variabili, , e , correlate dall'equazioneyx1x2

y=x1+x2+ε

dove εN(0,1)

I dati particolari sono

         y x1 x2
1 4.520866  1  2
2 6.849811  2  4
3 6.539804  3  6

Quindi è evidente che è un multiplo di quindi abbiamo una perfetta collinearità.x2x1

Possiamo scrivere il modello come

Y=Xβ+ε

dove:

Y=[4.526.856.54]

X=[112124136]

Quindi abbiamo

XX=[112124136][111123246]=[61116112131163146]

Ora calcoliamo il determinante di :XX

detXX=6|21313146|11|11311646|+16|11211631|=0

In R possiamo mostrarlo come segue:

> x1 <- c(1,2,3)

creare x2, un multiplo dix1

> x2 <- x1*2

creare y, una combinazione lineare di x1, x2e qualche casualità

> y <- x1 + x2 + rnorm(3,0,1)

osservalo

> summary(m0 <- lm(y~x1+x2))

non riesce a stimare un valore per il x2coefficiente:

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   3.9512     1.6457   2.401    0.251
x1            1.0095     0.7618   1.325    0.412
x2                NA         NA      NA       NA

Residual standard error: 0.02583 on 1 degrees of freedom
Multiple R-squared:      1,     Adjusted R-squared:  0.9999 
F-statistic: 2.981e+04 on 1 and 1 DF,  p-value: 0.003687

La matrice del modello è:X

> (X <- model.matrix(m0))

(Intercept) x1 x2
1           1  1  2
2           1  2  4
3           1  3  6

Quindi èXX

> (XXdash <- X %*% t(X))
   1  2  3
1  6 11 16
2 11 21 31
3 16 31 46

che non è invertibile, come mostrato da

> solve(XXdash)
Error in solve.default(XXdash) : 
  Lapack routine dgesv: system is exactly singular: U[3,3] = 0

O:

det (XXdash) [1] 0


21

Ecco un paio di scenari abbastanza comuni che producono una perfetta multicollinearità, cioè situazioni in cui le colonne della matrice di progettazione sono linearmente dipendenti. Ricordiamo dall'algebra lineare che ciò significa che esiste una combinazione lineare di colonne della matrice di progettazione (i cui coefficienti non sono tutti zero) che equivale a zero. Ho incluso alcuni esempi pratici per aiutare a spiegare perché questa trappola colpisce così spesso - ho incontrato quasi tutti!

  1. Una variabile è un multiplo di un'altra , indipendentemente dal fatto che esista un termine di intercettazione: forse perché hai registrato la stessa variabile due volte usando unità diverse (ad es. "Lunghezza in centimetri" è precisamente 100 volte più grande di "lunghezza in metri") o perché hai registrato una variabile una volta come numero grezzo e una volta come proporzione o percentuale, quando il denominatore è fisso (ad es. "area della capsula di Petri colonizzata" e "percentuale della capsula di Petri colonizzata" saranno multipli esatti l'uno dell'altro se l'area di ogni capsula di Petri è uguale). Abbiamo collinearità perché se dove e sono variabili (colonne della matrice del disegno) e è una costante scalare, w x a 1 ( w ) - a ( x )wi=axiwxa1(w)a(x)è una combinazione lineare di variabili uguale a zero.

  2. Esiste un termine di intercettazione e una variabile differisce da un'altra per una costante : ciò accadrà se una variabile ( ) e includerai sia la grezza che la centrata nella tua regressione. Accadrà anche se le tue variabili vengono misurate in diversi sistemi di unità che differiscono per una costante, ad esempio se è "temperatura in kelvin" e come "temperatura in ° C", quindi . Se consideriamo il termine di intercettazione come una variabile che è sempre (rappresentata come una colonna di quelli, , nella matrice di progettazione), avendo per una costantewi=xix¯w w x w i = x i + 273,15 1 1 n w i = x i + k k 1 ( w ) - 1xwwxwi=xi+273.1511nwi=xi+kksignifica che è una combinazione lineare delle colonne , e della matrice di disegno che è uguale a zero.w x 11(w)1(x)k(1n)wx1

  3. C'è un termine di intercetta e uno variabile è data dalla una trasformazione affine di un altro : vale a dire di avere variabili e , legati da dove e sono costanti. Ad esempio, ciò accade se si standardizza una variabile come e si includono sia le variabili raw sia quelle standardizzate nella regressione. Succede anche se si registra come "temperatura in ° F" e come "temperatura in ° C", poiché tali sistemi di unità non condividono uno zero comune ma sono correlati daww i = a x i + b a b z i = x i - ˉ xxwi=axi+babzi=xix¯sxxzwxwi=1.8xi+32. O in un contesto aziendale, supponiamo che ci sia un costo fisso (ad esempio che copre la consegna) per ciascun ordine, nonché un costo per unità venduta; quindi se è il costo dell'ordine e è il numero di unità ordinate, abbiamo . La combinazione lineare di interesse è . Nota che se , allora (3) include (2) come un caso speciale; se , quindi (3) include (1) come caso speciale.b$a$wiixiwi=axi+b1(w)a(x)b(1n)=0a=1b=0

  4. Esiste un termine di intercettazione e viene fissata la somma di più variabili (ad esempio nella famosa "trappola variabile fittizia") : ad esempio se si dispone di "percentuale di clienti soddisfatti", "percentuale di clienti insoddisfatti" e "percentuale di clienti né soddisfatti né insoddisfatto ", quindi queste tre variabili saranno sempre (salvo errore di arrotondamento) pari a 100. Una di queste variabili - o in alternativa, il termine di intercettazione - deve essere eliminata dalla regressione per prevenire la collinearità. La "trappola variabile fittizia" si verifica quando si utilizzano variabili indicatore (più comunemente ma meno utilmente chiamate "manichini") per ogni possibile livello di una variabile categoriale. Ad esempio, supponiamo che i vasi siano prodotti in combinazioni di colori rosso, verde o blu. Se hai registrato la variabile categoriale "redgreene bluesarebbero variabili binarie, memorizzate come 1per "sì" e 0per "no") quindi per ogni vaso solo una delle variabili sarebbe una, e quindi red + green + blue = 1. Poiché esiste un vettore di quelli per il termine di intercettazione, la combinazione lineare 1(red) + 1(green) + 1(blue) - 1(1) = 0. Il solito rimedio qui è o eliminare l'intercettazione o rilasciare uno degli indicatori (ad esempio tralasciare red) che diventa un livello di base o di riferimento. In questo caso, il coefficiente di regressione per greenindicherebbe la variazione della risposta media associata al passaggio da un vaso rosso a uno verde, mantenendo costanti altre variabili esplicative.

  5. Esistono almeno due sottoinsiemi di variabili, ognuna con una somma fissa , indipendentemente dal fatto che esista un termine di intercettazione: supponiamo che i vasi in (4) siano stati prodotti in tre dimensioni e che la variabile categorica per dimensione sia stata memorizzata come tre variabili indicatore aggiuntive . Avremmo large + medium + small = 1. Quindi abbiamo la combinazione lineare 1(large) + 1(medium) + 1(small) - 1(red) - 1(green) - 1(blue) = 0, anche quando non esiste un termine di intercettazione. I due sottogruppi non devono necessariamente condividere la stessa somma, ad esempio se abbiamo variabili esplicative tali che ogni e quindi .u,v,w,xui+vi=k1xi+yi=k2k2(u)+k2(v)k1(w)k1(x)=0

  6. Una variabile viene definita come una combinazione lineare di diverse altre variabili : ad esempio, se si registra la lunghezza , la larghezza e il perimetro di ciascun rettangolo, allora modo da avere la combinazione lineare . Un esempio con una durata intercetta: supponiamo che un business di vendita per corrispondenza ha due linee di prodotto, e noi registrare quell'ordine consisteva di del primo prodotto al costo unitario e della seconda al costo unitario , con spese di consegna fisse . Se includiamo anche il costo dell'ordinelwppi=2li+2wi1(p)2(l)2(w)=0iui$avi$b$c$x come variabile esplicativa, quindi e così . Questa è un'ovvia generalizzazione di (3). Ci dà anche un modo diverso di pensare a (4): una volta che sappiamo tutti escludere uno dei sottoinsiemi di variabili la cui somma è fissa, allora il rimanente è il loro complemento in modo che possa essere espresso come una combinazione lineare di loro e la loro somma . Se sappiamo che il 50% dei clienti era soddisfatto e il 20% era insoddisfatto, allora il 100% - 50% - 20% = 30% non deve essere né soddisfatto né insoddisfatto; se sappiamo che il vaso non è rosso ( ) ed è verde ( ), allora sappiamo che non è blu ( ).xi=aui+bvi+c1(x)a(u)b(v)c(1n)=0red=0green=1blue = 1(1) - 1(red) - 1(green) = 1 - 0 - 1 = 0

  7. Una variabile è costante e zero , indipendentemente dal fatto che esista un termine di intercettazione: in uno studio osservazionale, una variabile sarà costante se il campione non presenta una variazione (qualsiasi!) Sufficiente. Potrebbe esserci una variazione nella popolazione che non viene catturata nel tuo campione, ad esempio se esiste un valore modale molto comune: forse la dimensione del tuo campione è troppo piccola ed è quindi improbabile che includa valori diversi dalla modalità, oppure le tue misurazioni erano insufficientemente preciso per rilevare piccole variazioni dalla modalità. In alternativa, potrebbero esserci ragioni teoriche per la mancanza di variazione, in particolare se si sta studiando una sottopopolazione. In uno studio sulle proprietà di nuova costruzione a Los Angeles, non sarebbe sorprendente che ogni punto dati abbia AgeOfProperty = 0eState = California! In uno studio sperimentale, potresti aver misurato una variabile indipendente sotto controllo sperimentale. Se una delle tue variabili esplicative sia sia costante che zero, allora abbiamo immediatamente che la combinazione lineare (con coefficiente zero per qualsiasi altra variabile) è .x1(x)0

  8. Esiste un termine di intercettazione e almeno una variabile è costante : se è costante in modo che ogni , la combinazione lineare .xxi=k01(x)k(1n)=0

  9. Almeno due variabili sono costanti , indipendentemente dal fatto che esista un termine di intercettazione: se ogni e , la combinazione lineare .wi=k10xi=k20k2(w)k1(x)=0

  10. Il numero di colonne della matrice di disegno, , supera il numero di righe,kn : anche quando non esiste una relazione concettuale tra le variabili, è matematicamente necessario che le colonne della matrice di disegno siano linearmente dipendenti quando . Semplicemente non è possibile avere vettori linearmente indipendenti in uno spazio con un numero di dimensioni inferiore a : ad esempio, mentre è possibile disegnare due vettori indipendenti su un foglio di carta (un piano bidimensionale,k>nkkR2) qualsiasi altro vettore disegnato sulla pagina deve trovarsi all'interno della loro apertura e quindi essere una combinazione lineare di essi. Si noti che un termine di intercettazione contribuisce con una colonna di quelli alla matrice di progettazione, quindi conta come una delle tue colonne. (Questo scenario è spesso chiamato problema "large , small ": vedi anche questa domanda CV correlata .)kpn

Esempi di dati con codice R.

Ogni esempio fornisce una matrice di design , la matrice (nota che è sempre quadrata e simmetrica) e . Nota che se è singolare (zero determinante, quindi non invertibile), non possiamo stimare . La condizione che sia non singolare equivale alla condizione che abbia il rango completo in modo che le sue colonne siano linearmente indipendenti: vedi questa domanda di Math SE , o questa e il suo contrario .XXXdet(XX)XXβ^=(XX)1XyXXX

(1) Una colonna è multipla di un'altra

# x2 = 2 * x1
# Note no intercept term (column of 1s) is needed
X <- matrix(c(2, 4, 1, 2, 3, 6, 2, 4), ncol = 2, byrow=TRUE)

X
#     [,1] [,2]
#[1,]    2    4
#[2,]    1    2
#[3,]    3    6
#[4,]    2    4


t(X) %*% X
#     [,1] [,2]
#[1,]   18   36
#[2,]   36   72

round(det(t(X) %*% X), digits = 9)
#0

(2) Termine di intercettazione e una variabile differisce da un'altra per costante

# x1 represents intercept term
# x3 = x2 + 2
X <- matrix(c(1, 2, 4, 1, 1, 3, 1, 3, 5, 1, 0, 2), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    2    4
#[2,]    1    1    3
#[3,]    1    3    5
#[4,]    1    0    2


t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    4    6   14
#[2,]    6   14   26
#[3,]   14   26   54

round(det(t(X) %*% X), digits = 9)
#0

# NB if we drop the intercept, cols now linearly independent
# x2 = x1 + 2 with no intercept column
X <- matrix(c(2, 4, 1, 3, 3, 5, 0, 2), ncol = 2, byrow=TRUE)

X
#     [,1] [,2]
#[1,]    2    4
#[2,]    1    3
#[3,]    3    5
#[4,]    0    2


t(X) %*% X
#     [,1] [,2]
#[1,]   14   26
#[2,]   26   54
# Can you see how this matrix is related to the previous one, and why?

round(det(t(X) %*% X), digits = 9)
#80
# Non-zero determinant so X'X is invertible

(3) Termine di intercettazione e una variabile è trasformazione affine di un'altra

# x1 represents intercept term
# x3 = 2*x2 - 3
X <- matrix(c(1, 2, 1, 1, 1, -1, 1, 3, 3, 1, 0, -3), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    2    1
#[2,]    1    1   -1
#[3,]    1    3    3
#[4,]    1    0   -3


t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    4    6    0
#[2,]    6   14   10
#[3,]    0   10   20

round(det(t(X) %*% X), digits = 9)
#0

# NB if we drop the intercept, cols now linearly independent
# x2 = 2*x1 - 3 with no intercept column
X <- matrix(c(2, 1, 1, -1, 3, 3, 0, -3), ncol = 2, byrow=TRUE)

X
#     [,1] [,2]
#[1,]    2    1
#[2,]    1   -1
#[3,]    3    3
#[4,]    0   -3


t(X) %*% X
#     [,1] [,2]
#[1,]   14   10
#[2,]   10   20
# Can you see how this matrix is related to the previous one, and why?

round(det(t(X) %*% X), digits = 9)
#180
# Non-zero determinant so X'X is invertible

(4) Il termine di intercettazione e la somma di più variabili è fisso

# x1 represents intercept term
# x2 + x3 = 10
X <- matrix(c(1, 2, 8, 1, 1, 9, 1, 3, 7, 1, 0, 10), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    2    8
#[2,]    1    1    9
#[3,]    1    3    7
#[4,]    1    0   10


t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    4    6   34
#[2,]    6   14   46
#[3,]   34   46  294

round(det(t(X) %*% X), digits = 9)
#0

# NB if we drop the intercept, then columns now linearly independent
# x1 + x2 = 10 with no intercept column
X <- matrix(c(2, 8, 1, 9, 3, 7, 0, 10), ncol = 2, byrow=TRUE)

X
#     [,1] [,2]
#[1,]    2    8
#[2,]    1    9
#[3,]    3    7
#[4,]    0   10

t(X) %*% X
#     [,1] [,2]
#[1,]   14   46
#[2,]   46  294
# Can you see how this matrix is related to the previous one, and why?

round(det(t(X) %*% X), digits = 9)
#2000
# Non-zero determinant so X'X is invertible

(4a) Termine di intercettazione con trappola variabile fittizia

# x1 represents intercept term
# x2 + x3 + x4 = 1
X <- matrix(c(1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0), ncol = 4, byrow=TRUE)

X
#     [,1] [,2] [,3] [,4]
#[1,]    1    0    0    1
#[2,]    1    1    0    0
#[3,]    1    0    1    0
#[4,]    1    1    0    0
#[5,]    1    0    1    0

t(X) %*% X
#     [,1] [,2] [,3] [,4]
#[1,]    5    2    2    1
#[2,]    2    2    0    0
#[3,]    2    0    2    0
#[4,]    1    0    0    1
# This matrix has a very natural interpretation - can you work it out?

round(det(t(X) %*% X), digits = 9)
#0

# NB if we drop the intercept, then columns now linearly independent
# x1 + x2 + x3 = 1 with no intercept column
X <- matrix(c(0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0), ncol = 3, byrow=TRUE)  

X
#     [,1] [,2] [,3]
#[1,]    0    0    1
#[2,]    1    0    0
#[3,]    0    1    0
#[4,]    1    0    0
#[5,]    0    1    0

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    2    0    0
#[2,]    0    2    0
#[3,]    0    0    1
# Can you see how this matrix is related to the previous one?

round(det(t(X) %*% X), digits = 9)
#4
# Non-zero determinant so X'X is invertible

(5) Due sottoinsiemi di variabili con somma fissa

# No intercept term needed
# x1 + x2 = 1
# x3 + x4 = 1
X <- matrix(c(0,1,0,1,1,0,0,1,0,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0), ncol = 4, byrow=TRUE)

X
#     [,1] [,2] [,3] [,4]
#[1,]    0    1    0    1
#[2,]    1    0    0    1
#[3,]    0    1    1    0
#[4,]    1    0    0    1
#[5,]    1    0    1    0
#[6,]    0    1    1    0

t(X) %*% X
#     [,1] [,2] [,3] [,4]
#[1,]    3    0    1    2
#[2,]    0    3    2    1
#[3,]    1    2    3    0
#[4,]    2    1    0    3
# This matrix has a very natural interpretation - can you work it out?

round(det(t(X) %*% X), digits = 9)
#0

(6) Una variabile è una combinazione lineare di altre

# No intercept term
# x3 = x1 + 2*x2
X <- matrix(c(1,1,3,0,2,4,2,1,4,3,1,5,1,2,5), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    1    3
#[2,]    0    2    4
#[3,]    2    1    4
#[4,]    3    1    5
#[5,]    1    2    5

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]   15    8   31
#[2,]    8   11   30
#[3,]   31   30   91

round(det(t(X) %*% X), digits = 9)
#0

(7) Una variabile è costante e zero

# No intercept term
# x3 = 0
X <- matrix(c(1,1,0,0,2,0,2,1,0,3,1,0,1,2,0), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    1    0
#[2,]    0    2    0
#[3,]    2    1    0
#[4,]    3    1    0
#[5,]    1    2    0

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]   15    8    0
#[2,]    8   11    0
#[3,]    0    0    0

round(det(t(X) %*% X), digits = 9)
#0

(8) Termine di intercettazione e una variabile costante

# x1 is intercept term, x3 = 5
X <- matrix(c(1,1,5,1,2,5,1,1,5,1,1,5,1,2,5), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    1    5
#[2,]    1    2    5
#[3,]    1    1    5
#[4,]    1    1    5
#[5,]    1    2    5

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]    5    7   25
#[2,]    7   11   35
#[3,]   25   35  125

round(det(t(X) %*% X), digits = 9)
#0

(9) Due variabili costanti

# No intercept term, x2 = 2, x3 = 5
X <- matrix(c(1,2,5,2,2,5,1,2,5,1,2,5,2,2,5), ncol = 3, byrow=TRUE)

X
#     [,1] [,2] [,3]
#[1,]    1    2    5
#[2,]    2    2    5
#[3,]    1    2    5
#[4,]    1    2    5
#[5,]    2    2    5

t(X) %*% X
#     [,1] [,2] [,3]
#[1,]   11   14   35
#[2,]   14   20   50
#[3,]   35   50  125

round(det(t(X) %*% X), digits = 9)
#0

(10)k>n

# Design matrix has 4 columns but only 3 rows
X <- matrix(c(1,1,1,1,1,2,4,8,1,3,9,27), ncol = 4, byrow=TRUE)

X
#     [,1] [,2] [,3] [,4]
#[1,]    1    1    1    1
#[2,]    1    2    4    8
#[3,]    1    3    9   27

t(X) %*% X
#     [,1] [,2] [,3] [,4]
#[1,]    3    6   14   36
#[2,]    6   14   36   98
#[3,]   14   36   98  276
#[4,]   36   98  276  794

round(det(t(X) %*% X), digits = 9)
#0

4

Alcuni esempi banali per aiutare l'intuizione:

  1. x1 è l'altezza in centimetri. è l'altezza in metri. Poi: x2
    • x1=100x2 e la tua matrice di progettazione non avrà colonne linearmente indipendenti.X
  2. x1=1 (ovvero includi una costante nella tua regressione), è la temperatura in fahrenheit e è la temperatura in gradi centigradi. Poi: x2x3
    • x2=95x3+32x1 e la tua matrice di disegno non avrà colonne linearmente indipendenti.X
  3. Tutti iniziano la scuola all'età di 5 anni, (ovvero il valore costante di 1 in tutte le osservazioni), è anni di scuola, è età e nessuno ha lasciato la scuola. Poi: x1=1x2x3
    • Xx2=x35x1 e la tua matrice di progettazione non avrà colonne linearmente indipendenti.X

Esistono molti modi in cui una colonna di dati sarà una funzione lineare degli altri dati. Alcuni di essi sono evidenti (ad es. Metri contro centimetri) mentre altri possono essere più sottili (ad es. Età e anni di scolarizzazione per i bambini più piccoli).

Note notazionali: indica la prima colonna di , la seconda colonna ecc ... e indica un vettore di quelli, che è ciò che è incluso nella matrice di progettazione X se includi una costante nella tua regressione. X x 2 1x1Xx21


1
L'esempio di scolarizzazione ed età è molto buono, anche se vale la pena sottolineare che la relazione è valida solo mentre tutti sono ancora a scuola! L'estensione logica di ciò è quando hai l'età, gli anni di scuola e gli anni di lavoro, che possono continuare la relazione oltre la laurea. (Naturalmente in pratica tale multicollinearità tende raramente a essere perfetta - ci sono sempre delle eccezioni, come i bambini che hanno iniziato la scuola in un'età diversa perché provenivano da un paese diverso - ma spesso è piuttosto grave.)
Silverfish

@Silverfish buoni punti! Ho appena apportato alcune modifiche / correzioni.
Matthew Gunn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.