How to build a trendline on a graph in R
Asked Answered
A

2

6

I've checked everywhere, and people refer to examples that I can't understand (yes I'm kinda slow). Could anyone please explain me how to build a logarithmic trendline in R?

Here's the working example:

myds <- c(23.0415,13.1965,10.4110,12.2560,9.5910,10.7160,9.9665,8.5845,8.9855,8.8920,10.3425,9.3820,9.0860,9.6870,8.5635,9.0755,8.5960,7.9485,8.3235,8.1910)
plot(myds)

I can't find a simple way to apply regression trendlines. I'm interested in particular in the logarithmic and the linear trendlines. Is it possible to do without connecting any new packages?

Good sirs, please be kind to clarify!

Adit answered 1/3, 2016 at 16:47 Comment(5)
a trend is plotted between two sets of variables, your example has only one. you could get started here statmethods.net/graphs/scatterplot.htmlTitania
@Titania your right! the other set is ‘x <- c(1:20)‘. I will update my question. Thank you for the clarification.Adit
By a "logarithmic trend line" what do you mean, precisely? A linear regression of $y$ on $\ln(x)$ or something else?Riesman
Please also make your data example executable in RRiesman
@Riesman Thanks for your reply! I've update the question with a working R example, please let me know if it worksAdit
P
7

since you had some data points missing, I took what you had provided: the six points.

edit - now the full example was available

  1. A trendline is just a regression, and regressions are run most simple way like this: a<-lm(outcome~predictor) -- in this example the object a will hold your regression parameters. To get the values of your new trendline model, just use predict(model_name), or in your case predict(a)

  2. Adding line to a plot is dead simple. Just say lines(b), where b specifies the line you want to plot after you have used the plot() function.

To wrap it up:

[![myds <- c(23.0415,13.1965,10.4110,12.2560,9.5910,10.7160,9.9665,8.5845,8.9855,8.8920,10.3425,9.3820,9.0860,9.6870,8.5635,9.0755,8.5960,7.9485,8.3235,8.1910)
x <- (1:length(myds))
plot(myds)

#make the main plot
plot(x,myds,ylim=c(5,30),xlim=c(0,20))

#add linear trend
lines(predict(lm(myds~x)),col='green')

#one more trend
lines(predict(lm(myds~log(x))),col='red')][1]][1] 

resulting plot image

Pronation answered 2/3, 2016 at 8:55 Comment(5)
thanks for your reply! please check my updated answer with a working example codeAdit
can you please explain what exactly is happening here? why do you use those functions?Adit
@LoomyBear, which part is confusing you exactly?Pronation
well pretty much all of it for me as I don't understand what is happening. I don't want to use snippets of code without realising what in fact is happening. The thing is I want to understand how it works in order to master it at some point. Thank you anyway for the answer!Adit
what I suggest (this is how I got R to work for me) is that you take this example that works, paste it in your Rstudio/R, and play with it. Look at the result of each call, you can then strip off the functions one by one i.e call lines(predict(lm(myds~x)),col='green'), then predict(lm(myds~x)), then lm(myds~x). This way you will understand what is done, and help yourself for the future.Pronation
B
2

Since you have not provided reproducible examples, I'll post some links, which I think might help you:

An example for a simple, linear trend line is here: http://www.r-tutor.com/elementary-statistics/quantitative-data/scatter-plot

Furthermore, there has been a thread on this over at SO: How do I add different trend lines in R?

Using ggplot would make it a bit easier, as you can use the smooth functions.

Brookhouse answered 2/3, 2016 at 8:28 Comment(2)
thanks for your reply! I've updated the question with the working example code. I'll check your urls in the meantime!Adit
smooth functions link brokenFrontispiece

© 2022 - 2024 — McMap. All rights reserved.