Tại sao hồi quy này KHÔNG thất bại do tính đa hình hoàn hảo, mặc dù một biến là sự kết hợp tuyến tính của các biến khác?


15

Hôm nay, tôi đã chơi xung quanh với một tập dữ liệu nhỏ và thực hiện một hồi quy OLS đơn giản mà tôi dự kiến ​​sẽ thất bại do tính đa hình hoàn hảo. Tuy nhiên, nó đã không. Điều này ngụ ý rằng sự hiểu biết của tôi về đa cộng đồng là sai.

Câu hỏi của tôi là: Trong trường hợp tôi sai?


Tôi nghĩ rằng tôi có thể chỉ ra rằng một trong các biến của tôi là sự kết hợp tuyến tính của các biến khác. Điều này sẽ dẫn đến một ma trận hồi quy không có thứ hạng đầy đủ và do đó không nên xác định các hệ số.

Tôi đã tạo một bộ dữ liệu tái sản xuất nhỏ (mã bên dưới) :

   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

Mỗi lần xuất khẩu và nhập khẩu là tiểu bang Hoa Kỳ, hình nộm intraUS1.

Bây giờ tôi thực hiện một hồi quy của (thương mại) flowtrên exportervà các hình importernộm, distance và hình intraUSnộm. Cho ăn R với công thức sau đây lm(flow ~ dist + exporter + importer + intraUS, data = dat)trả về ước tính cho tất cả các hệ số, không thiếu các giá trị hoặc cảnh báo về điểm kỳ dị:

(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

Câu đố này với tôi, bởi vì ma trận regressor cho thấy rõ ràng rằng intraUSlà sự kết hợp tuyến tính của exporterFlorida, importerFlorida, exporterTexasimporterTexas:

> 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

Tính toán exporterFlorida * importerFlorida + exporterFlorida * importerTexas + exporterTexas * importerFlorida + exporterTexas * importerTexascho - không đáng ngạc nhiên - chính xác các giá trị trong intraUS1.

Vì vậy, câu hỏi của tôi là, một lần nữa : Tại sao hồi quy này không thất bại, cho rằng một biến là một tổ hợp tuyến tính của các biến khác?


Dưới mã hoàn chỉnh, tái tạo dự toán:

## 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")]

9
Downvoters, bạn có phiền giải thích những gì tôi đã làm sai? Tôi không quá quen thuộc với Crossvalidated và muốn biết có gì sai với câu hỏi này, vì vậy tôi có thể làm tốt hơn vào lần sau.
CL.

Câu trả lời:


30

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

Đây là không một sự kết hợp tuyến tính của exporterFlorida, importerFlorida, importerTexasexporterTexas. Trong một tổ hợp tuyến tính, các hệ số của vectơ phải là hằng số . Vì vậy, một cái gì đó như

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

sự kết hợp tuyến tính.

Những gì bạn có thể có thể được gọi là sự kết hợp bậc hai, nhưng đó là thuật ngữ kéo dài thành vùng đất "Tôi đang tạo ra".


2
Chết tiệt, đây là hình phạt cho việc không bao giờ tham gia một khóa học toán mà thay vào đó bắt đầu bằng số liệu thống kê. Cảm ơn bạn!
CL.

4
Đừng lo lắng. Đó là những gì chúng tôi ở đây!
Matthew Drury
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.