एलएम () से समीकरण में परिणामों का अनुवाद कैसे करें?


29

हम lm()एक मूल्य का अनुमान लगाने के लिए उपयोग कर सकते हैं , लेकिन हमें अभी भी कुछ मामलों में परिणाम सूत्र के समीकरण की आवश्यकता है। उदाहरण के लिए, भूखंडों में समीकरण जोड़ें।


2
क्या आप कृपया अपना प्रश्न पुनः दर्ज कर सकते हैं या कुछ विवरण जोड़ सकते हैं? मैं आर के साथ काफी परिचित हूं, lmऔर रैखिक मॉडल आमतौर पर अधिक, लेकिन यह बिल्कुल स्पष्ट नहीं है कि वास्तव में, आप क्या चाहते हैं। क्या आप एक उदाहरण या कुछ स्पष्ट करने के लिए दे सकते हैं? क्या यह किसी विषय के लिए है?
Glen_b -Reinstate मोनिका

2
मुझे लगता है कि आप रैखिक प्रतिगमन सूत्र के गुणांक चाहते हैं। coef()फिट की गई lmवस्तु पर कॉल करने का प्रयास करें , जैसे:mod <- lm(y ~ x); coef(mod)
जेक वेस्टफॉल

यदि आप टाइप करते हैं तो lm(y~x)$callयह बताता है कि सूत्र क्या है y ~ x। यदि आप इससे अलग कुछ मतलब रखते हैं, तो आपको अधिक विशिष्ट होने की आवश्यकता है।
Glen_b -Reinstate Monica


वर्थ पढ़ने stackoverflow.com/questions/7549694/…
4

जवाबों:


30

इस उदाहरण पर विचार करें:

set.seed(5)            # this line will allow you to run these commands on your
                       # own computer & get *exactly* the same output
x = rnorm(50)
y = rnorm(50)

fit = lm(y~x)
summary(fit)
# Call:
# lm(formula = y ~ x)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -2.04003 -0.43414 -0.04609  0.50807  2.48728 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)
# (Intercept) -0.00761    0.11554  -0.066    0.948
# x            0.09156    0.10901   0.840    0.405
# 
# Residual standard error: 0.8155 on 48 degrees of freedom
# Multiple R-squared: 0.01449,  Adjusted R-squared: -0.006046 
# F-statistic: 0.7055 on 1 and 48 DF,  p-value: 0.4051 

प्रश्न, मैं अनुमान लगा रहा हूं, यह है कि आर के सारांश आउटपुट से प्रतिगमन समीकरण का कैसे पता लगाया जाए। बीजगणित, एक सरल प्रतिगमन मॉडल के लिए समीकरण

y^मैं=β^0+β^1एक्समैं+ε^मैंकहा पे ε~एन(0, σ^2)
हम सिर्फ मैप करने की आवश्यकताsummary.lm()इन शर्तों से उत्पादन। अर्थात:

  • β^0Estimate(Intercept)-0.00761
  • β^1Estimatex0.09156
  • σ^Residual standard error0.8155


y^मैं=-.००,७६१ + .०९,१५६एक्समैं + ε^मैंकहा पे ε~एन(0, 0.81552)


2
lmy^=-.००,७६१+.०९,१५६एक्स

6

यदि आप चाहते हैं कि आपके परिणामी प्रतिगमन समीकरण का उपयोग करके स्कोर की भविष्यवाणी की जाए, तो आप टाइप करके हाथ से समीकरण का निर्माण कर सकते हैं summary(fit)(यदि आपका प्रतिगमन विश्लेषण एक चर में संग्रहीत किया जाता है fit, उदाहरण के लिए), और प्रत्येक गुणांक के अनुमानों को अपने में शामिल देखें। आदर्श।

y=β0+β1एक्स+εβ0β1y^=0.5+1.6एक्स

हालांकि, यह कठिन मार्ग है। आर में एक अंतर्निहित फ़ंक्शन है, predict()जिसका उपयोग आप किसी भी डेटासेट के लिए एक मॉडल दिए गए अनुमानित मूल्यों की स्वचालित रूप से गणना करने के लिए कर सकते हैं। उदाहरण के लिए: predict(fit, newdata=data)यदि आप जिस x स्कोर का उपयोग करना चाहते हैं, उसकी भविष्यवाणी करने के लिए y स्कोर को चर में संग्रहीत किया जाता है data। (ध्यान दें कि जिस नमूने के लिए आपके प्रतिगमन का प्रदर्शन किया गया था, उसके लिए अनुमानित स्कोर देखने के लिए, आप बस टाइप कर सकते हैं fit$fittedया fitted(fit); ये आपको पूर्वानुमानित, उर्फ ​​फिटेड, मान देंगे।)


0

यदि आप समीकरण दिखाना चाहते हैं, तो किसी डॉक्यूमेंट में कट / पेस्ट करना पसंद करते हैं, लेकिन संपूर्ण समीकरण को एक साथ रखना नहीं चाहते हैं:

R> library(MASS)
R> crime.lm <- lm(y~., UScrime)
R> cc <- crime.lm$coefficients
R> (eqn <- paste("Y =", paste(round(cc[1],2), paste(round(cc[-1],2), names(cc[-1]), sep=" * ", collapse=" + "), sep=" + "), "+ e"))
[1] "Y = -5984.29 + 8.78 * M + -3.8 * So + 18.83 * Ed + 19.28 * Po1 + -10.94 * Po2 + -0.66 * LF + 1.74 * M.F + -0.73 * Pop + 0.42 * NW + -5.83 * U1 + 16.78 * U2 + 0.96 * GDP + 7.07 * Ineq + -4855.27 * Prob + -3.48 * Time + e"

0

कीथजॉली के उत्तर पर निर्माण, यह विभाजक में उपयोग किए जाने वाले '+' संकेतों को सह-कुशल के वास्तविक चिन्ह के साथ बदल देता है।

modelcrime <- lm(y~., UScrime)
modelcrime_coeff <- modelcrime$coefficients
modelcrime_coeff_sign <- sign(modelcrime_coeff)
modelcrime_coeff_prefix <- case_when(modelcrime_coeff_sign == -1 ~ " - ",
                                     modelcrime_coeff_sign == 1 ~ " + ",
                                     modelcrime_coeff_sign == 0 ~ " + ")
modelcrime_eqn <- paste("y =", paste(if_else(modelcrime_coeff[1]<0, "- ", ""),
                                         abs(round(modelcrime_coeff[1],3)),
                                     paste(modelcrime_coeff_prefix[-1],
                                           abs(round(modelcrime_coeff[-1],3)),
                                           " * ",
                                           names(modelcrime_coeff[-1]),
                                           sep = "", collapse = ""),
                                     sep = ""))
modelcrime_eqn

परिणाम पैदा करता है

[1] "y = - 5984.288 + 8.783 * M - 3.803 * So + 18.832 * Ed + 19.28 * Po1 - 10.942 * Po2 - 0.664 * LF + 1.741 * M.F - 0.733 * Pop + 0.42 * NW - 5.827 * U1 + 16.78 * U2 + 0.962 * GDP + 7.067 * Ineq - 4855.266 * Prob - 3.479 * Time"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.