[R] error message "system is computationally singular" under mlogit
Bert Gunter
gunter.berton at gene.com
Wed Jan 29 16:42:52 CET 2014
Advice: I would guess that you are overfitting. Simplify your model.
Drop some of the variables.You probably have (near) linear
dependencies in your design matrix.
-- Cheers,
Bert
Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374
"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch
On Wed, Jan 29, 2014 at 7:33 AM, Franckx Laurent
<laurent.franckx at vito.be> wrote:
> Dear all,
>
> I am trying to estimate a multinomial logit model with mlogit.
>
> The data I use for the estimation have the following format (in the full data set, there are many more explanatory variables, but I omit them here for the sake of simplicity):
>
>> head(sample)
> choice cl_vint_com gezinsid pr_tot
> 1 0 1 411060112 2176.015
> 2 0 2 411060112 2240.531
> 3 0 3 411060112 3649.945
> 4 0 4 411060112 3255.782
> 5 0 5 411060112 5391.076
> 6 0 6 411060112 3740.085
>
> "choice" is 1 if the alternative is chosen and 0 otherwise
> "cl_vint_com " is the ID of the alternative
> "gezinsid " is the ID of the individuals
> "pr_tot" is the price of each alternative.
>
> I use the following steps for the estimation:
>
> two_carmodel_data <- mlogit.data(sample, choice = "choice", shape = "long", alt.var = "cl_vint_com", chid.var = "gezinsid" )
> formula_2cars <- mFormula(choice ~ pr_tot )
> mod_res <- mlogit(formula_2cars, two_carmodel_data)
>
> This leads to the following error messages:
>
> Error in solve.default(H, g[!fixed]) : system is computationally singular: reciprocal condition number = 5.17802e-25
>
>
> >From the documentation of the mlogit package, I do not see any mistake in my formulation of mFormula() (pr_tot is an alternative specific variable).
>
> I have found some internet discussions of users facing a similar problem, and I understand that in some cases, this may be due to some alternatives that are never chosen in the sample (leading to separation problems).
>
> However, I have eliminated all alternatives that are never chosen, and the problem persists. The output of the following table confirms that no quasi-separation occurs):
>
> table(sample $pr_tot , sample $choice)
>
> I have probably made a very trivial mistake leading to collinerarity, but I do not see where (after all, mlogit takes care of setting the alternative-specific constant for the 1st alternative to zero, doesn't it?)
>
> Please advice.
>
>
> Laurent Franckx, PhD
> Senior researcher sustainable mobility
> VITO NV | Boeretang 200 | 2400 Mol
> Tel. ++ 32 14 33 58 22| mob. +32 479 25 59 07 | Skype: laurent.franckx | laurent.franckx at vito.be | Twitter @LaurentFranckx
>
>
>
>
>
>
>
>
>
> #verify whether all cl_vint are chosen to avoid strict separation
> test_for_separ <- table(input_for_NLOGIT_all_alt_joined$cl_vint_com ,input_for_NLOGIT_all_alt_joined$choice)
> test_for_separ_sel <- test_for_separ[test_for_separ$1 == 0, ]
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> VITO Disclaimer: http://www.vito.be/e-maildisclaimer
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list