coefficient p-values in fitglm are all NaN

hi,
I am trying to use fitglm, and keep getting NaN for all the p-values of the betas, even though the t statistics are computed.
This happens even when I run matlab's examples.
For example:
load hospital
dsa = hospital;
modelspec = 'Smoker ~ Age*Weight*Sex - Age:Weight:Sex';
mdl = fitglm(dsa,modelspec,'Distribution','binomial')
I get the same results as in the example, except all the p-values are NaN.
Any advice would be highly appreciated.

10 Comments

Down in the bowels GLM eventually calls FCDF() to compute the p-values.
Try calling fcdf directly and see if it succeeds.
See what
which -all fcdf
returns. Maybe somehow managed to alias it altho that would seem an unlikely only symptom.
clear fcdf
and retry is worth a shot, probably.
Those failing, it would then seem to be time for TMW official support request.
Thanks for the quick response! this doesn't seem to be it - the correct fcdf is called, and using clear did not make a difference.
I should also mention that i do get the p values if I use glmfit, instead of fitglm. Also, i tried a different computer with a different matlab version, and still same thing.
I will submit a support request.
Hi! Sorry to bother you. Did you receive any help? Im having exaclty the same issue and I dont know why. Thanks!
@dpb, I realize this is an oldish post but when I open fcdf() (the F cumulative distribution function) and put a break point at the first line, and then run the demo code provided in the question, that file is never evoked. I haven't looked too thoroughly but it seems the fcdf function is only called under certain conditions.
r2019a.
Hi,
Any update on this issue? I got the same one on R2019a.
Thanks
In R2019b, on a Mac running Catalina, I get the results from the example, including valid p-values.
Sounds like a bug to me; I would report to support.
I'm using R2019b on a windows machine. Same issue!
Now I'm on R2020a on a Mac running Big Sur, and stll get valid p-values.
So, I think my advice would (still) be to submit a bug report. MathWorks is responsive to those, so even if this is an old bug that for some reason has not been fixed, you should at least hear back from them about the status.
>> load hospital
dsa = hospital;
modelspec = 'Smoker ~ Age*Weight*Sex - Age:Weight:Sex';
mdl = fitglm(dsa,modelspec,'Distribution','binomial')
mdl =
Generalized linear regression model:
logit(Smoker) ~ 1 + Sex*Age + Sex*Weight + Age*Weight
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
___________ _________ ________ _______
(Intercept) -6.0492 19.749 -0.3063 0.75938
Sex_Male -2.2859 12.424 -0.18399 0.85402
Age 0.11691 0.50977 0.22934 0.81861
Weight 0.031109 0.15208 0.20455 0.83792
Sex_Male:Age 0.020734 0.20681 0.10025 0.92014
Sex_Male:Weight 0.01216 0.053168 0.22871 0.8191
Age:Weight -0.00071959 0.0038964 -0.18468 0.85348
100 observations, 93 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 5.07, p-value = 0.535
>> ver
-----------------------------------------------------------------------------------------------------
MATLAB Version: 9.9.0.1592791 (R2020b) Update 5
...
>>
Oh. This is also on Windows (old machine, still Win7 though).
I'm running into the same issue (with the example data) with Matlab 2021b on Mac.
Did anyone else figure out how to solve this issue?

Sign in to comment.

Answers (2)

@the cyclist Hi, I am using MATLAB R2019b and trying to use fitglm function, but it returns only NANs in the output "mdl". Here I attached the "Data.mat" file which includes the X and Y (predictors and resposne) and also the output of the fitglm ("mdl"). And below is the command I used. Do you know what I am doing wrong?
mdl = fitglm(X,Y,'linear','Distribution','normal');

4 Comments

You have more predictors than observations, which means that you have so many degrees of freedom that you can fit a "perfect" model, where the fitted line (in 154 dimensions) goes exactly through every data point. You get parameter estimates, with no errors.
You can see that when I plot your data versus the model prediction. (I'm just plotting the first X variable, as an example.)
load('Data.mat')
mdl = fitglm(X,Y,'linear','Distribution','normal');
Warning: Regression design matrix is rank deficient to within machine precision.
Y_predicted = predict(mdl,X);
plot(X(:,1),Y,'b.', X(:,1),Y_predicted,'rx','MarkerSize',24)
xlabel('X(:,1)')
ylabel('Y')
legend({'data','fit'},'Location','Southeast')
thanks for you reply. but I don't think this could explain the problem.
The exact problem is why the analyses with IDENTICAL code and data running on my PC yield different results (all p values were nan).
this problem is really confusing.
and I just could not believe it that it serves as a tutorial in the matlab document for fitglm.
I tested whether this replication failure was due to the different versions of matlab.
I tested this possibility on three PCs and one MAC with different matlab versions.
1 on the first PC,
I tried on 2020b on my PC, all pvalues nan;
2022a on PC, all pvalues nan.
2on the second PC,
2020b, all pvalues were normal;
3on the third PC,
2020b, all pvalues nan;
2022a, all pvalues nan.
4on MAC
2018a on MAC, all pvalues were normal...
really confusing....
update: 2022b matlab fixed this problem out of nowhere...

Sign in to comment.

I have solved this problem by following the suggestions from Guru Kumaresan from MathWorks Technical Support Team:
This might happen because some function is being shadowed by another function. I would suggest you to restore your default paths by following the steps given below:
1)You can take a backup of your search path by executing the following command to give you the location of the search path.
>> which -all pathdef
Before proceeding, you should backup this file by copying it to a folder outside of your MATLAB path. This step is optional and only matters you if you have customized 'pathdef.m' by adding custom paths.
2) After making the backup, please execute the following commands in the MATLAB Command Window to restore the default MATLAB search path and rehash the toolbox cache:
>> restoredefaultpath
>> rehash toolboxcache
3) After this step, please use MATLAB again to see if the issue persists. If the issue is resolved, then you can save the new MATLAB search path by executing the following command:
>> savepath

1 Comment

I was running into similar problems on Matlab 2024a using MacOs Monterey. Problems could be resolved simply by restoredefaultpath. P-values were reported without any trouble. Thanks!

Sign in to comment.

Products

Release

R2018b

Asked:

IL
on 5 Mar 2019

Commented:

on 27 Sep 2024

Community Treasure Hunt

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

Start Hunting!