我有一個數據幀與觀察和建模的數據,我想計算R2值。我希望有一個功能,我可以打電話給這個,但無法找到一個。我知道我可以寫我自己的,並應用它,但我錯過了明顯的東西?我想要類似函數來計算R中的R(R平方)
obs <- 1:5
mod <- c(0.8,2.4,2,3,4.8)
df <- data.frame(obs, mod)
R2 <- rsq(df)
# 0.85
我有一個數據幀與觀察和建模的數據,我想計算R2值。我希望有一個功能,我可以打電話給這個,但無法找到一個。我知道我可以寫我自己的,並應用它,但我錯過了明顯的東西?我想要類似函數來計算R中的R(R平方)
obs <- 1:5
mod <- c(0.8,2.4,2,3,4.8)
df <- data.frame(obs, mod)
R2 <- rsq(df)
# 0.85
您需要一點統計知識才能看到此內容。兩個向量之間的R平方就是它們相關的平方。所以,你可以定義你的功能爲:
rsq <- function (x, y) cor(x, y)^2
有一些假設必須滿足才能成立:http://www.win-vector.com/blog/2011/11/correlation-and-r-squared/ 我想將它用於KNN,但我不確定這些假設是否成立。將不得不檢查這是否實際上與傳統計算相同R^2 – wordsforthewise
來自相關^ 2方法和傳統1-SSE/SST的答案不相同。在我使用的例子中,我從正常的r^2方程獲得了來自corr^2和'0.7531449'的'0.756388'。雖然差別很小,但它仍然可以用來模擬超參數選擇等。 – wordsforthewise
爲什麼不這樣:
rsq <- function(x, y) summary(lm(y~x))$r.squared
rsq(obs, mod)
#[1] 0.8560185
它是不是很明顯,但caret
封裝具有功能postResample()
,將計算「的表現估計向量」根據documentation。 「業績預測」 是
,並從向量這樣
library(caret)
vect1 <- c(1, 2, 3)
vect2 <- c(3, 2, 2)
res <- caret::postResample(vect1, vect2)
rsq <- res[2]
但是訪問,這是使用另一個答案中提到的r平方的相關平方近似。爲什麼他們不使用傳統的1-SSE/SST超出了我的想象。
實現正常coefficient of determination equation的方法是:
preds <- c(1, 2, 3)
actual <- c(2, 2, 4)
rss <- sum((preds - actual)^2)
tss <- sum((actual - mean(actual))^2)
rsq <- 1 - rss/tss
不算太壞,通過課程的手編代碼,但是爲什麼沒有在統計數據主要由一個語言函數嗎?我在想我還是錯過了某處R^2的實現。
而不可避免的 - 「調整後的R^2呢?」問題在這裏解決 - http://stats.stackexchange.com/questions/48703/what-is-the-adjusted-r-squared-formula-in-lm-in-r-and-how-should-it-be -interpret – thelatemail
您可能需要指定如何創建此「建模數據」。 r.squared由與迴歸函數相關的彙總函數報告。但只有當這樣一個估計是有統計學意義的。 –
我有幾種不同的模型,但它不僅僅是像lm這樣的迴歸模型的輸出,所以彙總函數不起作用。基本上我需要能夠在兩個向量之間進行比較(李哲源的建議完全適用於此) –