# Remove Linear Trends from Timetable Data

This example shows how to remove a linear trend from daily closing stock prices in a timetable. If the data does have a trend, detrending forces the mean of the detrended data to zero and reduces overall variation.

### Create Stock Data

Create a sample timetable containing daily closing stock prices. Use randomly sampled numbers from a normal distribution.

```x = 0:300; Time = days(x)'; dailyFluct = gallery("normaldata",size(x),2); closing = cumsum(dailyFluct) + 20 + x/100; StockPrice = closing'; TT = timetable(Time,StockPrice)```
```TT=301×1 timetable Time StockPrice _______ __________ 0 days 21.749 1 day 21.892 2 days 22.227 3 days 21.443 4 days 21.768 5 days 21.251 6 days 22.193 7 days 23.368 8 days 21.332 9 days 20.698 10 days 22.449 11 days 22.946 12 days 24.004 13 days 25.503 14 days 26.783 15 days 24.937 ⋮ ```

Plot and label the stock price data.

```plot(TT,"Time","StockPrice"); xlabel("Time (days)"); ylabel("Stock Price (dollars)");```

### Remove Trend

Apply `detrend`, which performs a linear fit to the stock prices and removes the trend. Specify to append the detrended data to the input timetable.

`TT = detrend(TT,ReplaceValues=false);`

Compute the trend line by subtracting the detrended data from the input data.

```trend = TT.StockPrice - TT.StockPrice_detrended; TT = addvars(TT,trend,NewVariableNames="Trend")```
```TT=301×3 timetable Time StockPrice StockPrice_detrended Trend _______ __________ ____________________ ______ 0 days 21.749 -3.7893 25.538 1 day 21.892 -3.7397 25.631 2 days 22.227 -3.4975 25.724 3 days 21.443 -4.3742 25.817 4 days 21.768 -4.1423 25.91 5 days 21.251 -4.7525 26.003 6 days 22.193 -3.9033 26.096 7 days 23.368 -2.8216 26.189 8 days 21.332 -4.9502 26.282 9 days 20.698 -5.6776 26.375 10 days 22.449 -4.0195 26.468 11 days 22.946 -3.6157 26.561 12 days 24.004 -2.6498 26.654 13 days 25.503 -1.2442 26.747 14 days 26.783 -0.056718 26.84 15 days 24.937 -1.9958 26.933 ⋮ ```

Find the average closing price of the detrended data.

`average_detrended = mean(TT.StockPrice_detrended)`
```average_detrended = -1.2488e-14 ```

As expected, the detrended data has a mean very close to 0.

### Visualize Detrended Data

Display the results by plotting the original daily closing stock prices, the trend line, the detrended data, and its mean.

```plot(TT,"StockPrice") hold on plot(TT,"Trend") plot(TT,"StockPrice_detrended") yline(average_detrended) legend("Input Data","Trend","Detrended Data", ... "Mean of Detrended Data","Location","northwest") xlabel("Time (days)"); ylabel("Stock Price (dollars)");```