手動で計算された


38

これはかなり具体的なR質問であることはわかっていますが、説明する割合の分散について考えているかもしれません。について間違っている。ここに行きます。R2

私は使用しようとしています RパッケージますrandomForest。トレーニングデータとテストデータがあります。ランダムフォレストモデルを当てはめると、このrandomForest関数を使用して、テストする新しいテストデータを入力できます。次に、この新しいデータで説明された分散の割合を示します。これを見ると、1つの数字が得られます。

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

理由ための値が一致されていないがある報告している変化はとは対照的に説明分散説明します。これは、教科書で永続化されているR 2についてのよくある誤解だと思います。先日、別のスレッドでこれについて言及しました。例が必要な場合は、(他の点では非常に良い)教科書Seber and Lee、Linear Regression Analysis、2ndを参照してください。編R2randomForestR2

以下のための一般的な定義であり 、R 2 = 1 - Σ IY I - Y I 2R2

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)が2乗相関係数または説明された分散とどのように異なるかについての良い説明を見たいです。ヒントをありがとう。
スティーブンターナー

機器変数回帰の結果からR二乗値が負の場合、この負の値を抑制し、報告のために正の値に変換する方法はありますか?このリンクを参照してください:stata.com/support/faqs/statistics/two-stage-least-squares
Eric
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.