Alex Rivera | Logout

Python: Finding a trend in a set of numbers

Asked 2012-04-06T19:56:04.917
39

I have a list of numbers in Python, like this:

x = [12, 34, 29, 38, 34, 51, 29, 34, 47, 34, 55, 94, 68, 81]

What's the best way to find the trend in these numbers? I'm not interested in predicting what the next number will be, I just want to output the trend for many sets of numbers so that I can compare the trends.

Edit: By trend, I mean that I'd like a numerical representation of whether the numbers are increasing or decreasing and at what rate. I'm not massively mathematical, so there's probably a proper name for this!

Edit 2: It looks like what I really want is the co-efficient of the linear best fit. What's the best way to get this in Python?

Edit
Report

1 Answer

6

You could do a least squares fit of the data.

Using the formula from this page:

y = [12, 34, 29, 38, 34, 51, 29, 34, 47, 34, 55, 94, 68, 81]
N = len(y)
x = range(N)
B = (sum(x[i] * y[i] for i in xrange(N)) - 1./N*sum(x)*sum(y)) / (sum(x[i]**2 for i in xrange(N)) - 1./N*sum(x)**2)
A = 1.*sum(y)/N - B * 1.*sum(x)/N
print "%f + %f * x" % (A, B)

Which prints the starting value and delta of the best fit line.

answered 2012-04-06T19:59:11.890

Your Answer