Fourier Transform on varied time data So... no clue where I should be asking this question but I'm hoping someone here can at least point me in the right direction. I have a time series that I would like to do spectral analysis on but I can't find any tools for doing FFT that accommodate a varied time difference between data points (they all assume dt is constant). Does anyone know of a tool that would work for this (I'm specifically looking for a periodogram or some other way to determine periodicity).
My only thought is to do linear interpolation between data points at a specific time interval to give the data a constant dt but I'm worried that will scew the spectral analysis data.
Here is a small chunk of the data; time, data, dt
 time    data        dt
39.630  49662.1     0.170
39.810  49582.5     0.180
40.150  49430.0     0.340
40.320  49413.8     0.170
40.490  49324.0     0.170
40.670  49092.5     0.180
40.830  49025.6     0.160
41.010  49101.5     0.180

any suggestions??
 A: In statistical analysis involving periodic functions it is usual to fit the data to a periodic regression model that specifies the true regression function as a sum of some number of perfect sinusoidal waves:
$$Y(t_i) = \beta_0 + \sum_{k=1}^M (\beta_k^c \cdot \cos(2 \pi \delta_k t_i) + \beta_k^s \cdot \sin(2 \pi \delta_k t_i)) + \sigma \cdot \varepsilon_t 
\quad \quad \quad \quad \quad \varepsilon_t \sim \text{N}(0,1).$$
This is a Gaussian regression model with coefficient parameters $\beta_1^s,...,\beta_M^s$ and $\beta_1^s,...,\beta_M^c$ to determine the amplitude and phase angles of the signals, and parameters $\delta_1,...,\delta_M$ for the frequency of the signals.  In the case where the frequency parameters are fixed, this is a linear regression model, and in the case where one or more of the frequency parameters are parameters to be estimated, it is a nonlinear regression model.  (In order to ensure identifiability of the model, we impose a bound on the allowable frequencies to prevent aliasing.  In the case of evenly spaced observations this is achieved by requiring that all frequencies are below the Nyquist frequency.)
This regression model can be fit to the sample data using ordinary methods for linear/nonlinear regression (see below).  There is no requirement that the time-values be evenly spaced.  (For convenience we usually order the times so that $t_1 \leqslant ...  \leqslant t_n$, but even that is not a requirement of the model.)  In the special case where the times are evenly spaced, it turns out that the coefficient estimators are closely related to the discrete Fourier transform.  In the more general case the coefficient estimators have a more complex form, but they can be obtained by standard fit-methods for regression analysis.

Model form: To facilitate analysis, this regression model is formulated in vector notation as:
$$\mathbf{Y} = \mathbf{x}(\boldsymbol{\delta}) \boldsymbol{\beta} + \sigma \cdot \boldsymbol{\varepsilon} \quad \quad \quad \quad \quad 
\boldsymbol{\varepsilon} \sim \text{N}(\mathbf{0}, \boldsymbol{I}),$$
where the design matrix is:
$$\mathbf{x}(\boldsymbol{\delta}) = \begin{bmatrix}
1 & \cos(2 \pi \delta_1 t_1) & \sin(2 \pi \delta_1 t_1) & \cdots & \cos(2 \pi \delta_M t_1) & \sin(2 \pi \delta_M t_1) \\
1 & \cos(2 \pi \delta_1 t_2) & \sin(2 \pi \delta_1 t_2) & \cdots & \cos(2 \pi \delta_M t_2) & \sin(2 \pi \delta_M t_2) \\
1 & \cos(2 \pi \delta_1 t_3) & \sin(2 \pi \delta_1 t_3) & \cdots & \cos(2 \pi \delta_M t_3) & \sin(2 \pi \delta_M t_3) \\
\vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\
1 & \cos(2 \pi \delta_1 t_n) & \sin(2 \pi \delta_1 t_n) & \cdots & \cos(2 \pi \delta_M t_n) & \sin(2 \pi \delta_M t_n) \\
\end{bmatrix},$$
and the coefficient vector is:
$$\boldsymbol{\beta} = \begin{bmatrix}
\beta_0 & \beta_1^c & \beta_1^s & \cdots & \beta_M^c & \beta_M^s \\
\end{bmatrix}^\text{T}.$$
Note that the design matrix is dependent on the parameter vector $\boldsymbol{\delta}$. 
 The model is not linearlisable with respect to this frequency vector.  If this vector is fixed then this is a linear regression model; if it is a parameter to be estimated then this is a non-linear regression model.
As in spectral analysis, it is common to fix the frequency values in the regression to be frequencies at evenly spaced intervals, so that the periodic part of the regression essentially consists of a primary signal and its harmonics.  If you set $M = \lfloor n/2 \rfloor$ then you will get a perfect fit to the data, but it is usual to set $M$ far below this, in order to avoid over-fitting.  (Choosing $M$ can be done by fitting an initial signal and then adding harmonics using partial F-tests to determine when you should stop.)

Estimation methods: The coefficient parameters in this model can be estimated with standard MLEs and this leads to standard OLS estimates in the case of fixed frequencies (for more details, look up least-squares spectral analysis).  For a fixed $\boldsymbol{\delta}$ it is relatively simple to obtain the normal equation:
$$\mathbf{x}(\boldsymbol{\delta})^\text{T} \mathbf{x}(\boldsymbol{\delta}) \hat{\boldsymbol{\beta}} = \mathbf{x}(\boldsymbol{\delta}) \mathbf{y}.$$
In the case of evenly spaced observations you have $t=0,1,2,...,n-1$ and this leads to a normal equation that is closely related to the discrete Fourier transform.  In fact, in this case the regression-fitting process is equivalent to fitting the coefficient estimates to match the DFT of the data to the DFT of the predictions at the chosen frequency values.
In the broader case where the data is not evenly spaced the normal equations for the coefficient estimators will be a little more complicated, but they will still look essentially like DFTs but with unevenly spaced observations.  This can all be implemented using standard regression methods without any direct appeal to Fourier transforms, though obviously the results that come out of the estimation process will be closely related to Fourier analysis.
A: In the absence of a constant interval between measurements/readings you might consider a time bucket and use the average of the values in the time range for each bucket.
