En la función no lineal, los puntos trazados en el gráfico no son lineales y, por lo tanto, no dan una curva o una línea en el gráfico. Por lo tanto, el análisis de regresión no lineal se usa para alterar los parámetros de la función para obtener una curva o línea de regresión que esté cerca de sus datos.
Para realizar esto, se utiliza el enfoque de mínimos cuadrados no lineales para minimizar la suma total de cuadrados de valores residuales o valores de error, es decir, la diferencia entre los puntos verticales en el gráfico desde la línea de regresión y se ajustará a la función no lineal en consecuencia.
Fórmula matemática:
dónde,
r is residual or error value between 2 points.
La función matemática anterior para encontrar la función residual mínima se puede realizar en R usando resid()
la función.
El análisis de regresión es ampliamente utilizado en todo tipo de asuntos comerciales para tomar una decisión inteligente o predecir el futuro alterando un factor de su negocio.
En lenguaje R, la función de mínimos cuadrados no lineales se representa como –
Sintaxis:
nls(formula, start)
dónde,
fórmula indica la fórmula del modelo, es decir, el
inicio de la función no lineal es una lista de estimaciones iniciales
Nota: Para conocer más parámetros opcionales de nls(), use el siguiente comando en la consola R:
help("nls")
Ejemplo 1:
En este ejemplo, se toma una función no lineal y se traza en el gráfico como puntos.
# defining x and y coordinates x <- seq(0, 10, 0.1) y <- rnorm(101, 5, 1) # output to be present as PNG file png(file ="nls.png") # Taking the model to get fitted m <- nls(y~a * x ^ 3 + b * x + c, start = list(a = 1, b = 2, c = 1)) # plot the graph plot(x, y, col.lab ="darkgreen", col.axis ="darkgreen") # plot the graph with new fitting line # or regression line lines(x, predict(m)) # saving the file dev.off() # print minimum residual or error value print(sum(resid(m)^2))
Producción :
[1] 106.4507
Ejemplo 2:
En este ejemplo, el siguiente código acepta una función no lineal como se muestra:
Además, trazando los puntos y la línea de regresión y también, descubriendo la bondad del ajuste también usando el método cor() .
# creating sequence of 101 values from 0 to 100 x <- seq(0, 100, 1) y<-((runif(1, 10, 20)*x)/(runif(1, 0, 10) + x)) + rnorm(101, 0, 1) # output to be present as PNG file png(file ="nls2.png") # using starting values in nls() function # to not get a warning m<-nls(y~a * x/(b + x), start = list(a = 1, b = 2)) # goodness of fit cor(y, predict(m)) # minimized residual value sum(resid(m)^2) # plotting points on graph plot(x, y) # finding regression line lines(x, predict(m)) # saving the file dev.off()
Producción :
[1] 0.9622681 [1] 108.1481
Publicación traducida automáticamente
Artículo escrito por utkarsh_kumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA