【发布时间】:2020-01-21 00:00:24
【问题描述】:
我们有一个通过 KNN 方法预测 Y 的数据库,我们正在寻求估计预测的误差 (Ypredict-Yobserved),我的问题是如何计算 R 中此类模型的 R 平方? 谢谢你,
【问题讨论】:
-
你有一些关于如何在 R 中生成模型的工作代码吗?
标签: r prediction knn
我们有一个通过 KNN 方法预测 Y 的数据库,我们正在寻求估计预测的误差 (Ypredict-Yobserved),我的问题是如何计算 R 中此类模型的 R 平方? 谢谢你,
【问题讨论】:
标签: r prediction knn
您可以使用Wikipedia 中的公式计算此值
由于您没有提供任何数据,我将使用内置的mtcars数据进行说明。我会把它全部写出来,以便于映射到维基百科公式。
library(FNN)
TestSample = sample(nrow(mtcars), 5)
## predict values of mpg for the test sample
MTC_KNN = knn.reg(mtcars[-TestSample, -1],
mtcars[TestSample, -1], mtcars[-TestSample, 1])
## Now compute R-square
SSres = sum((mtcars[TestSample, 1] - MTC_KNN$pred)^2)
SStot = sum((mtcars[TestSample, 1] - mean(mtcars[-TestSample, 1]))^2)
Rsquare = 1 - SSres/SStot
【讨论】:
由于您没有提供数据,我主要只是在这里提供了一些数据。实现类似于第一个答案,但您应该为此使用函数。
# Y_Predict <- c(1:10)
#Y_Observed <- c(10:19)
rss <- function(Y_Predict,Y_Observed)
{
return(sum((Y_Predict - Y_Observed) ^ 2))
}
tss <- function(Y_Predict,Y_Observed)
{
return(sum((Y_Observed - mean(Y_Observed)) ^ 2))
}
r_square <- function(rss,tss)
{
return(1 - (rss(Y_Predict,Y_Observed)/ tss(Y_Predict,Y_Observed)))
}
#Confirming it runs
# rss(Y_Predict,Y_Observed)
#tss(Y_Predict,Y_Observed)
#r_square(Y_Predict,Y_Observed)
【讨论】:
preds <- c(1:10)
actual <- c(11:20)
# Residuals sum of squares
rss <- sum((preds - actual) ^ 2)
# Total sum of squares (proportional to the variance of the observed data)
tss <- sum((actual - mean(actual)) ^ 2)
# Coefficient of determination R2
r_square = 1 - (rss/tss)
【讨论】: