Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best fit curve for trend line

Problem Constraints

  • Size of the data set, but not the data itself, is known.
  • Data set grows by one data point at a time.
  • Trend line is graphed one data point at a time (using a spline/Bezier curve).

Graphs

The collage below shows data sets with reasonably accurate trend lines:

enter image description here

The graphs are:

  • Upper-left. By hour, with ~24 data points.
  • Upper-right. By day for one year, with ~365 data points.
  • Lower-left. By week for one year, with ~52 data points.
  • Lower-right. By month for one year, with ~12 data points.

User Inputs

The user can select:

  • the type of time series (hourly, daily, monthly, quarterly, annual); and
  • the start and end dates for the time series.

For example, the user could select a daily report for 30 days in June.

Trend Weight

To calculate the window size (i.e., the number of data points to average when calculating the trend line), the following expression is used:

data points / trend weight

Where data points is derived from user inputs and trend weight is 6.4. Even though a trend weight of 6.4 produces good fits, it is rather arbitrary, and might not be appropriate for different user inputs.

Question

How should trend weight be calculated given the constraints of this problem?

like image 672
Dave Jarvis Avatar asked Nov 14 '22 11:11

Dave Jarvis


1 Answers

Based on the looks of the graphs I would say you have too many points for your 12 point graph (it is just a spline of the points given... which is visually pleasing, but actually does more harm than good when trying to understand the trend) and too few points for your 365 point graph. Perhaps try doing something a little exponential like:

(Data points)^1.2/14.1

I do realize this is even more arbitrary than what you already have, but arbitrary isn't the worst thing in the world.

(I got 14.1 by trying to keep the 52 point graph fixed, since that one looks nice, by taking (52^(1.2)/52)*6.4=14.1. You using this technique you could try other powers besides 1.2 to see what you visually get.

Dan

like image 185
Dan Avatar answered Dec 19 '22 22:12

Dan