आर का उपयोग करके कई प्रतिगमन में प्रत्येक पूर्वसूचक द्वारा समझाया गया विचरण की गणना करें


14

मैंने एक मल्टीपल रिग्रेशन चलाया है जिसमें पूरी तरह से मॉडल महत्वपूर्ण है और 13% विचरण के बारे में बताता है। हालांकि, मुझे प्रत्येक महत्वपूर्ण भविष्यवक्ता द्वारा बताई गई भिन्नता की मात्रा का पता लगाने की आवश्यकता है। आर का उपयोग करके मैं यह कैसे कर सकता हूं?

यहां कुछ नमूना डेटा और कोड दिए गए हैं:

D = data.frame(
    dv = c( 0.75, 1.00, 1.00, 0.75, 0.50, 0.75, 1.00, 1.00, 0.75, 0.50 ),
    iv1 = c( 0.75, 1.00, 1.00, 0.75, 0.75, 1.00, 0.50, 0.50, 0.75, 0.25 ),
    iv2 = c( 0.882, 0.867, 0.900, 0.333, 0.875, 0.500, 0.882, 0.875, 0.778, 0.867 ),
    iv3 = c( 1.000, 0.067, 1.000, 0.933, 0.875, 0.500, 0.588, 0.875, 1.000, 0.467 ),
    iv4 = c( 0.889, 1.000, 0.905, 0.938, 0.833, 0.882, 0.444, 0.588, 0.895, 0.812 ),
    iv5 = c( 18, 16, 21, 16, 18, 17, 18, 17, 19, 16 ) )
fit = lm( dv ~ iv1 + iv2 + iv3 + iv4 + iv5, data=D )
summary( fit )

यहाँ मेरा वास्तविक डेटा के साथ उत्पादन है:

Call: lm(formula = posttestScore ~ pretestScore + probCategorySame + 
    probDataRelated + practiceAccuracy + practiceNumTrials, data = D)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.6881 -0.1185  0.0516  0.1359  0.3690 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)
 (Intercept)        0.77364    0.10603    7.30  8.5e-13 ***
 iv1                0.29267    0.03091    9.47  < 2e-16 ***
 iv2                0.06354    0.02456    2.59   0.0099 **
 iv3                0.00553    0.02637    0.21   0.8340
 iv4               -0.02642    0.06505   -0.41   0.6847
 iv5               -0.00941    0.00501   -1.88   0.0607 .  
--- Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 0.18 on 665 degrees of freedom
 Multiple R-squared:  0.13,      Adjusted R-squared:  0.123
 F-statistic: 19.8 on 5 and 665 DF,  p-value: <2e-16

इस प्रश्न का उत्तर यहां दिया गया है , लेकिन स्वीकृत उत्तर केवल असंबद्ध भविष्यवक्ताओं को संबोधित करता है, और जबकि एक अतिरिक्त प्रतिक्रिया है जो सहसंबद्ध भविष्यवक्ताओं को संबोधित करती है, यह केवल एक सामान्य संकेत प्रदान करता है, एक विशिष्ट समाधान नहीं। मैं जानना चाहता हूं कि अगर मेरे भविष्यवक्ता सहसंबद्ध हैं तो क्या करना चाहिए।


2
क्या आपने यहां जेरेमी एंग्लिम के जवाब को देखा ?
स्टेट

हां, वह अतिरिक्त प्रतिक्रिया थी जिसका मैं उल्लेख कर रहा था। मैं कुछ अधिक विशिष्ट और चरण-दर-चरण के लिए उम्मीद कर रहा था। मैंने ppcor डाउनलोड किया, लेकिन यह सुनिश्चित नहीं था कि स्पार्क्स आउटपुट के साथ क्या करना है। इसके अलावा, मैं सोच रहा हूं कि क्या कोर आर में ऐसा करने का कोई तरीका है? यह एक सामान्य पर्याप्त कार्य की तरह लगता है कि इसके लिए एक विशेष पैकेज की आवश्यकता नहीं होगी।
बैक्सीवीई

सहसंबद्ध भविष्यवक्ताओं के बारे में आपके प्रश्न का सबसे छोटा उत्तर यह है कि बहुत अलग मान्यताओं और अनुमानों के बिना, उनका अलग महत्व निर्धारित नहीं किया जा सकता है। इस तरह से विचार करें: यदि यह सीधा है, तो यह आसानी से और आसानी से उपलब्ध क्यों नहीं है, क्योंकि कई शोधकर्ता सोचते हैं कि वे इसे चाहते हैं?
निक कॉक्स

