2014-10-14 9 views
6

मुझे आश्चर्य है कि आर में रिज रिग्रेशन के लिए सारांश आउटपुट करने का कोई तरीका है? यह lm.ridge{MASS} फ़ंक्शन का परिणाम है।lm.ridge सारांश कैसे करें?

मानक रेखीय मॉडल के लिए तुम सिर्फ summary(lm_model) है, लेकिन क्या बारे में रिज प्रतिगमन मॉडल? सहायता के लिए धन्यवाद।

> methods(class = 'ridgelm') 
[1] coef.ridgelm* plot.ridgelm* print.ridgelm* select.ridgelm* 

इस सार क्या वापस चाहिए:

उत्तर

9

मैंने अभी एक विधि जोड़ा है जो सारांशित करता है (या अधिक सटीक, tidies) "ridgelm" मेरे broom पैकेज में ऑब्जेक्ट्स। यह दो एस 3 जेनेरिकों का रूप लेता है: tidy और glance। आप इसे devtools::install_github("dgrtwo/broom") के साथ इंस्टॉल कर सकते हैं (हालांकि आपको पहले devtools इंस्टॉल करना होगा)।

library(broom) 
td <- tidy(fit) 
head(td) 
## lambda GCV term estimate 
## 1 0.001 0.1240 GNP 23.02 
## 2 0.002 0.1217 GNP 21.27 
## 3 0.003 0.1205 GNP 19.88 
## 4 0.004 0.1199 GNP 18.75 
## 5 0.005 0.1196 GNP 17.80 
## 6 0.006 0.1196 GNP 16.99 

जबकि glance:

library(MASS) 
names(longley)[1] <- "y" 
fit <- lm.ridge(y ~ ., longley, lambda = seq(0.001, .05, .001)) 

tidy समारोह एक डेटा फ्रेम कि लैम्ब्डा के प्रत्येक संयोजन और अनुमानित अवधि से पता चलता प्रदान करता है:

उदाहरण के लिए, के एक रिज प्रतिगमन को सेट

g <- glance(fit) 
g 
##  kHKB  kLW lambdaGCV 
## 1 0.006837 0.05267  0.006 
: समारोह एक-पंक्ति सारांश, विभिन्न तरीकों से लैम्ब्डा की विशेष रूप से विकल्प बनाता है

यह उपयोगी है क्योंकि यह आसान साजिश और डेटा अपने आप को नहीं बल्कि मास के षड्यंत्रकारियों पर भरोसा से पता लगाने के लिए बनाता है: इन तरीकों पर अधिक जानकारी के लिए

library(ggplot2) 
ggplot(td, aes(lambda, estimate, color = term)) + geom_line() 

enter image description here

# plot of GCV versus lambda 
ggplot(td, aes(lambda, GCV)) + geom_line() + 
    geom_vline(xintercept = g$lambdaGCV, col = "red", lty = 2) 

enter image description here

, ?ridgelm_tidiers देखें, या सामान्य रूप से tidy और glance विधियों के बारे में अधिक जानकारी के लिए पैकेज के विगेट्स देखें।

+0

नज़र करने के बजाय आप builtin समारोह का उपयोग कर सकते नहीं मिलता 'का चयन करें' - यह एक ही काम करता है। Ggplot फ़ंक्शन नियमित plot.lmridge के समान काम करता है (लेकिन निश्चित रूप से अधिक pritty दिखता है)। –

+2

@MarcinKosinski: 'select' एक ही तरीके से काम नहीं करता है क्योंकि यह * उन्हें वापस करने के बजाय चयनित मूल्यों को मुद्रित करता है (इसलिए उन्हें सहेजने, उन्हें निकालने, उन्हें गठबंधन करने, या उन्हें ग्राफ में जोड़ने का कोई तरीका नहीं है, उदाहरण के लिए)। 'plot.ridgelm' एक समान ग्राफ उत्पन्न करता है, लेकिन यह ध्यान देने योग्य है कि यह एक किंवदंती, या रंग चुनने का एक तरीका नहीं है। (असल में 'plot.ridgelm'' '' '' matplot' के साथ पास नहीं होता है, आपके पास इसे अनुकूलित करने की सीमित क्षमता है)। –

+0

ठीक है मुझे यह मिल गया। धन्यवाद :) –

2

ridgelm वर्ग के लिए कोई summary विधि नहीं है? आप ridgelm-object से आवश्यक सभी जानकारी निकाल सकते हैं।

हालांकि, अगर आप भी अपने उद्देश्यों के लिए अपने स्वयं के सारांश तरीके (एक शुरुआत के लिए summary.lm() के लिए कोड की जाँच करें) लिख सकते हैं। यदि आप इससे खुश हैं, तो आप इसे MASS के रखरखावकर्ताओं को भेज सकते हैं।

+0

आपको सच में लगता है कि वे इस पैकेज को अपने पैकेज में परवाह करेंगे और प्रकाशित करेंगे? –

+1

आपको एक दिलचस्प उत्तर मिल सकता है। आम तौर पर प्रोफेसर रिपली समर्थन कार्यों में डाल देंगे जब उन्हें उचित लगता है, इसलिए ऐसे कई कारण हो सकते हैं जो उन्होंने नहीं किए थे। –

+0

मैं तुम्हें –

1

आप क्रैन से मेरी lmridge पैकेज का उपयोग कर सकते हैं।

+0

मैं एक छोटे से उपयोग के मामले के साथ जवाब का विस्तार करने की सराहना करता हूं और शायद साहित्य जिसे मैं देख सकता हूं! अग्रिम में धन्यवाद। –

संबंधित मुद्दे