Linear Regression - hac function

21 views (last 30 days)
Karoline Bax
Karoline Bax on 4 Aug 2018
Answered: Vishal Chaudhary on 14 Aug 2018
Hello,
I am relatively new to MATLAB so please excuse this odd question. I was doing a linear regression using the fitlm function, however, I had problems with heteroscedasticity. I then found the hac function.
Is there a way to also get the R-squared for this function. So I basically only use this function instead? my Y variable is Excess Return and my x variables are the three Fama French Factors.
Thank you very much for your advice!
  5 Comments
Karoline Bax
Karoline Bax on 5 Aug 2018
Edited: dpb on 5 Aug 2018
Hello, thank you for your replies. The function I am referring to is for Heteroscedasticity and autocorrelation consistent covariance estimators ( https://de.mathworks.com/help/econ/hac.html ). As it gives me all the pvalues, coefficience and tStatistics I was wondering if there is a way for me to get the Rsquared too? Instead of running a fitml ( https://de.mathworks.com/help/stats/fitlm.html ) for the Squared. Thank you for your advice!
dpb
dpb on 5 Aug 2018
Rsq = 1- SSe/SSt; no need to run fitlm (which would estimate a different model, anyway).

Sign in to comment.

Answers (1)

Vishal Chaudhary
Vishal Chaudhary on 14 Aug 2018
You can also use fitlm function with hac.
DataTable = array2table([X,y],'VariableNames',{'X1','X2','X3','Y'});
OLSModel = fitlm(DataTable);
[EstCov,se,coeff]=hac(OLSModel,'display','full');
Or, you can calculate r-squared as follows only using hac:
[EstCov,se,coeff] = hac(DataTable,'display','full');
ypred2 = [ones(size(X,1),1) X] * coeff;
sse = var(y-ypred2);
sst = var(y);
rsq = 1-(sse/sst);

Community Treasure Hunt

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

Start Hunting!