6 votos

Mínimos cuadrados totales no lineales / Regresión Deming en R

He estado usando nls() para ajustar un modelo personalizado a mis datos, pero no me gusta cómo se ajusta el modelo y me gustaría utilizar un enfoque que minimice los residuos en los ejes x e y.

He hecho un montón de búsqueda, y he encontrado soluciones para el montaje de lineal modelos:

pero éstos se ajustan a un polinomio de segundo orden y no a un modelo personalizado definido por el usuario.

Lo que me gustaría es algo parecido a nls() que realiza la minimización de los residuos x e y. Esto me permitiría introducir mi modelo personalizado. ¿Alguien conoce alguna solución en R?

He aquí un ejemplo, pero tenga en cuenta que estoy buscando sugerencias sobre una solución general para la regresión no lineal por mínimos cuadrados totales, y no algo específico para este conjunto de datos (esto es sólo un ejemplo de datos de aquí ):

df <- structure(list(x = c(3, 4, 5, 6, 7, 8, 9, 10, 11), y = c(1.0385, 
1.0195, 1.0176, 1.01, 1.009, 1.0079, 1.0068, 1.0099, 1.0038)), .Names = c("x", 
"y"), row.names = c(NA, -9L), class = "data.frame")

(nlsfit <- nls(y ~ a^b^x, data = df, start = c(a=0.9, b=0.6)))

library(ggplot2)
ggplot(df, aes(x=x, y=y)) + 
    geom_point() + 
    geom_smooth(method="nls", formula = y ~ a^b^x, se=F, start = list(a=0.9, b=0.6))

¿Alguien tiene alguna sugerencia sobre cómo podría proceder?

7voto

Brian Borchers Puntos 2546

Existe una técnica llamada "Regresión por distancia ortogonal" que lo hace. Recientemente se ha publicado una implementación en R:

http://www.r-bloggers.com/introducing-orthogonal-nonlinear-least-squares-regression-in-r/

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