मैं relaimpoपैकेज को देखने का सुझाव दूंगा , और इसके साथ कागज़: jstatsoft.org/index.php/jss/article/view/v017i01/v17i01.pdf मैं "LMG" विधि का अक्सर उपयोग करता हूं।
फिल

जवाबों:


16

समझाया गया प्रतिशत दर्ज किए गए आदेश पर निर्भर करता है।

यदि आप कोई विशेष आदेश निर्दिष्ट करते हैं, तो आप इस तुच्छ रूप से R में गणना कर सकते हैं (जैसे कि कार्यों updateऔर anovaकार्यों के माध्यम से , नीचे देखें), लेकिन प्रवेश का एक अलग क्रम संभावित रूप से बहुत अलग उत्तर देगा।

[एक संभावना सभी आदेशों या कुछ के पार करने के लिए औसत हो सकती है, लेकिन यह अस्पष्ट होगा और विशेष रूप से उपयोगी प्रश्न का उत्तर नहीं दे सकता है।]

-

जैसा कि स्टेटमेंट बताता है, एक मॉडल के साथ, यदि आप एक समय में एक चर के बाद हैं, तो आप वर्ग तालिका के वृद्धिशील रकम का उत्पादन करने के लिए 'एनोवा' का उपयोग कर सकते हैं। यह आपके कोड से अनुसरण करेगा:

 anova(fit)
Analysis of Variance Table

Response: dv
          Df   Sum Sq  Mean Sq F value Pr(>F)
iv1        1 0.033989 0.033989  0.7762 0.4281
iv2        1 0.022435 0.022435  0.5123 0.5137
iv3        1 0.003048 0.003048  0.0696 0.8050
iv4        1 0.115143 0.115143  2.6294 0.1802
iv5        1 0.000220 0.000220  0.0050 0.9469
Residuals  4 0.175166 0.043791        

-

इसलिए हमारे पास वृद्धिशील विचरण की व्याख्या है; हमें अनुपात कैसे मिलेगा?

सुंदर तुच्छ, उन्हें उनके योग से विभाजित 1 के पैमाने पर। (प्रतिशत विचरण के लिए 1 को 100 से बदलें)

यहाँ मैंने इसे एनोवा तालिका में एक अतिरिक्त कॉलम के रूप में प्रदर्शित किया है:

 af <- anova(fit)
 afss <- af$"Sum Sq"
 print(cbind(af,PctExp=afss/sum(afss)*100))
          Df       Sum Sq      Mean Sq    F value    Pr(>F)      PctExp
iv1        1 0.0339887640 0.0339887640 0.77615140 0.4280748  9.71107544
iv2        1 0.0224346357 0.0224346357 0.51230677 0.5137026  6.40989591
iv3        1 0.0030477233 0.0030477233 0.06959637 0.8049589  0.87077807
iv4        1 0.1151432643 0.1151432643 2.62935731 0.1802223 32.89807550
iv5        1 0.0002199726 0.0002199726 0.00502319 0.9468997  0.06284931
Residuals  4 0.1751656402 0.0437914100         NA        NA 50.04732577

-

यदि आप तय करते हैं कि आप प्रवेश के कई विशेष आदेश चाहते हैं, तो आप इस तरह से और भी कुछ सामान्य कर सकते हैं (जो आपको एक बार में यदि आप चाहें तो चर के समूह में प्रवेश करने या निकालने की अनुमति भी दे सकते हैं):

 m5 = fit
 m4 = update(m5, ~ . - iv5)
 m3 = update(m4, ~ . - iv4)
 m2 = update(m3, ~ . - iv3)
 m1 = update(m2, ~ . - iv2)
 m0 = update(m1, ~ . - iv1)

 anova(m0,m1,m2,m3,m4,m5)
Analysis of Variance Table

Model 1: dv ~ 1
Model 2: dv ~ iv1
Model 3: dv ~ iv1 + iv2
Model 4: dv ~ iv1 + iv2 + iv3
Model 5: dv ~ iv1 + iv2 + iv3 + iv4
Model 6: dv ~ iv1 + iv2 + iv3 + iv4 + iv5
  Res.Df     RSS Df Sum of Sq      F Pr(>F)
