คำนวณด้วยตนเอง


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) การตอบสนองที่หรูหรามากแน่นอน
chl

@mpiktas, @chl ฉันจะพยายามขยายเรื่องนี้อีกเล็กน้อยในวันนี้ โดยทั่วไปมีการเชื่อมต่อที่ใกล้ (แต่อาจซ่อนอยู่เล็กน้อย) กับการทดสอบสมมติฐานในพื้นหลัง แม้ในการตั้งค่าการถดถอยเชิงเส้นถ้าเวกเตอร์คงที่ไม่ได้อยู่ในพื้นที่คอลัมน์ของเมทริกซ์การออกแบบคำจำกัดความ "สหสัมพันธ์" จะล้มเหลว
พระคาร์ดินัล

หากคุณมีการอ้างอิงอื่นนอกเหนือจากตำรา Seber / Lee (ไม่สามารถเข้าถึงได้สำหรับฉัน) ฉันชอบที่จะเห็นคำอธิบายที่ดีว่าการอธิบายที่หลากหลาย (เช่น 1-SSerr / SStot) แตกต่างจากสัมประสิทธิ์สหสัมพันธ์กำลังสองหรือความแปรปรวนอธิบายได้อย่างไร ขอบคุณอีกครั้งสำหรับคำแนะนำ
Stephen Turner

หากค่า R-squared เป็นค่าลบจากผลลัพธ์การถดถอยตัวแปรเครื่องมือมีวิธีใดที่จะกำจัดค่าลบนี้และแปลเป็นค่าบวกเพื่อการรายงานได้หรือไม่ อ้างอิงถึงลิงค์นี้โปรด: stata.com/support/faqs/statistics/two-stage-least-squares
Eric
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.