Using Generalized Additive Model to smooth the data

Hi, I have some data, which is light measured vs date, 24 measurements every day.
I would like to use Generalized Additive Model (GAM) to smooth the measurments to better integrates trend in my dataset.
Here is my dataset. Does anyone can help me how to use GAM to smooth my dataset?

5 Comments

DId you already take a look at RegressionGAM and/or fitrgam? Can you be more specific about where you're stuck?
Yes, I did, but my problem is that I do not have variables, I just want touse GAM to take the trend of the data.
Well, if you don't have exact measurement time stamps, I would guess you have 1 data point / hour each day, for 360 days?! So just create your predictor variable 'time' yourself, e.g.:
t_hours = 1:24*360;
I am using these datetime values as vaiables, and I write down this code Mdl = fitrgam(y1,xData)
But I face this error:
Error using classreg.learning.regr.FullRegressionModel.prepareData (line 381)
Invalid data type. Response must be a double or single vector.
Sounds like your (repsonse-) variable has the wrong data type ;)
The screenshot in your question indicates that your response variable 'P_surf' is of type cell. Try to convert it:
y1 = cell2mat(P_surf);
Your predictor (which has only 358 colums btw) seems to be of type 'datetime'. If fitgram() can't handle that, try to convert it using datenum().
If that does not solve the error, post the output of class(y1) and class(xData).

Sign in to comment.

Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Asked:

on 15 Sep 2022

Commented:

on 20 Sep 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!