7 votos

¿La pendiente de una regresión entre los valores observados y previstos es siempre igual a la $R^2$ del modelo original?

Como dice el título de mi pregunta, estoy confundido en cuanto a cuándo el $R^2$ del ajuste de un modelo no es igual a la pendiente de la regresión entre los valores observados y los predichos.

Intento presentar las estadísticas de predicción del modelo de forma similar a las que se presentan en las cifras resumidas del informe de validación de Globcolor ( enlace ) - (por ejemplo, la figura de la página 53 del .pdf):

enter image description here

Aquí vemos que presentan el gráfico de las concentraciones de clorofila observadas frente a las predichas, así como los estadísticos relativos a su regresión (por ejemplo, la línea discontinua: $R^2$ , $RMS$ , $\alpha$ - interceptar, y $\beta$ - pendiente).

Mi problema es que en mis comparaciones, siempre obtengo exactamente el mismo valor para el ajuste global del modelo $R^2$ y $\beta$ -pendiente de la regresión observada frente a la prevista.

Pregunta básica: ¿Cuándo (si es que alguna vez) pueden ser diferentes?

He incluido un ejemplo básico de mi problema en el siguiente script de R:

set.seed(1)
n <- 100
x <- runif(n)
e <- rnorm(n)
a <- 3
b <- 5
y <- a + x*b + e

#fit model
fit <- lm( y ~ x )

#plot regression
plot(x,y)
abline(fit)

#plot predicted versus observed
png("plot.png", units="in", width=5, height=5, res=400)
par(mar=c(5,5,1,1))
pred <- predict(fit)
plot(y, pred, xlim=range(c(y,pred)), ylim=range(c(y,pred)), xlab="observed", ylab="predicted")
abline(0,1, lwd=2, col=8)

#add regression
fit2 <- lm(pred ~ y)
lgd <- c(
    paste("R^2 =", round(summary(fit2)$r.squared,3)),
    paste("Offset =", round(coef(fit2)[1],3)),
    paste("Slope =", round(coef(fit2)[2],3))
)
legend("topleft", legend=lgd)
abline(fit2, lwd=2)
legend("bottomright", legend=c("predicted ~ observed", "1:1"), col=c(1,8), lty=1, lwd=2)

dev.off()

cor(pred, y)^2 # also the same

enter image description here

6voto

jldugger Puntos 7490

Siempre obtengo exactamente el mismo valor para el ajuste global del modelo $R^2$ y la pendiente de la regresión observada frente a la prevista.

Esto será cierto siempre que se incluya un término constante en el modelo general. ¿Por qué?

  1. $R^2$ mide la varianza del ajuste $\hat Y$ en relación con la varianza de $Y$ (siempre que el modelo incluya una constante) .

  2. Retrocediendo $\hat Y$ contra $Y$ o $Y$ contra $\hat Y$ deben producir idénticos estandarizado pendientes $\hat\beta_{\hat{Y}Y} = \hat\beta_{Y\hat{Y}}$ . Esto se debe a que la pendiente estandarizada en una regresión univariante de $Y$ contra cualquier $X$ es su coeficiente de correlación $\rho_{XY}$ que es simétrico en $X$ y $Y$ .

  3. La pendiente normalizada $\hat \beta_{XY}$ en cualquier regresión univariante de $Y$ contra cualquier $X$ está relacionada con la pendiente $\hat b_{XY}$ vía

    $$\hat \beta_{XY} = \hat b_{XY} \frac{\text{SD}(X)}{\text{SD}(Y)}.$$

  4. Retrocediendo $Y$ contra $\hat Y$ debe tener una pendiente unitaria $\hat b_{\hat{Y}Y}$ . Geométricamente, $\hat Y$ es la proyección de $Y$ en el espacio de columnas de la matriz de diseño y la regresión de $Y$ contra $\hat Y$ es $1$ veces el componente de $Y$ en esa proyección.

Si juntamos todo esto (en orden) obtenemos

$$R^2 = \rho^2_{\hat{Y}Y} = \hat\beta_{\hat{Y}Y}\hat\beta_{Y\hat{Y}} = \left(\hat b_{Y\hat{Y}} \frac{\text{SD}(Y)}{\text{SD}(\hat{Y})}\right)\left(\hat b_{\hat{Y}Y} \frac{\text{SD}(\hat{Y})}{\text{SD}(Y)}\right) = \hat b_{Y\hat{Y}}\hat b_{\hat{Y}Y} = \hat b_{Y\hat{Y}},$$

QED.

El resultado no es necesariamente cierto cuando el modelo no incluye una constante: casi cualquier simulación aleatoria, como se muestra a continuación, dará un contraejemplo.

n <- 10; d <- 2
x <- matrix(rnorm(n*d), ncol=d)
y <- x %*% (1:d) + rnorm(n, 3)
fit <- lm(y ~ x)
y.hat <- predict(fit)
#
# Look for the appearances of R^2 in the output.
#
var(y.hat) / var(y) # R^2
with(summary(lm(y.hat ~ y)), c(coefficients["y", 1], r.squared))
with(summary(lm(y ~ y.hat)), c(coefficients["y.hat", 1], r.squared))
#
# Repeat without a constant term: the same consistency among
# the output occurs, *but the slopes are not equal to R^2*.
#
with(summary(lm(y.hat ~ y - 1)), c(coefficients["y", 1], r.squared))
with(summary(lm(y ~ y.hat - 1)), c(coefficients["y.hat", 1], r.squared))

0voto

Aksakal Puntos 11351

$R^2$ no tiene por qué ser igual a $\beta$ . o tienes una rara coincidencia, o leer el mismo campo del objeto de ajuste de alguna manera.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X