Sono in grado di aggiungere una linea di tendenza lineare utilizzando le funzioni lm
e abline
, ma come si aggiungono altre linee di tendenza, ad esempio logaritmiche, esponenziali e di tendenza?Come si aggiungono diverse linee di tendenza in R?
17
A
risposta
38
Ecco quello che ho preparato in precedenza:
# set the margins
tmpmar <- par("mar")
tmpmar[3] <- 0.5
par(mar=tmpmar)
# get underlying plot
x <- 1:10
y <- jitter(x^2)
plot(x, y, pch=20)
# basic straight line of fit
fit <- glm(y~x)
co <- coef(fit)
abline(fit, col="blue", lwd=2)
# exponential
f <- function(x,a,b) {a * exp(b * x)}
fit <- nls(y ~ f(x,a,b), start = c(a=1, b=1))
co <- coef(fit)
curve(f(x, a=co[1], b=co[2]), add = TRUE, col="green", lwd=2)
# logarithmic
f <- function(x,a,b) {a * log(x) + b}
fit <- nls(y ~ f(x,a,b), start = c(a=1, b=1))
co <- coef(fit)
curve(f(x, a=co[1], b=co[2]), add = TRUE, col="orange", lwd=2)
# polynomial
f <- function(x,a,b,d) {(a*x^2) + (b*x) + d}
fit <- nls(y ~ f(x,a,b,d), start = c(a=1, b=1, d=1))
co <- coef(fit)
curve(f(x, a=co[1], b=co[2], d=co[3]), add = TRUE, col="pink", lwd=2)
aggiungere una legenda descrittiva:
# legend
legend("topleft",
legend=c("linear","exponential","logarithmic","polynomial"),
col=c("blue","green","orange","pink"),
lwd=2,
)
Risultato:
Un modo generico e meno lunga mano di complotto le curve devono solo passare x
e th e elenco dei coefficienti della funzione curve
, come:
curve(do.call(f,c(list(x),coef(fit))),add=TRUE)
17
Un approccio ggplot2
utilizzando stat_smooth
, utilizzando gli stessi dati thelatemail
DF <- data.frame(x, y)
ggplot(DF, aes(x = x, y = y)) + geom_point() +
stat_smooth(method = 'lm', aes(colour = 'linear'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(colour = 'polynomial'), se= FALSE) +
stat_smooth(method = 'nls', formula = y ~ a * log(x) +b, aes(colour = 'logarithmic'), se = FALSE, start = list(a=1,b=1)) +
stat_smooth(method = 'nls', formula = y ~ a*exp(b *x), aes(colour = 'Exponential'), se = FALSE, start = list(a=1,b=1)) +
theme_bw() +
scale_colour_brewer(name = 'Trendline', palette = 'Set2')
Si potrebbe anche adattarsi alla linea di tendenza esponenziale come utilizzando glm
con una funzione di collegamento del registro
glm(y~x, data = DF, family = gaussian(link = 'log'))
Per un po 'di divertimento, è possibile utilizzare theme_excel
dal ggthemes
library(ggthemes)
ggplot(DF, aes(x = x, y = y)) + geom_point() +
stat_smooth(method = 'lm', aes(colour = 'linear'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(colour = 'polynomial'), se= FALSE) +
stat_smooth(method = 'nls', formula = y ~ a * log(x) +b, aes(colour = 'logarithmic'), se = FALSE, start = list(a=1,b=1)) +
stat_smooth(method = 'nls', formula = y ~ a*exp(b *x), aes(colour = 'Exponential'), se = FALSE, start = list(a=1,b=1)) +
theme_excel() +
scale_colour_excel(name = 'Trendline', palette = 'Set2')
Problemi correlati
- 1. Aggiunta di linee di tendenza/boxplot (per gruppo) in ggplot2
- 2. ipython come eseguire diverse linee di storia
- 3. comando bash si estende su più linee con diverse linee di commenti in-tra
- 4. Come aggiungere linee diverse per faccette
- 5. matplotlib.pyplot Come denominare linee diverse nello stesso grafico?
- 6. con diverse variabili in R
- 7. Come tracciare linee multiple in R
- 8. come personalizzare MKPolyLineView per disegnare linee di stile diverse
- 9. In Angular2 RC4 come si aggiungono componenti all'array di precompilazione?
- 10. Come si aggiungono le caselle di testo dinamicamente in Javascript?
- 11. Può leggere linee in parallelo in R
- 12. Come si aggiungono le intestazioni a dataTaskWithUrl?
- 13. Interfaccia della riga di comando Java: con più barre di avanzamento su linee diverse utilizzando '\ r'
- 14. Come si aggiungono attributi personalizzati ai gruppi clienti in Magento?
- 15. Come si aggiungono i caratteri personalizzati in TCPDF?
- 16. Come si aggiungono i bambini a StatusBar in Glade3?
- 17. Come si aggiungono collegamenti alle immagini in Twitter Bootstrap Carousel?
- 18. Come si aggiungono elementi aggiuntivi a NSMenu in Interface Builder?
- 19. diverse sostituzioni in una riga R
- 20. punti di collegamento con le linee in ggplot2 in r
- 21. tavolo Animazione quando si aggiungono righe
- 22. aggiungono troppo spazio?
- 23. L'aggiunta di linee orizzontali parziali con ggplot2 in R
- 24. Come contrassegnare la build come instabile quando si è verificata una tendenza di avviso?
- 25. comando diff per ottenere solo il numero di linee diverse
- 26. Delphi perdita di memoria quando si aggiungono lingua
- 27. Pacchetto mappe R - come disegnare linee tra paesi?
- 28. Come interrompere le linee in PowerShell?
- 29. Rstudio e R terminale dare uscite diverse
- 30. Come si aggiungono le query LINQ tra loro?
Questo è molto utile. Come posso usare questa risposta con un asse Data x? – pomarc