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:
- a través de la
deming
paquete , - varios posts de stackoverflow:
- y este bonito post de CrossValidated: ¿Cómo realizar una regresión ortogonal (mínimos cuadrados totales) mediante PCA? .
- También he encontrado una solución en MATLAB: Problema de ajuste de curvas por mínimos cuadrados totales ,
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?