परफेक्ट मल्टीकोलिनरिटी के कारण यह प्रतिगमन विफल क्यों नहीं होता है, हालांकि एक चर दूसरों के रैखिक संयोजन है?


15

आज, मैं एक छोटे से डेटासेट के साथ खेल रहा था और एक साधारण ओएलएस प्रतिगमन का प्रदर्शन किया, जिसकी मुझे उम्मीद थी कि सही बहुस्तरीयता के कारण मैं असफल रहा । हालाँकि, यह नहीं था। इसका तात्पर्य यह है कि मेरी बहुसंस्कृति की समझ गलत है।

मेरा सवाल है: मैं गलत कहाँ हूँ?


मुझे लगता है कि मैं दिखा सकता हूं कि मेरा एक चर दूसरों का एक रैखिक संयोजन है। इससे एक प्रतिगामी मैट्रिक्स को जन्म देना चाहिए जिसकी कोई पूर्ण रैंक नहीं है और इस प्रकार गुणांक की पहचान नहीं की जानी चाहिए।

मैंने एक छोटा प्रजनन योग्य डेटासेट उत्पन्न किया (नीचे कोड) :

   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

हर बार निर्यातक और आयातक अमेरिकी राज्य हैं, डमी intraUSहै 1

अब मैं (व्यापार) की एक प्रतिगमन प्रदर्शन flowपर है exporterऔर importerdummies, distमंजूरी और intraUSडमी। निम्नलिखित फार्मूले के साथ आर खिलाना 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

यह पहेली मुझे, क्योंकि regressor मैट्रिक्स स्पष्ट रूप से इंगित करता है कि intraUSकी एक रेखीय संयोजन है exporterFlorida, importerFlorida, exporterTexasऔर 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

गणना 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
डाउनवोटर्स, क्या आप यह बताएंगे कि मैंने क्या गलत किया? मैं Crossvalidated से इतना परिचित नहीं हूं और जानना चाहूंगा कि इस प्रश्न में क्या गलत है, इसलिए मैं अगली बार बेहतर कर सकता हूं।
सीएल।

जवाबों:


30

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

यह वह जगह है नहीं की एक रैखिक संयोजन exporterFlorida, importerFlorida, importerTexasऔर exporterTexas। एक रैखिक संयोजन में, वैक्टर के गुणांक स्थिर होना चाहिए । तो कुछ ऐसा है

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

है एक रैखिक संयोजन।

आपके पास संभवतः एक द्विघात संयोजन कहा जा सकता है, लेकिन यह "मैं सामान बना रहा हूं" भूमि में शब्दावली खींच रहा है।


2
धिक्कार है ... यह एक गणित पाठ्यक्रम में भाग लेने के बजाय कभी आंकड़ों के साथ शुरू करने की सजा है। धन्यवाद!
सीएल।

4
कोई चिंता नहीं। यही कारण है कि हम यहाँ हैं!
मैथ्यू पारा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.