# Remove Linear Trends from Timetable Data

This example shows how to remove a linear trend from daily closing stock prices in a timetable to emphasize the price fluctuations about the overall increase. If the data does have a trend, detrending it forces its mean to zero and reduces overall variation. The example simulates stock price fluctuations using a distribution taken from the `gallery` function.

Create a simulated timetable containing the daily price of a stock.

```t = 0:300; D = days(t); dailyFluct = randn(size(t)); price = cumsum(dailyFluct) + 20 + t/100; tt = timetable(D',price',VariableNames="StockPrice");```

Find the average daily price of a stock.

`mean(tt.StockPrice)`
```ans = 28.2260 ```

Plot and label the data. Notice the systematic increase in the stock prices.

```plot(tt,"Time","StockPrice"); legend("Original Data","Location","northwest"); xlabel("Time (days)"); ylabel("Stock Price (dollars)");``` Apply `detrend`, which performs a linear fit to the stock prices, removes the trend, and appends 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 20.538 -14.588 35.126 1 day 22.382 -12.698 35.08 2 days 20.133 -14.901 35.034 3 days 21.005 -13.983 34.988 4 days 21.334 -13.608 34.942 5 days 20.036 -14.86 34.896 6 days 19.612 -15.238 34.85 7 days 19.965 -14.839 34.804 8 days 23.553 -11.204 34.758 9 days 26.333 -8.3791 34.712 10 days 24.993 -9.6729 34.666 11 days 28.038 -6.582 34.62 12 days 28.773 -5.8006 34.574 13 days 28.72 -5.8077 34.528 14 days 29.445 -5.0369 34.482 15 days 29.25 -5.1859 34.436 ⋮ ```

Find the average of the detrended data.

`mean(tt.Trend)`
```ans = 28.2260 ```

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

Display the results by adding the trend line, the detrended data, and its mean to the graph.

```plot(tt,"StockPrice") hold on plot(tt,"Trend") plot(tt,"StockPrice_detrended") plot(tt.Time,zeros(size(t))) legend("Original Data","Trend","Detrended Data",... "Mean of Detrended Data","Location","northwest") xlabel("Time (days)"); ylabel("Stock Price (dollars)");``` 