Suppose I have a time series which has a frequency of 1 observation every 3 days.

I'd like to have a value for each day, that is increase the time resolution of the time series on specific days. Note: I don't need to do this for all the time series.

How can I do this? At first I thought I could somehow interpolate the time series but since it is not necessarily linear (nor quadratic or polynomial) with time this trick might not work.

Let's consider a time series which is a sum of sinusoidal and cosinusoidal terms as an example. Note that my original time series (which I can't share here) might not be that smooth... Suppose the observations are every 3 days and I'd like to find the value of the time series on the 10th day.

t <- 1:30
tsv <- sin(t) + cos(2*t)
plot(t, tsv, type="l", ylab = "tsv", xlab="t")
points(tsv, pch="o", col="green")

enter image description here

Again, note that t is 3 days. That is, when t=10, it is the 30th day of observation.

The 10th day of observation should be between t=3 and t=4. What statistical method could be used to calculate the value of tsv for the 10th day?

Personally, as a first try I'd use:

  1. Geometrical "interpolation" by taking the line that intersects the two values of tsv at t=3 and t=4. Very rough approximation that assumes linearity of the time series between 3 and 4 and then calculate the value on the 10th day.
  2. Linear approximation of tsv by taking the numerical derivative of tsv in t=3 and then calculating $\Delta tsv = f'(t=3) \Delta t$

These methods do not seem very "statistical" based to me but they seem more on the math side of things. What statistical method could (or should I) use?


I would recommend that you fit an appropriate model for how your values depend on time and then interpolate. (This is actually what you have been doing.) An "appropriate" model will probably indeed involve periodic or harmonics to model seasonality, and potentially trends or other drivers, depending on your actual application.

A very simple model, e.g., using linear splines, may impose a lot of assumptions - but it may still work best, because it has low variance. More sophisticated models may look more elegant, but they will vary more.

Find which model is best by running cross-validation over a number of different ways to model your time series, using the values you already have. This will still only tell you how well your model performs in-sample. So if you have any way of actually obtaining some of the values you want to interpolate, these would be invaluable to check whether your interpolation makes sense. For all we know, the values you have never sampled are randomly drawn between 10,000 and 11,391.557, and all the interpolation is completely off the correct track.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.