प्रतिगमन में गुणात्मक चर कोडिंग "विलक्षणता" की ओर जाता है


17

मेरे पास "गुणवत्ता" नामक एक स्वतंत्र चर है; इस चर में प्रतिक्रिया के 3 तौर-तरीके हैं (खराब गुणवत्ता; मध्यम गुणवत्ता; उच्च गुणवत्ता)। मैं इस स्वतंत्र चर को अपने कई रैखिक प्रतिगमन में पेश करना चाहता हूं। जब मेरे पास एक द्विआधारी स्वतंत्र चर (डमी चर ) होता है , तो मैं कोड कर सकता हूं 0/ 1) इसे कई रैखिक प्रतिगमन मॉडल में पेश करना आसान है।

लेकिन प्रतिक्रिया के 3 तौर-तरीकों के साथ, मैंने इस चर को इस तरह कोड करने की कोशिश की है:

Bad quality      Medium quality      High quality

     0                1                  0
     1                0                  0
     0                0                  1
     0                1                  0

लेकिन एक समस्या यह है कि जब मैं अपने कई रैखिक प्रतिगमन करने की कोशिश करता हूं: विनय Medium qualityमुझे देता है NA:

Coefficients: (1 not defined because of singularities) 

मैं 3 प्रकार के साथ इस चर "गुणवत्ता" को कैसे कोड कर सकता हूं? क्या मुझे एक कारक ( factorमें R) के रूप में एक चर बनाना होगा लेकिन फिर क्या मैं इस कारक को कई रैखिक प्रतिगमन में पेश कर सकता हूं?


2
शायद मैं इस प्रश्न को गलत समझ रहा हूं, लेकिन आप एक श्रेणीबद्ध चर के सभी स्तरों को एक रेखीय प्रतिगमन में परिपूर्ण कोलाइडरिटी के कारण शामिल नहीं कर सकते हैं। एक आधार समूह प्रदान करने के लिए आपकी एक श्रेणी को गिरा दिया जाएगा, जिसके खिलाफ अन्य समूहों की तुलना की जाती है।
रिकीबी

1
यहां एक विलक्षण मैट्रिक्स का गठन करने वाले सांख्यिकीय संदर्भ में एक उत्कृष्ट व्याख्या है: क्या-सहसंबंध-एक-मैट्रिक्स-एकवचन?
गूँज - मोनिका

जवाबों:


23

आपके द्वारा की जा रही समस्या (यानी, "विलक्षणता") को बहुरूपता के उदाहरण के रूप में सोचा जा सकता है । बहुसंख्यात्मकता को अक्सर इस प्रकार परिभाषित किया जाता है:

एक या एक से अधिक प्रेडिक्टर वैरिएबल अन्य प्रेडिक्टर वैरिएबल्स का रैखिक संयोजन है।

यह वास्तव में, बल्कि एक सख्त परिभाषा है; यह एकदम सही बहुसंस्कृति है, और आप आसानी से अपने किसी भी चर के बिना बहुसांस्कृतिकता के साथ एक समस्या हो सकती है जो दूसरों के पूर्ण रैखिक संयोजन हैं। इसके अलावा, एकदम सही बहुरूपता शायद ही कभी होता है। हालाँकि, आपने एक ऐसे मामले में ठोकर खाई है जहाँ यह हो सकता है। आइए हम देखते हैं कि हम कर सकते हैं पूरी तरह से भविष्यवाणी medium qualityअन्य दो श्रेणियों के हमारे ज्ञान से (हम एक प्रतिगमन मॉडल जहां के साथ यह करूँगा medium qualityहै , और और कर रहे हैं एक्स 1 और एक्स 2 , क्रमशः): वाई = β 0 + βYbad qualityhigh qualityX1X2
नोट है कि वहाँ कोई त्रुटि अवधि, = 1 , बाहर रद्द जो β 0 ( 1

Y=β0+β1X1+β2X2
,, निर्दिष्ट क्योंकि हम इस पूरी तरह से भविष्यवाणी कर सकते हैं। ऐसा करने के लिए, हम सेट β 0 = 1 , बीटा 1 = - 1 , और β 2 = - 1 । अब, जब आपके पास है, तो एक्स 1εβ0=1β1=1β2=1bad qualityX1=1β0 ), और एक्स 2 = 0 ताकि यह शब्द बाहर भी रद्द हो जाए ( - 1 × 0 )। इस प्रकार, हम Y के लिए 0 के अनुमानित मूल्य के साथ बचे हैं(1+1×1X2=01×00Ymedium quality ) के , जो बिल्कुल सही है। मैं इसे अन्य संभावनाओं (यह हमेशा काम करता है, आपके मामले में) को बाहर करने के लिए आपके पास छोड़ दूँगा।

