Warum scheitert diese Regression NICHT an perfekter Multikollinearität, obwohl eine Variable eine lineare Kombination von anderen ist?

15

Heute habe ich mit einem kleinen Datensatz herumgespielt und eine einfache OLS-Regression durchgeführt, von der ich erwartet hatte , dass sie aufgrund perfekter Multikollinearität fehlschlägt. Das tat es jedoch nicht. Dies impliziert, dass mein Verständnis von Multikollinearität falsch ist.

Meine Frage ist: Wo irre ich mich?


Ich denke, ich kann zeigen, dass eine meiner Variablen eine lineare Kombination der anderen ist. Dies sollte zu einer Regressormatrix führen, die keinen vollen Rang hat, und daher sollten die Koeffizienten nicht identifiziert werden.

Ich habe einen kleinen reproduzierbaren Datensatz generiert (Code unten) :

   exporter importer      flow     dist intraUS
1    Canada   Canada  996.8677 6.367287       0
2   Florida   Canada  995.8219 9.190562       0
3     Texas   Canada 1001.6475 4.359063       0
4    Mexico   Canada 1002.4371 7.476649       0
5    Canada  Florida 1002.8789 5.389223       0
6   Florida  Florida 1007.5589 6.779686       1
7     Texas  Florida  996.8938 1.570600       1
8    Mexico  Florida 1005.6247 5.910133       0
9    Canada    Texas  999.9190 7.887672       0
10  Florida    Texas 1004.1061 7.187803       1
11    Texas    Texas 1004.5949 7.564273       1
12   Mexico    Texas 1000.3728 2.021297       0
13   Canada   Mexico 1003.0991 5.887743       0
14  Florida   Mexico  999.2210 3.058495       0
15    Texas   Mexico  997.6092 6.835883       0
16   Mexico   Mexico 1006.7934 5.794425       0

Jedes Mal , Exporteur und Importeur sind US - Bundesstaaten, die Attrappe intraUSist 1.

Jetzt führe ich eine Regression von (Trade) flows auf exporterund importerDummies, distAnce und intraUSDummy durch. Wenn Sie R mit der folgenden Formel lm(flow ~ dist + exporter + importer + intraUS, data = dat)eingeben, werden Schätzungen für alle Koeffizienten ohne fehlende Werte oder Warnungen zur Singularität zurückgegeben:

(Intercept)            dist exporterFlorida   exporterTexas  exporterMexico importerFlorida   importerTexas  importerMexico        intraUS1 
995.1033157       0.5744661      -1.2340338      -1.8792073       3.7375783       3.0361727       1.3256032       3.3225512       4.2429599

Dieses Rätsel mir, weil die Regressormatrix zeigt deutlich , dass intraUSeine lineare Kombination von exporterFlorida, importerFlorida, exporterTexasund importerTexas:

> mmat <- data.frame(model.matrix(lm(flow ~ dist + exporter + importer + intraUS, data = dat)))

   X.Intercept.     dist exporterFlorida exporterTexas exporterMexico importerFlorida importerTexas importerMexico intraUS1
1             1 6.367287               0             0              0               0             0              0        0
2             1 9.190562               1             0              0               0             0              0        0
3             1 4.359063               0             1              0               0             0              0        0
4             1 7.476649               0             0              1               0             0              0        0
5             1 5.389223               0             0              0               1             0              0        0
6             1 6.779686               1             0              0               1             0              0        1
7             1 1.570600               0             1              0               1             0              0        1
8             1 5.910133               0             0              1               1             0              0        0
9             1 7.887672               0             0              0               0             1              0        0
10            1 7.187803               1             0              0               0             1              0        1
11            1 7.564273               0             1              0               0             1              0        1
12            1 2.021297               0             0              1               0             1              0        0
13            1 5.887743               0             0              0               0             0              1        0
14            1 3.058495               1             0              0               0             0              1        0
15            1 6.835883               0             1              0               0             0              1        0
16            1 5.794425               0             0              1               0             0              1        0

Die Berechnung exporterFlorida * importerFlorida + exporterFlorida * importerTexas + exporterTexas * importerFlorida + exporterTexas * importerTexasergibt - nicht überraschend - genau die Werte in intraUS1.

Meine Frage lautet also erneut : Warum scheitert diese Regression nicht , da eine Variable eine lineare Kombination der anderen ist?


Unterhalb des vollständigen Codes wird die Schätzung wiedergegeben:

## Generate data ####

set.seed(1)
states <- c("Canada", "Florida", "Texas", "Mexico")
dat <- expand.grid(states, states)
colnames(dat) <- c("exporter", "importer")

dat[, "flow"] <- NA
dat[, "dist"] <- NA
dat[, "intraUS"] <- 0

for (i in 1:nrow(dat)) {
  dat[i, c("flow", "dist")] <- c(rnorm(1, mean = 1000, sd = 5), rnorm(1, mean = 6, sd = 2))
  if (dat[i, "exporter"] %in% states[2:3] && dat[i, "importer"] %in% states[2:3]) {
    dat[i, "intraUS"] <- 1
  }
}
dat$intraUS <- factor(dat$intraUS)

## Run regression - works! ####

summary(lm(flow ~ dist + exporter + importer + intraUS, data = dat))

## Show that "intraUS1" is a linear combination of the dummies. ####

mmat <- data.frame(model.matrix(lm(flow ~ dist + exporter + importer + intraUS, data = dat)))

cbind(mmat, test = with(mmat,
                        exporterFlorida * importerFlorida + exporterFlorida * importerTexas +
                        exporterTexas * importerFlorida + exporterTexas * importerTexas
                        ))[, c("intraUS1", "test")]
CL.
quelle
9
Downvoter, würde es Ihnen etwas ausmachen zu erklären, was ich falsch gemacht habe? Ich bin nicht so vertraut mit Crossvalidated und würde gerne wissen, was mit dieser Frage nicht stimmt, damit ich es beim nächsten Mal besser machen kann.
CL.

Antworten:

30

exporterFlorida * importerFlorida + exporterFlorida * importerTexas + exporterTexas * importerFlorida + exporterTexas * importerTexas

Dies ist nicht eine lineare Kombination exporterFlorida, importerFlorida, importerTexasund exporterTexas. In einer linearen Kombination müssen die Koeffizienten der Vektoren Konstanten sein . Also sowas wie

2*importerFlorida + 3*importerTexas - exporterFlorida - 2*exporterTexas

ist eine lineare Kombination.

Was Sie vielleicht haben, könnte man eine quadratische Kombination nennen, aber das erweitert die Terminologie auf "Ich mache Sachen".

Matthew Drury
quelle
2
Verdammt… das ist die Strafe dafür, nie einen Mathematikkurs besucht zu haben, sondern stattdessen mit Statistik zu beginnen. Vielen Dank!
CL.
4
Keine Bange. Dafür sind wir da!
Matthew Drury