하나의 변수가 다른 변수의 선형 조합이지만 완벽한 다중 공선 성으로 인해이 회귀가 실패하지 않는 이유는 무엇입니까?


15

오늘은 작은 데이터 세트로 놀고 있었고 완벽한 다중 공선 성으로 인해 실패 할 것으로 예상 되는 간단한 OLS 회귀를 수행했습니다 . 그러나 그렇지 않았습니다. 이것은 다중 공선성에 대한 나의 이해가 잘못되었음을 의미합니다.

내 질문은 : 내가 어디 잘못입니까?


내 변수 중 하나가 다른 변수의 선형 조합임을 보여줄 수 있다고 생각합니다. 이것은 전체 순위가없는 회귀 행렬로 이어 ​​지므로 계수를 식별해서는 안됩니다.

작은 재현 가능한 데이터 세트 (아래 코드)를 생성했습니다 .

   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

수출업자와 수입업자가 미국 주마다, 더미 intraUS1입니다.

지금은 (무역)의 회귀를 수행 flow에이야 exporterimporter인형, distANCE와 intraUS더미. 다음 공식을 사용하여 R을 공급하면 lm(flow ~ dist + exporter + importer + intraUS, data = dat)모든 계수에 대한 추정값, 결 측값 또는 특이성에 대한 경고가 표시되지 않습니다.

(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

이 퍼즐 날의 회귀 행렬이 명확하게 나타 내기 때문에 intraUS의 선형 조합 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

계산 exporterFlorida * importerFlorida + exporterFlorida * importerTexas + exporterTexas * importerFlorida + exporterTexas * importerTexas은 놀랍지 않게 정확하게의 값을 제공 intraUS1합니다.

그래서 내 질문은 다시 한 번 : 한 변수가 다른 변수의 선형 조합이기 때문에 왜이 회귀 실패하지 않습니까?


완전한 코드 아래에서 추정을 재현하십시오.

## 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, 내가 잘못한 것을 설명해 주시겠습니까? Crossvalidated에 익숙하지 않으며이 질문의 문제점을 알고 싶습니다. 따라서 다음에 더 잘할 수 있습니다.
CL.

답변:


30

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

입니다 하지 의 선형 조합 exporterFlorida, importerFlorida, importerTexasexporterTexas. 선형 조합에서 벡터 계수는 상수 여야합니다 . 그래서 같은

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

선형 조합.

당신은 아마도 이차 조합이라고 부를 수 있지만 그것은 용어를 "나는 물건을 만들고있다"땅으로 확장하고 있습니다.


2
젠장… 이것은 수학 과정에 참석 한 적이 없지만 통계로 시작한 것에 대한 처벌입니다. 감사합니다!
CL.

4
걱정 마. 그것이 우리가 여기있는 것입니다!
Matthew Drury
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.