तो फिर आपको क्या करना चाहिए? एक श्रेणीगत चर का प्रतिनिधित्व करते समय, हम आम तौर पर उपयोग करते हैं0R , तो आप उपयोग कर सकते हैं एक factorऔरR आपके लिए यह सब करेगा - यह सही ढंग से किया जाएगा, और यह बहुत अधिक सुविधाजनक है - फिर भी, यह समझने योग्य है कि यह वही है जो 'पर्दे के पीछे' हो रहा है।


आपके सभी कमेंट के लिए शुक्रिया ! मैं R का उपयोग कर रहा हूँ अगर मैं अच्छी तरह से समझ गया, तो एक कारक R सब कुछ कर देगा, मुझे कुछ भी करने की आवश्यकता नहीं है! उत्तम ! एक बार और टैंक!
varin sacha

यदि आप lmसूत्र में शून्य को इंटरसेप्ट पर सेट करते हैं (तो + 0) यह काम करेगा?
फायरबग

1
@ फ़ायरबग, यदि आप स्तर का उपयोग कर रहे हैं कोडिंग (यानी, आपके पास हर स्तर के लिए एक अलग चर है), तो आप अवरोधन को शून्य पर सेट कर सकते हैं और इसे ठीक काम करना चाहिए। यद्यपि चर गुणांक और परिकल्पना परीक्षणों के अर्थ अलग-अलग होंगे।
गंग -

10

@ गूंग ने सिद्धांत को स्पष्ट रूप से समझाया है। यहाँ उदाहरण के लिए एक व्यावहारिक उदाहरण दिया गया है:

set.seed(1)
pred1 <- factor(c("bad", "med", "high"), levels=c("bad", "med", "high"))
df1 <- data.frame(y=20*abs(runif(6)),
                  x=rnorm(6),
                  q=sample(pred1, 6, replace=TRUE)
                  )
l1 <- lm(y ~ x, data=df1)
### add variable q    
l2 <- lm(y ~ x + q, data=df1)
### look at dummy variables generated in creating model
model.matrix(l2)

0bad

  (Intercept)          x qmed qhigh
1           1  1.5952808    1     0
2           1  0.3295078    0     1
3           1 -0.8204684    0     1
4           1  0.4874291    0     0
5           1  0.7383247    1     0
6           1  0.5757814    0     0

अब अगर हम डमी चर को स्वयं कोड करते हैं और उन सभी का उपयोग करके एक मॉडल को फिट करने का प्रयास करते हैं:

df1 <- within(df1, {
       qbad <- ifelse(q=="bad", 1, 0)
       qmed <- ifelse(q=="med", 1, 0)
       qhigh <- ifelse(q=="high", 1, 0)
       })    
lm(y ~ x + qbad + qmed + qhigh, data=df1, singular.ok=FALSE)

हमें अपेक्षित त्रुटि मिलती है: singular fit encountered


1
अभिराम। उम्मीद है कि अब यह सब स्पष्ट हो जाएगा। factorआम तौर पर आपके लिए डमी वैरिएबल कोडिंग का ध्यान रखेगा, लेकिन यह जानने के लिए अच्छा होगा कि 'हुड के तहत' क्या चल रहा है।
डार्डीस्को
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.