Short Version: can I substitute the Moore-Penrose generalized inverse of a matrix (R function
ginv()) for a matrix inverse (R function
solve()) when computing standard errors in a maximum likelihood estimate?
Long Version: I am applying Hausman et. al.'s model for estimating the probability of misclassification in a binary dependent variable in R (ungated version of the paper is here, I am estimating equation 7). This involves estimating a slightly modified likelihood function for a probit model in which we include 2 additional parameters: one for the false-positive rate and the other for the false-negative rate. Briefly, let us call $$\alpha0=Pr(Y^O=1|Y^T=0),$$ and $$\alpha1=Pr(Y^O=0|Y^T=1),$$ where $Y^O$ is the observed binary dependent variable and $Y^T$ is the true value of the binary dependent variable. Thus we can interpret $\alpha0$ as the false positive rate and $\alpha1$ as the false negative rate. Given certain assumptions, we can write the expected value of the $Y^O$ as: $$E(Y^O|X)=\alpha0 + (1 - \alpha0 - \alpha1)F(X'\beta).$$
The values of $\alpha0$ and $\alpha1$ can be computed by maximum likelihood, and I am attempting to do so using the function
nlm() (the code is a modified version of a function
misclass which was in version 1.1.1 of the R package McSpatial).
To compute standard errors, I need to invert the Hessian matrix generated by my call to
nlm(), which I do with the R function
solve(). However, I fairly frequently run into the problem that the matrix is not-invertible - although I have no problems in estimating a vanilla probit model with the same design matrix.
Since I am only interested in the misclassification parameters, I experimented with swapping out the function
solve() and using a pseudo-inverse with the function
ginv(). In simulated data I see no impact on the accuracy with which the model estimates $\alpha0$ and $\alpha1$. However, my simulated data is unlikely to anticipate all the ways the model can break, and I am curious if there is a more formal or rigorous way in which to determine whether and when it is OK to exchange an inverse for a pseudo-inverse. I'd be grateful for any advice about whether it is OK to use the pseudo-inverse, or direction towards readings that could help me figure this out.