आर में, सूत्र वस्तु प्रतीकात्मक है और यह पार्स करना मुश्किल लगता है। हालांकि, मैं आरबाहरी उपयोग के लिए प्रतीकात्मक सूत्र की व्याख्या करने के लिए आर का उपयोग
(1)
f
दे के बाहर उपयोग के लिए लेबल की एक स्पष्ट सेट में इस तरह के एक सूत्र पार्स करने के लिए की जरूरत है model formulae जिसमें एक प्रतिक्रिया निर्दिष्ट नहीं है का प्रतिनिधित्व करता है, उदा ~V1 + V2 + V3
, एक बात मैंने कोशिश की थी:
t <- terms(f)
attr(t, "term.labels")
बहरहाल, यह वास्तव में क्या स्पष्ट है अगर f
में चर के कुछ स्पष्ट कर रहे हैं नहीं मिलता है। उदाहरण के लिए, V1
दो श्रेणियों के साथ एक स्पष्ट चर हो, यानी एक बूलियन, और V2
दोहराएं।
इसलिए, ~V1:V2
द्वारा निर्दिष्ट मॉडल में 2 पैरामीटर होना चाहिए: "अवरोध" और "xyes: z"। इस बीच, ~V1:V2 - 1
द्वारा निर्दिष्ट मॉडल में "xno: z" और "xyes: z" पैरामीटर होना चाहिए। हालांकि, terms()
फ़ंक्शन को बताने के तरीके के बिना, कौन से चर स्पष्ट हैं (और कितने श्रेणियों) में इनको समझने में सक्षम होने का कोई तरीका नहीं है। इसके बजाए, इसके पास V1:V2
है जो इसके "terms.labels" में है जिसका संदर्भ इस संदर्भ में कुछ भी नहीं है कि V1
स्पष्ट है।
(2)
दूसरी ओर, model.matrix
का उपयोग कर वास्तव में मैं क्या चाहते हैं पाने के लिए एक आसान तरीका है। समस्या यह है कि इसे data
तर्क की आवश्यकता है, जो मेरे लिए बुरा है क्योंकि मैं केवल आर के बाहर उपयोग के लिए प्रतीकात्मक सूत्र की स्पष्ट व्याख्या चाहता हूं। यह प्राप्त करने की यह विधि बहुत समय बर्बाद करेगी (तुलनात्मक रूप से) क्योंकि आर को पढ़ना है बाहरी स्रोत से डेटा जब इसे वास्तव में सूत्र के लिए जानना आवश्यक होता है तो कौन सा चर स्पष्ट (और कितनी श्रेणियां) हैं और कौन से चर युगल हैं।
क्या वास्तविक डेटा के बजाए डेटा के प्रकार निर्दिष्ट करने के साथ 'model.matrix' का उपयोग करने का कोई तरीका है? यदि नहीं, तो व्यवहार्य समाधान क्या है?
त्वरित उत्तर के लिए धन्यवाद। मेरे पास एक वास्तविक डेटा सेट है, लेकिन यह बड़ा और बाहर आर है इसलिए इसे पढ़ने से दक्षता कम हो जाती है। आपके पास पहले भाग में क्या अच्छा लगता है, लेकिन एक बात जो मुझे समझ में नहीं आती है वह है कि 'model.matrix (f, data = V1Factor)' 3 प्रासंगिक मानकों का उत्पादन करता है, जब इसमें 'V1no: V2' नहीं होना चाहिए एक अवरोध है। –
आर इंटरैक्शन मौजूद होने पर निचले ऑर्डर पैरामीटर को हटाने के लिए अनिच्छुक होने के लिए जाना जाता है, शायद यही कारण है: http://stackoverflow.com/q/11335923/289572 – Henrik
@ जोनक्लॉस मुझे लगता है कि इसमें तीन पैरामीटर होना चाहिए: अवरोध, 'वी 2' की ढलान' वी 1' नहीं है, और 'वी 2' की ढलान' जब वी 1' हां है (जिस तरह से इसे यहां पैरामीटर किया गया है)। आप 'पैरामीटर' के साथ 3 पैरामीटर भी प्राप्त कर सकते हैं, 'वी 2' की ढलान, जब' वी 1' नहीं है, और 'वी 2' की ढलान में परिवर्तन' वी 1' से हां तक बदलता है। हालांकि आप इसे parametrize, 3 पैरामीटर हैं। –