Sólo en determinadas circunstancias $R^2$ tienen su interpretación tradicional de la proporción de la varianza explicada y fuera de la muestra no es una circunstancia de este tipo. Sin embargo, algún tipo de medida estandarizada para el rendimiento de la regresión podría ser más útil que decir: "Bueno, jefe, tenemos un MSE de 11".
(En realidad, no estoy convencido de que esto sea tan útil como parece. Por ejemplo, ¿es $R^2=0.4$ siempre como un suspenso en la escuela, o es $R^2=0.9$ siempre como un grado A).
Para responder a su pregunta, considere lo que $R^2$ lo hace en su entorno tradicional.
$$ R^2 = 1-\dfrac{\sum\bigg( y_i-\hat y_i \bigg)^2} {\sum \bigg( y_i-\bar y \bigg)^2 } $$
Mirando la ecuación, $R^2$ compara el rendimiento de su modelo que hace predicciones $\hat y_i$ a un modelo ingenuo que, para estimar el valor esperado condicional, predice siempre el valor esperado agrupado/marginal de $y$ por lo que la media $\bar y$ .
Por lo tanto, para hacer algún tipo de $R^2$ La única forma que, para mí, encaja con el espíritu de eso es comparar sus predicciones fuera de la muestra con las predicciones de un modelo ingenuo que siempre adivina el mismo valor: la media de $y$ calculado a partir de los datos de la muestra, por lo que $\bar y_{in}$ y no $\bar y_{out}$ .
Respondiendo explícitamente a sus dos preguntas:
-
El valor "clásico" es el habitual en la muestra $R^2$ .
-
Creo que hay un "sólo" implícito, como en "no SÓLO en la muestra de formación".
EDITAR
Incluiré un R
simulación para demostrar que $R^2$ pierde su interpretación como "proporción de la varianza explicada" cuando se utilizan datos fuera de la muestra, ya que el término "otros" en ese enlace con validación cruzada no es igual a cero.
set.seed(2021)
# Set size of both training and test sets
# (They're not usually equal, but they will be here,
# since simulation data are unlimited)
#
N <- 1000
# Simulate the in-sample and out-of-sample values of a feature
#
x_in <- runif(N, 0, 7)
x_out <- runif(N, 0, 7)
# Simulate the in-sample and out-of-sample values of a response variable
#
y_in <- x_in + rnorm(N)
y_out <- x_out + rnorm(N)
# Fit a linear regression to the in-sample data
#
L <- lm(y_in ~ x_in)
# Make predictions on the in-sample and out-of-sample data
#
preds_in <- predict(L)
preds_out <- predict(L, data.frame(x_in = x_out))
# Calculate that "other" term from:
# https://stats.stackexchange.com/questions/551915
#
other_in <- sum((y_in - preds_in) * (preds_in - mean(y_in)))
other_out <- sum((y_out - preds_out) * (preds_out - mean(y_in)))
# Also calculate the "other" term using the out-of-sample mean of y
#
other_out_out_mean <- sum((y_out - preds_out) * (preds_out - mean(y_out)))
# Display the "other" terms to show that the in-sample "other
# is effectively zero while the out-of-sample "other"
# has a large absolute value of ~50.
#
# Using the mean of out-of-sample y does not fare much better,
# since the regression coefficients are OLS estimates for the
# in-sample data, NOT for the out-of-sample data
#
other_in # 1.226068e-11
other_out # -50.96088
other_out_out_mean # -51.3533
```