R – Mínimos cuadrados no lineales

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:

 S=\sum_{i=1}^{m} r_{i}^{2}

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:

 y = (a*x)/(b+x)

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *