Matrix is singular, RCOND=NAN for a OLS regression

3 views (last 30 days)
Hello all,
I am attempting to code an OLS regression, using a OLS-function of my own design. The code looks as follows:
Y = lntrentsa;
nobs = size(Y,1);
X = [ones(nobs,1), airbnbsa, airbrnb*oorate10];
knum = size(X,2);
b = inv(X'*X) * X'*Y;
However, I am unable to get an output for b(eta) as I get the error message:
Warning: Matrix is singular, close to singular or badly scaled. Results may be inaccurate. RCOND = NaN
Would anyone know why this might be? Which Matrix does the error message mean? I have attempted rewriting b but I still only get Nan values:
b = (X'*X)\ X'*Y
My dataset is quite large (nobs = 745776), could this perhaps have an influence?
I'd be grateful for any advice! Thank you

Answers (1)

Bruno Luong
Bruno Luong on 24 Apr 2022
Edited: Bruno Luong on 24 Apr 2022
First make sure your data X and Y contain only finite elements (no NaN, Inf, or such).
Instead of
b = inv(X'*X) * X'*Y;
try (R2018a or later required)
[XN,C,S] = normalize(X);
b = ((XN+C./S)\Y) ./ S.';
Bruno Luong
Bruno Luong on 25 Apr 2022
You might also want to experiment with different method of normalizing, e.g.,
[XN,C,S] = normalize(X,'medianiqr')

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!

Translated by