Mengapa regresi ini TIDAK gagal karena multikolinieritas sempurna, walaupun satu variabel adalah kombinasi linear dari yang lain?

15

Hari ini, saya bermain-main dengan dataset kecil dan melakukan regresi OLS sederhana yang saya harapkan gagal karena multikolinieritas sempurna. Namun, ternyata tidak. Ini menyiratkan bahwa pemahaman saya tentang multikolinieritas salah.

Pertanyaan saya adalah: Di mana saya salah?


Saya pikir saya dapat menunjukkan bahwa salah satu variabel saya adalah kombinasi linear dari yang lain. Ini harus mengarah ke matriks regressor yang tidak memiliki peringkat penuh dan dengan demikian koefisien tidak boleh diidentifikasi.

Saya menghasilkan dataset kecil yang dapat direproduksi (kode di bawah) :

   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

Setiap kali eksportir dan importir adalah negara bagian AS, boneka intraUSitu 1.

Sekarang saya melakukan regresi (perdagangan) flows pada exporterdan importerdummies, distAnce dan intraUSdummy. Memberi makan R dengan rumus berikut lm(flow ~ dist + exporter + importer + intraUS, data = dat)menghasilkan taksiran untuk semua koefisien, tidak ada nilai yang hilang atau peringatan tentang singularitas:

(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

Teka-teki ini saya, karena matriks regressor jelas menunjukkan bahwa intraUSadalah kombinasi linear dari exporterFlorida, importerFlorida, exporterTexasdan 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

Menghitung exporterFlorida * importerFlorida + exporterFlorida * importerTexas + exporterTexas * importerFlorida + exporterTexas * importerTexasmemberi - tidak mengherankan - persis nilai dalam intraUS1.

Jadi pertanyaan saya adalah, lagi : Mengapa regresi ini tidak gagal, mengingat bahwa satu variabel adalah kombinasi linear dari yang lain?


Di bawah kode lengkap mereproduksi estimasi:

## 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.
sumber
9
Para downvoters, maukah Anda menjelaskan apa yang saya lakukan salah? Saya tidak begitu akrab dengan Crossvalidated dan ingin tahu apa yang salah dengan pertanyaan ini, jadi saya bisa melakukan yang lebih baik di lain waktu.
CL.

Jawaban:

30

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

Ini bukan kombinasi linear dariexporterFlorida , importerFlorida, importerTexasdan exporterTexas. Dalam kombinasi linear, koefisien vektor harus berupa konstanta . Jadi sesuatu seperti itu

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

adalah kombinasi linear.

Apa yang Anda miliki mungkin bisa disebut kombinasi kuadrat, tapi itu merentang terminologi menjadi tanah "Aku mengada-ada".

Matthew Drury
sumber
2
Sial ... ini adalah hukuman karena tidak pernah menghadiri kursus matematika tetapi mulai dengan statistik sebagai gantinya. Terima kasih!
CL.
4
Jangan khawatir. Untuk itulah kami di sini!
Matthew Drury