R в квадрате для метода K-NN в R - PullRequest
0 голосов
/ 21 января 2020

У нас есть база данных с предопределенным Y по методу KNN, мы рассчитываем оценить ошибку прогноза (Ypredict-Yobserved), у меня вопрос, как рассчитать R-квадрат для этого типа моделей в R? Спасибо,

Ответы [ 3 ]

0 голосов
/ 21 января 2020
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)
0 голосов
/ 21 января 2020

Поскольку вы не предоставили данные, я в основном просто предоставил некоторые данные здесь. Реализация похожа на первый ответ, но вы действительно должны использовать функции для этого.

       # 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)
0 голосов
/ 21 января 2020

Вы можете вычислить это, используя формулу из Википедии

Поскольку вы не предоставляете никаких данных, я проиллюстрирую это встроенными данными 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
...