On 09/14/2017 08:46 AM, Fox, John wrote:
Dear Martin,

I made three points which likely got lost because of the way I presented them:

(1) Singularity is an unusual situation and should be made more prominent. It 
typically reflects a problem with the data or the specification of the model. 
That's not to say that it*never*  makes sense to allow singular fits (as in the 
situations you mentions).

In my medical work singularity is far from unusual. It often results from imbalance in a covariate, e.g., there are 4 pathological stages but one of them turns out to be rare.


I'd favour setting singular.ok=FALSE as the default, but in the absence of that 
a warning or at least a note. A compromise would be to have a singular.ok 
option() that would be FALSE out of the box.

Originally the lm() default was singular.ok=FALSE. It was a major pain in the ass and there was widespread unhappiness. Enough so that Splus changed it. (And they were not always very responsive to the users, so it took a lot of unrest.) Another early default was na.fail, based on similar logic that "missings are unusual and should require an explicit response". Don't repeat these mistakes.

Terry T.


Any changes would have to be made very carefully so as not to create chaos. 
That goes for the points below as well.

(2) coef() and vcov() behave inconsistently, which can be problematic because 
one often uses them together in code.

(3) As you noticed in your second message, lm() has a singular.ok argument and 
glm() doesn't.

I'll take a look at the code for glm() with an eye towards creating a patch, 
but I'm a bit reluctant to mess with the code for something as important as 
glm().

Best,
  John

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to