12 votos

¿Como encuentro un valor de tira lisa p / regresión de loess?

Tengo algunas variables y estoy interesado en encontrar relaciones no lineales entre ellos. Así que me decidí a algunos spline o loess, y la impresión agradable parcelas (ver el código de abajo). Pero, también quiero tener algunas estadísticas que me da una idea de cuánto más probable es que la relación es una cuestión de azar... es decir, necesito un poco en general p-valor, como el que tengo para la regresión lineal, por ejemplo. En otras palabras, necesito saber si el amueblada curva tiene ningún sentido, ya que mi código de ajustar una curva a los datos.

x <- rnorm(1000)
y <- sin(x) + rnorm(1000, 0, 0.5)

cor.test(x,y)
plot(x, y, xlab = xlab, ylab = ylab)
spl1 <- smooth.spline(x, y, tol = 1e-6, df = 8)
lines(spl1, col = "green", lwd = 2)

spl2 <- loess(y ~ x)
x.pr <- seq(min(x), max(x), length.out = 100)
lines(x.pr, predict(spl2, x.pr), col = "blue", lwd = 2)

9voto

Eero Puntos 1612

Las estrías de la biblioteca tiene funciones bs y ns que va a crear spline base para usar con el lm función, entonces usted puede ajustar un modelo lineal y un modelo que incluye estrías y el uso de la anova función para hacer la completa y reducida del modelo de prueba para ver si la spline modelo se ajusta significativamente mejor que el modelo lineal.

Aquí está el código de ejemplo:

x <- rnorm(1000)
y <- sin(x) + rnorm(1000, 0, 0.5)

library(splines)

fit1 <- lm(y~x)
fit0 <- lm(y~1)
fit2 <- lm(y~bs(x,5))

anova(fit1,fit2)
anova(fit0,fit2)

plot(x,y, pch='.')
abline(fit1, col='red')
xx <- seq(min(x),max(x), length.out=250)
yy <- predict(fit2, data.frame(x=xx))
lines(xx,yy, col='blue')

También puede utilizar el poly función para hacer un polinomio de ajuste y prueba de la no-lineal de términos como una prueba de la curvatura.

Para el loess ajuste es un poco más complicado. Existen algunas estimaciones equivalente a los grados de libertad para el loess parámetro de suavizado que podría ser utilizado junto con el $R^2$ valores para el lineal y loess modelos para la construcción y la prueba de F. Creo que los métodos basados en arranque y pruebas de permutación puede ser más intuitivo.

Hay técnicas para calcular y trazar un intervalo de confianza para una loess ajuste (creo que puede haber una manera integrada en el paquete ggplot2), se puede trazar la banda de confianza y ver si una línea recta que se ajuste dentro de la banda (esto no es un p-valor, pero aún así da un sí/no.

Usted podría ajustar un modelo lineal y tomar los residuos y el ajuste de un modelo de loess a los residuos como respuesta (y la variable de interés como predictor), si el verdadero modelo es lineal, entonces este ajuste debe estar cerca de una línea plana y la reordenación de los puntos relativos a la predictor no debe hacer ninguna diferencia. Usted puede usar esto para crear una prueba de permutación. Ajuste el loess, encontrar el valor de la predicción más alejado de 0, ahora al azar permutar los puntos y ajuste de un nuevo loess y encontrar el más lejano del punto previsto de 0, repetir un montón de veces, el valor de p es la proporción de permutan los valores que están más lejos de 0 que el valor original.

También puede que desee ver en la validación cruzada como un método de elección de los loess de ancho de banda. Esto no da un p-valor, pero un infinito de ancho de banda corresponde a un perfecto modelo lineal, si la validación cruzada sugiere un gran ancho de banda, a continuación, que sugiere un modelo lineal puede ser razonable, si los mayores anchos de banda son claramente inferiores a algunos de los más pequeños anchos de banda, a continuación, esto sugiere definitiva curvatura y lineal no es suficiente.

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