मॉडल.मेट्रिक्स में इंटरसेप्ट कॉलम पहले कारक को क्यों बदलता है?


9

मैं अपने कारक कॉलम को डमी चरों में बदलने की कोशिश कर रहा हूं:

str(cards$pointsBin)
# Factor w/ 5 levels ".lte100",".lte150",..: 3 2 3 1 4 4 2 2 4 4 ...

labels <- model.matrix(~ pointsBin, data=cards)

head(labels)

#     (Intercept) pointsBin.lte150 pointsBin.lte200 pointsBin.lte250 pointsBin.lte300
# 741           1                0                0                0                0
# 407           1                1                0                0                0
# 676           1                0                0                1                0
# 697           1                1                0                0                0
# 422           1                0                1                0                0
# 300           1                0                1                0                0

मेरे कारक के पहले मान के लिए कोई कॉलम नहीं है ( ".lte100"), जो कि पहली पंक्ति को श्रेणीबद्ध किया जाना चाहिए। मुझे यह डेटा वापस कैसे मिलेगा? और जो इंटरसेप्ट कॉलम है वह सभी 1 का मतलब लगता है?


3
जब आपके पास "K" डमी वैरिएबल होते हैं तो आपके परिणामी मॉडल में a।) इंटरसेप्ट टर्म (जो कि एक कॉलम होता है) और b।) "K-1" अतिरिक्त कॉलम होते हैं। इसका कारण यह है अन्यथा अन्यथा परिणामी मैट्रिक्स के कॉलम रैखिक रूप से स्वतंत्र नहीं होंगे (और, परिणामस्वरूप, आप ओएलएक्स नहीं कर पाएंगे )।
स्टीव एस

2
'सार्थक' क्यों नहीं? यह फिट की एक ही अच्छाई के साथ एक ही मॉडल है, बस एक अलग तरीके से पैरामीटर किया गया है।
वोल्फगैंग

2
@digitgopher: जब आप एक प्रतिगमन चलाते हैं और इस तरह एक मॉडल के साथ समाप्त होते हैं: , तो आप तकनीकी रूप से एक मॉडल के साथ समाप्त कर रहे हैं जैसे यह: , जहां यह नया शब्द हमेशा "1" के बराबर होता है (इसलिए स्तंभ का स्तंभ वाले)। यदि आप एक नियमित प्रतिगमन को चलाने के दौरान लोगों के इस स्तंभ को समाप्त करने के लिए थे, तो आप एक पक्षपाती मॉडल के साथ समाप्त हो जाएंगे, क्योंकि आप वास्तव में, मूल के माध्यम से हर एक मॉडल को मजबूर करते हैं। y^=β0+β1*एक्स1y^=β0*एक्स0+β1*एक्स1एक्स0
स्टीव एस।

2
@SteveS: वास्तव में आर के अनुकूल है कि यदि आप अवरोधन को हटाने की कोशिश - 1करते हैं, जब आपके पास एक एकल श्रेणीगत भविष्यवाणियां एक कारक के रूप में प्रतिनिधित्व की जाती हैं (जैसा कि इस प्रश्न में है), तो यह मान लेंगे कि आप वास्तव में इसका मतलब नहीं है और राशि का उपयोग करने के लिए स्विच करते हैं- से-शून्य कोडिंग; जो निश्चित रूप से एक अलग पैरामीरीज़ेशन है। बहुत दोस्ताना, अगर आप मुझसे पूछें।
Scortchi - को पुनः स्थापित मोनिका

2
@SteveS: धन्यवाद। मुझे जाँच करनी चाहिए: यह सेल-मतलब कोडिंग पर स्विच करता है। यह वह नहीं करता है जो आप उम्मीद कर सकते हैं, जो कि मजबूर-थ्रू-ओरिजिनल मॉडल के लिए उपयुक्त है जिसे आप सही तरीके से चेतावनी देते हैं (यह हालांकि, जब संख्यात्मक प्रकार का कॉलम होता है)।
स्कॉर्टची -

जवाबों:


10

निम्नलिखित को धयान मे रखते हुए:

require(mlbench)

data(HouseVotes84, package = "mlbench")
head(HouseVotes84)

labels <- model.matrix(~ V1, data=HouseVotes84)
head(labels)

labels1 <- model.matrix(~ V1+1, data=HouseVotes84)
head(labels1)

labels0 <- model.matrix(~ V1+0, data=HouseVotes84)
head(labels0)

labels_1 <- model.matrix(~ V1-1, data=HouseVotes84)
head(labels_1)

पहले दो कमांड समान हैं। अंतिम दो आदेश इंटरसेप्ट का उत्पादन नहीं करने के लिए निर्दिष्ट करते हैं और दो डमी चर का उत्पादन करते हैं।


1
धन्यवाद - यह उस कोड की व्याख्या करता है जो मैं चाहता था। लेकिन यह यह नहीं समझाता कि मुझे समझने में मदद क्यों या करना चाहिए।
डिजिटोफर

2
@digitgopher: संदर्भ-स्तरीय कोडिंग और अन्य कोडिंग योजनाओं की व्याख्या के लिए ats.ucla.edu/stat/r/library/contrast_coding.htm देखें ।
Scortchi - को पुनः स्थापित मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.