एक सांख्यिकीय मॉडल के लिए फिट और अनुमानित मूल्यों का पता लगाना


12

मान लें कि मेरे पास निम्न डेटा है और मैं प्रतिगमन मॉडल चला रहा हूं:

df=data.frame(income=c(5,3,47,8,6,5),
              won=c(0,0,1,1,1,0),
              age=c(18,18,23,50,19,39),
              home=c(0,0,1,0,0,1))

एक तरफ, मैं आय पर भविष्यवाणी करने के लिए एक रैखिक मॉडल चलाता हूं:

md1 = lm(income ~ age + home + home, data=df)

दूसरा, मैं जीते हुए चर पर भविष्यवाणी करने के लिए एक लॉगिट मॉडल चलाता हूं:

md2 = glm(factor(won) ~ age + home, data=df, family=binomial(link="logit"))

दोनों मॉडलों के लिए, मुझे आश्चर्य है कि मैं भविष्यवक्ता प्रतिक्रिया श्रेणी, फिट किए गए मूल्य और मॉडल की अनुमानित मूल्य के साथ एक तालिका या डेटा फ़्रेम कैसे उत्पन्न कर सकता हूं।

तो रैखिक मॉडल के लिए, कुछ इस तरह है:

age  fitted_income  predicted_income
18    3              5 
23    3              3
50    4              2
19    5              5
39    6              4

home   fitted_income    predicted_income
0       5               6       
1       3               9

या शायद यह प्रत्येक डेटा बिंदु के लिए होना चाहिए। तो x_i डेटा बिंदु के लिए, फिट और अनुमानित मान हैं:

id   age  fitted_income  predicted_income
1     18    3              5 
2     23    3              3
3     50    4              2
4     19    5              5
5     39    6              4
  1. एक सांख्यिकीय दृष्टिकोण से, क्या ऐसा उपक्रम उपयोगी है? क्यों या क्यों नहीं?

  2. यह R में कैसे किया जा सकता है? (नाम (md1) को देखा और पाया कि मैं मॉडल से क्या खींच सकता हूं, लेकिन उस अतीत को आगे नहीं बढ़ाया है)

धन्यवाद!


1
पुन: # 2: stat.ethz.ch/R-manual/R-patched/library/stats/html/… । # 1 पुन: क्या के लिए उपयोगी है? आप आखिर में क्या हासिल करना चाहते हैं?
whuber

यह बताने के लिए उपयोगी है कि क्या मॉडल प्रत्येक व्यक्तिगत डेटा बिंदु के लिए "पूर्वानुमान" है। मैं किसी भी पंक्ति / आईडी को देखना चाहता हूं, और सही / फिटेड मूल्य और अनुमानित मूल्य की तुलना करने में सक्षम होना चाहता हूं ताकि यह "सही" हो।
ATMathew

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

2
कुछ इस तरह की कोशिश कर सकता है: x = cbind (df, md1 $ fitted.values) colnames (x) = c (colnames (df), "
प्रेडिक्टेड

2
मनाया और फिट मूल्यों के बीच मतभेद माध्यम से उपलब्ध हैं residualsआदेश में Rcbindमूल डेटाफ़्रेम में उन्हें शामिल करने के लिए उपयोग करें ।
whuber

जवाबों:


20

आपको R में मॉडल ऑब्जेक्ट के साथ थोड़ा सावधान रहना होगा। उदाहरण के लिए, फिट किए गए मान और प्रशिक्षण डेटा की भविष्यवाणियां glm()मॉडल मामले में समान होनी चाहिए , जब आप सही एक्स्ट्रेक्टर कार्यों का उपयोग करते हैं तो वे समान नहीं होते हैं:

R> fitted(md2)
        1         2         3         4         5         6 
0.4208590 0.4208590 0.4193888 0.7274819 0.4308001 0.5806112 
R> predict(md2)
         1          2          3          4          5          6 
-0.3192480 -0.3192480 -0.3252830  0.9818840 -0.2785876  0.3252830

ऐसा इसलिए है क्योंकि डिफ़ॉल्ट के लिए predict.glm()रैखिक भविष्यवक्ता के पैमाने पर भविष्यवाणियों को वापस करना है। फिट किए गए मूल्यों को प्राप्त करने के लिए हम लिंक फ़ंक्शन के व्युत्क्रम को उन मूल्यों पर लागू करना चाहते हैं। fitted()हमारे लिए ऐसा ही है, और हम सही मानों का उपयोग करके प्राप्त कर सकते हैं predict():

R> predict(md2, type = "response")
        1         2         3         4         5         6 
0.4208590 0.4208590 0.4193888 0.7274819 0.4308001 0.5806112

इसी तरह residuals()(या resid()); मूल्यों में संग्रहीत md2$residualsकर रहे हैं काम कर बच रहे हैं कि आप क्या चाहते होने की संभावना नहीं है। resid()विधि आप अवशिष्ट इच्छित प्रकार निर्दिष्ट करने के लिए अनुमति देता है और एक उपयोगी डिफ़ॉल्ट है।

के लिए glm()मॉडल, कुछ इस तरह पर्याप्त होगा:

R> data.frame(Age = df$age, Won = df$won, Fitted = fitted(md2))
  Age Won    Fitted
1  18   0 0.4208590
2  18   0 0.4208590
3  23   1 0.4193888
4  50   1 0.7274819
5  19   1 0.4308001
6  39   0 0.5806112

lm()मॉडल के लिए कुछ ऐसा ही किया जा सकता है :

R> data.frame(Age = df$age, Income = df$income, Fitted = fitted(md1))
  Age Income    Fitted
1  18      5  7.893273
2  18      3  7.893273
3  23     47 28.320749
4  50      8 -1.389725
5  19      6  7.603179
6  39      5 23.679251
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.