non linear regression code

1 view (last 30 days)
anton fernando
anton fernando on 12 Aug 2015
Commented: Brendan Hamm on 13 Aug 2015
I did linear regression by the code below. data set is attached.
clear;
clc
load('data.mat');
F=F'; T=T'; W=W';
Q1=F;
Q2=T;
X=[Q1 Q2];
for i=1:70
Y=W(:,i);
% b = regress(Y,X,0.05);
mdl{i} = fitlm(X,Y);
XX{i}= mdl{i}.Coefficients;
rmqs(i)=mdl{i}.RMSE;
for j=1:3
b(i,j)=XX{i}{j,1};
er(i,j)=XX{i}{j,2};
end
end
I want to change this code to fit the data for a non-linear model. which is,
Y~b0+b1*Q1+b2*Q2+b3*cos(2*pi*T+b4)
instead,
Y~b0+b1*Q1+b2*Q2
I need the coefficients with errors. How can I do that?

Answers (1)

Brendan Hamm
Brendan Hamm on 12 Aug 2015
If you have a late enough version you can use fitnlm or nlinfit. I usually use the former.
Is T a predictor variable in this equation or a constant? If it is a constant you would want to create a function handle (which nlinfit requires anyhow, but fitnlm accepts). If it is a predictor you would need to place it in the matrix X and you can pass the modelspec in fitnlm as:
modelspec = 'y~b1+b2*x1+b3*x2+b4*cos(2*pi*x3+b5)';
I imagine you would want to estimate the frequency as well, unless this is known a priori.
  4 Comments
anton fernando
anton fernando on 12 Aug 2015
Actually I can find the things that you said by googling. I want an example similar to my problem or the solution. I am not too much familiar with MATLAB regression. Any help will be appreciated.
Brendan Hamm
Brendan Hamm on 13 Aug 2015
As useful as google sounds like a complement, thank you. I might have to place that on my resume.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!