1      9 0.35000                           
2      8 0.31601  1  0.033989 0.7762 0.4281
3      7 0.29358  1  0.022435 0.5123 0.5137
4      6 0.29053  1  0.003048 0.0696 0.8050
5      5 0.17539  1  0.115143 2.6294 0.1802
6      4 0.17517  1  0.000220 0.0050 0.9469

(इस तरह के एक दृष्टिकोण को भी स्वचालित किया जा सकता है, उदाहरण के लिए छोरों और के उपयोग के माध्यम से get। यदि आप कई ऑर्डर में चर जोड़ सकते हैं और निकाल सकते हैं यदि आवश्यक हो)

... और फिर पहले की तरह प्रतिशत के पैमाने।

(एनबी। यह तथ्य कि मैं समझाता हूं कि इन चीजों को कैसे करना चाहिए, यह जरूरी नहीं कि मैं जो कुछ भी समझाऊं उसकी वकालत की जाए।)


2
@ Glen_b: कोई अपराध नहीं है, लेकिन यह सवाल का जवाब नहीं है। आपके आउटपुट में कोई नहीं है । और वैसे, - को परिभाषित किए बिना भी आपके समान आउट-पुट ! चीयर्स। एम 0 एम 5R2anova(fit)m0m5
स्टैच्यू

यह संशोधित उत्तर वास्तव में उपयोगी है। मुझे लगता है कि मैं वहां पहुंच रहा हूं। एक प्रश्न: अगर मैं आपके द्वारा बताए गए तरीके से iv5 (अंतिम चर) के लिए बताए गए विचरण के अनुपात की गणना करता हूं, तो क्या यह गणितीय रूप से R ^ 2 के अंतर के समान है जो मॉडल द्वारा लागू किए गए सारांश द्वारा लौटाए गए और बिना iv5 के बिना फिट बैठता है? मैं वास्तव में समान मूल्य प्राप्त कर रहा हूं और सिर्फ यह जांचना चाहता हूं कि क्या ये वैचारिक रूप से एक ही चीज हैं।
baixiwei

और एक और सवाल: क्या कोई कारण है कि मैं वह नहीं कर सका जो मैंने पिछले टिप्पणी में दो अलग-अलग ivs के लिए एक बार किया था? क्या आपके दूसरे प्रस्तावित विधि के बराबर होगा जिसमें चर में प्रवेश करने के विभिन्न आदेश शामिल हैं?
बैक्सीवी

baixiwei - हाँ, में वे दो अंतर समान होंगे। हां, आप प्रत्येक के लिए एक 'अंतिम अंतिम' योगदान कर सकते हैं। (वास्तव में से प्रतिगमन तालिका में टी-टेस्ट आपको पहले से ही फिट किए गए प्रत्येक चर के महत्व का परीक्षण देता है।)R2summary.lm
Glen_b -Reinstate Monica

2

मैंने साबित किया कि एक बहु-रेखीय प्रतिगमन में दिए गए भविष्यवक्ता द्वारा बताई गई भिन्नता का प्रतिशत ढलान गुणांक का उत्पाद है और आश्रित चर के सज्जित मूल्यों के साथ पूर्वसूचक का सहसंबंध है (यह मानते हुए कि सभी चर को शून्य करने के लिए मानकीकृत किया गया है और विचरण एक (जो सामान्यता के नुकसान के बिना है)। इसे यहाँ खोजें:

https://www.researchgate.net/publication/306347340_A_Natural_Decomposition_of_R2_in_Multiple_Linear_Regression


3
user128460 का स्वागत है, लेकिन यह एक प्रश्न और उत्तर साइट है, न कि प्रश्न और लिंक-टू-उत्तर साइट।
रॉबर्ट लांग

प्रैट स्कोर नहीं है?
ब्रेट

2

आप एन स्वतंत्र चर के सभी संयोजनों के लिए एकल आश्रित चर के प्रतिगमन के लिए फिट उपायों की अच्छाई के लिए hier.part लाइब्रेरी का उपयोग कर सकते हैं

library(hier.part)
env <- D[,2:5]
all.regs(D$dv, env, fam = "gaussian", gof = "Rsqu",
     print.vars = TRUE)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.