मैन्युअल रूप से गणना की गई


38

मैं जानता हूँ कि यह एक काफी विशिष्ट है Rसवाल है, लेकिन मैं अनुपात विचरण के बारे में सोच सकते बताया गया है, , गलत तरीके से। यहाँ जाता हैं।R2

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

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

Rसमस्या को प्रदर्शित करने के लिए यहां कुछ कोड दिए गए हैं ।

# use the built in iris data
data(iris)

#load the randomForest library
library(randomForest)

# split the data into training and testing sets
index <- 1:nrow(iris)
trainindex <- sample(index, trunc(length(index)/2))
trainset <- iris[trainindex, ]
testset <- iris[-trainindex, ]

# fit a model to the training set (column 1, Sepal.Length, will be the outcome)
set.seed(42)
model <- randomForest(x=trainset[ ,-1],y=trainset[ ,1])

# predict values for the testing set (the first column is the outcome, leave it out)
predicted <- predict(model, testset[ ,-1])

# what's the squared correlation coefficient between predicted and actual values?
cor(predicted, testset[, 1])^2

# now, refit the model using built-in x.test and y.test
set.seed(42)
randomForest(x=trainset[ ,-1], y=trainset[ ,1], xtest=testset[ ,-1], ytest=testset[ ,1])

जवाबों:


52

R2randomForestR2

R2

R2=1i(yiy^i)2i(yiy¯)2.

यही है, हम माध्य-चुकता त्रुटि की गणना करते हैं, इसे मूल टिप्पणियों के विचरण द्वारा विभाजित करते हैं और फिर इसे एक से घटाते हैं। (ध्यान दें कि यदि आपकी भविष्यवाणियाँ वास्तव में खराब हैं, तो यह मूल्य नकारात्मक हो सकता है।)

y^iy¯yy^y^

RLR2=Corr(y,y^)2.
LRRLR2

randomForestकॉल पहले परिभाषा उपयोग कर रहा है, इसलिए यदि आप करते हैं

   > y <- testset[,1]
   > 1 - sum((y-predicted)^2)/sum((y-mean(y))^2)

आप देखेंगे कि उत्तर मेल खाते हैं।


1
R2

(+1) वास्तव में बहुत सुंदर प्रतिक्रिया।
चेर

@mpiktas, @chl, मैं आज थोड़े समय बाद इस पर विस्तार करने की कोशिश करूंगा। मूल रूप से, पृष्ठभूमि में परिकल्पना परीक्षण के लिए एक करीबी (लेकिन, शायद, थोड़ा छिपा हुआ) कनेक्शन है। यहां तक ​​कि एक रैखिक प्रतिगमन सेटिंग में, यदि स्थिर वेक्टर डिजाइन मैट्रिक्स के स्तंभ स्थान में नहीं है, तो "सहसंबंध" की परिभाषा विफल हो जाएगी।
कार्डिनल

यदि आपके पास सेबर / ली पाठ्यपुस्तक (मेरे लिए सुलभ नहीं) के अलावा कोई अन्य संदर्भ है, तो मुझे इस बात का एक अच्छा विवरण देखना पसंद होगा कि कैसे भिन्नता को समझाया गया है (अर्थात 1-SSerr / SStot) स्क्वेरर सहसंबंध गुणांक से अलग है, या विचरण समझाया गया है। संकेत के लिए फ़िर से शुक्रिया।
स्टीफन टर्नर

यदि आर-स्क्वेरेड मान इंस्ट्रूमेंटल वैरिएबल रिग्रेशन परिणामों से नकारात्मक है, तो क्या इस नकारात्मक मूल्य को दबाने और रिपोर्टिंग के लिए सकारात्मक मूल्य में अनुवाद करने का कोई तरीका है? कृपया इस लिंक का संदर्भ लें: stata.com/support/faqs/statistics/two-stage-least-squares
Eric
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.