Así que, me gustaría recomendar el uso de un método estándar para la comparación de modelos anidados. En su caso, considere dos modelos alternativos, el ajuste cúbico de ser el más "complejo". Una De $\chi^2$-prueba indica si la suma de cuadrados residual o la desviación disminuye significativamente cuando se agrega más términos. Es muy similar a la comparación de un modelo que incluye sólo la intersección (en este caso, usted tiene varianza residual sólo) frente a otro en el que se incluyen un predictor significativo: ¿este añadido predictor de la cuenta por una parte suficiente de la varianza de la respuesta? En su caso, equivale a decir: Modelado de una relación cúbica entre X y y disminuye la varianza inexplicada (equivalentemente, el $R^2$ de aumento), y así proporcionar un mejor ajuste a los datos en comparación con un ajuste lineal.
Se utiliza a menudo como una prueba de linealidad entre la variable de respuesta y el predictor, y esta es la razón por la que Frank Harrell aboga por el uso de restringido de interpolación cúbica en lugar de asumir una estricta relación lineal entre y y el continuo Xs (por ejemplo, la edad).
El siguiente ejemplo viene de un libro que me estaba leyendo hace unos meses (datos de Alta dimensión de análisis en la investigación del cáncer, Cap. 3, pág. 45), pero es posible que también sirve como una ilustración. La idea es simplemente para adaptarse a diferentes tipos de modelos para la simulación de un conjunto de datos, que pone claramente de relieve una relación no lineal entre la variable respuesta y el predictor. El verdadero modelo generativo se muestra en negro. Los otros colores son para los diferentes modelos (restringido cubic spline, B-spline cerca de los tuyos, y CV alisado spline).
library(rms)
library(splines)
set.seed(101)
f <- function(x) sin(sqrt(2*pi*x))
n <- 1000
x <- runif(n, 0, 2*pi)
sigma <- rnorm(n, 0, 0.25)
y <- f(x) + sigma
plot(x, y, cex=.4)
curve(f, 0, 6, lty=2, add=TRUE)
# linear fit
lm00 <- lm(y~x)
# restricted cubic spline, 3 knots (2 Df)
lm0 <- lm(y~rcs(x,3))
lines(seq(0,6,length=1000),
predict(lm0,data.frame(x=seq(0,6,length=1000))),
col="red")
# use B-spline and a single knot at x=1.13 (4 Df)
lm1 <- lm(y~bs(x, knots=1.13))
lines(seq(0,6,length=1000),
predict(lm1,data.frame(x=seq(0,6,length=1000))),
col="green")
# cross-validated smoothed spline (approx. 20 Df)
xy.spl <- smooth.spline(x, y, cv=TRUE)
lines(xy.spl, col="blue")
legend("bottomleft", c("f(x)","RCS {rms}","BS {splines}","SS {stats}"),
col=1:4, lty=c(2,rep(1,3)),bty="n", cex=.6)
Ahora, supongamos que queremos comparar el ajuste lineal (lm00
) y el modelo de depender de la B-spline (lm1
), sólo tiene que hacer una prueba F para ver que este último proporciona un mejor ajuste:
> anova(lm00, lm1)
Analysis of Variance Table
Model 1: y ~ x
Model 2: y ~ bs(x, knots = 1.13)
Res.Df RSS Df Sum of Sq F Pr(>F)
1 998 309.248
2 995 63.926 3 245.32 1272.8 < 2.2e-16 ***
---
Signif. codes: 0 ‘***' 0.001 ‘**' 0.01 ‘*' 0.05 ‘.' 0.1 ‘ ' 1
Asimismo, es habitual comparar GLM con GAM con base en los resultados de una $\chi^2$-prueba.