Obtenga el término de ecuación cuadrática de un gráfico en R

Necesito encontrar el término de ecuación cuadrática de un gráfico que tracé en R. Cuando hago esto en Excel, el término aparece en un textbox en el gráfico pero no estoy seguro de cómo moverlo a una celda para su uso posterior ( para aplicar a valores que requieren calibración) o, de hecho, cómo pedirlo en R. Si es sumble en R, ¿se puede save como un object para hacer cálculos futuros?

Parece que debería ser una request directa en R, pero no puedo encontrar ninguna pregunta similar. Muchas gracias de antemano por cualquier ayuda que alguien pueda brindar sobre esto.

Todas las respuestas proporcionan aspectos de lo que aparenta que desea hacer, pero hasta el momento no lo reúne todo. Consideremos el ejemplo de respuesta de Tom Liptrot:

fit <- lm(speed ~ dist + I(dist^2), cars) 

Esto nos da un model lineal ajustado con un cuadrático en la variable dist . Extraemos los coeficientes del model utilizando la coef() extractora coef() :

 > coef(fit) (Intercept) dist I(dist^2) 5.143960960 0.327454437 -0.001528367 

Entonces su ecuación ajustada (sujeta al networkingondeo debido a la printing) es:

\ hat {velocidad} = 5.143960960 + (0.327454437 * dist) + (-0.001528367 * dist ^ 2)

(donde \ hat {velocidad} son los valores ajustados de la respuesta, velocidad).

Si desea aplicar esta ecuación ajustada a algunos datos, entonces podemos escribir nuestra propia function para hacerlo:

 myfun <- function(newdist, model) { coefs <- coef(model) res <- coefs[1] + (coefs[2] * newdist) + (coefs[3] * newdist^2) return(res) } 

Podemos aplicar esta function de esta manera:

 > myfun(c(21,3,4,5,78,34,23,54), fit) [1] 11.346494 6.112569 6.429325 6.743024 21.386822 14.510619 11.866907 [8] 18.369782 

para algunos nuevos valores de distancia ( dist ), que es lo que parece querer hacer desde la Q. Sin embargo, en R no hacemos cosas como esta normalmente, porque, ¿por qué el usuario debe saber cómo formarse? o valores pnetworkingichos de todos los diferentes types de models que se pueden ajustar en R?

En R, utilizamos methods estándar y funciones de extracción. En este caso, si desea aplicar la "ecuación", ese Excel muestra, a todos sus datos para get los valores ajustados de esta regresión, en R fitted() function fitted() :

 > fitted(fit) 1 2 3 4 5 6 7 8 5.792756 8.265669 6.429325 11.608229 9.991970 8.265669 10.542950 12.624600 9 10 11 12 13 14 15 16 14.510619 10.268988 13.114445 9.428763 11.081703 12.122528 13.114445 12.624600 17 18 19 20 21 22 23 24 14.510619 14.510619 16.972840 12.624600 14.951557 19.289106 21.558767 11.081703 25 26 27 28 29 30 31 32 12.624600 18.369782 14.057455 15.796751 14.057455 15.796751 17.695765 16.201008 33 34 35 36 37 38 39 40 18.688450 21.202650 21.865976 14.951557 16.972840 20.343693 14.057455 17.340416 41 42 43 44 45 46 47 48 18.038887 18.688450 19.840853 20.098387 18.369782 20.576773 22.333670 22.378377 49 50 22.430008 21.93513 

Si desea aplicar la ecuación de su model a algunos valores de datos nuevos que no se usan para ajustarse al model, entonces necesitamos get pnetworkingicciones del model. Esto se hace usando la function de pnetworkingict() . Usando las distancias que enchufé en myfun arriba, así es como lo haríamos de una manera más cinput en R:

 > newDists <- data.frame(dist = c(21,3,4,5,78,34,23,54)) > newDists dist 1 21 2 3 3 4 4 5 5 78 6 34 7 23 8 54 > pnetworkingict(fit, newdata = newDists) 1 2 3 4 5 6 7 8 11.346494 6.112569 6.429325 6.743024 21.386822 14.510619 11.866907 18.369782 

Primero creamos un nuevo dataframe con un componente llamado "dist" , que contiene las nuevas distancias para las que queremos get pnetworkingicciones de nuestro model. Es importante tener en count que incluimos en este dataframe una variable que tiene el mismo nombre que la variable utilizada cuando creamos nuestro model ajustado. Este nuevo dataframe debe contener todas las variables utilizadas para ajustarse al model, pero en este caso solo tenemos una variable, dist . Tenga en count también que no necesitamos include nada sobre dist ^ 2. R se encargará de eso por nosotros.

Luego usamos la function pnetworkingict() , dándole nuestro model ajustado y proporcionando el nuevo dataframe recién creado como argumento 'newdata' , que nos da nuestros nuevos valores pnetworkingichos, que coinciden con los que hicimos anteriormente.

Algo que pasé por alto es que pnetworkingict() y fitted() son realmente un grupo completo de funciones. Existen versiones para los models lm() , para los models glm() , etc. Se conocen como funciones genéricas , con methods (versiones si lo desea) para varios types diferentes de objects. En general, el usuario solo necesita recordar usar fitted() o pnetworkingict() etc. mientras que R se ocupa de usar el método correcto para el tipo de model ajustado que le proporcione. Estos son algunos de los methods disponibles en la base R para la function genérica fitted() :

 > methods(fitted) [1] fitted.default* fitted.isoreg* fitted.nls* [4] fitted.smooth.spline* Non-visible functions are asterisked 

Posiblemente obtendrá más que esto dependiendo de qué otros packages haya cargado. El * solo significa que no puede referirse a esas funciones directamente, tiene que usar fitted() y R resuelve cuál de ellas usar. Tenga en count que no hay un método para los objects lm() . Este tipo de object no necesita un método especial y, por lo tanto, el método default se utilizará y es adecuado.

Puede agregar un término cuadrático en la forumla en lm para get el ajuste que busca. Debe usar un I () alnetworkingedor del término que desea cuadrar como en el siguiente ejemplo:

 plot(speed ~ dist, cars) fit1 = lm(speed ~ dist, cars) #fits a linear model abline(fit1) #puts line on plot fit2 = lm(speed ~ I(dist^2) + dist, cars) #fits a model with a quadratic term fit2line = pnetworkingict(fit2, data.frame(dist = -10:130)) lines(-10:130 ,fit2line, col=2) #puts line on plot 

Para get los coeficientes de este uso:

 coef(fit2) 

No creo que sea posible en Excel, ya que solo proporcionan funciones para get coeficientes para una regresión lineal ( SLOPE , INTERCEPT , LINEST ) o para uno exponencial ( GROWTH , LOGEST ), aunque puede tener más suerte al usar Visual Basic.

En cuanto a R, puede extraer coeficientes de model utilizando la function coef :

 mdl <- lm(y ~ poly(x,2,raw=T)) coef(mdl) # all coefficients coef(mdl)[3] # only the 2nd order coefficient 

Supongo que quiere decir que traza valores X contra Y en Excel o R, y en Excel usa la funcionalidad "Agregar línea de tendencia". En R, puede usar la function lm para ajustar una function lineal a sus datos, y esto también le da el término "r squanetworking" (vea ejemplos en la página enlazada ).

Intereting Posts