I am trying to write R
code for the generalised residuals as described in Vella (1993) and also mentioned by Wooldridge (2014). Wooldridge suggests to use these residuals in order to estimate a discrete (ordinal) endogenous explanatory variable with the Control Function (CF) / Two Stage Residual Inclusion (2SRI) approach (see Wooldridge, 2014 and Terza et al. 2008).
They seem pretty important, as it appears to be the only way to somewhat consistently estimate an ordinal endogenous explanatory variable in a non linear structural equation. Nevertheless they are not available in either R or Stata (EDIT: they are available in stata for oprobit
, by using predict gr, score
). As a result I'm trying to have a go myself.
The residual is described as follows:
Generalised Residuals
UPDATE: According to this post, $\pi$, is the numerator of the formula (3) below, which comes from Chiburis and Lokshin (2007), where $\Pi$ is the denominator.
$W_i$ are the independent variables
$z_i$ is the categorical variable
$\alpha$ is an unknown vector of parameters
Question
I started with an attempt to manually calculate the residuals, but I do not really understand what to do with $\pi_ji)$, which is estimated value of the density at that point. Could anyone tell me what that should be?
I think that is the only thing missing or unclear in the code below.. It would be great if someone could help me calculate $\pi$ from the polr
output.
R code for the generalised residual with example data
library(sure) # for residual function and sample data sets
library(MASS) # for polr function
library(VGAM)
rm(df1, df2, df3)
df1 <- df1
df1$x2 <- df2$y
df1$x3 <- df2$x
df1$y <- df3$x/10
df1$x <- df1$x/0.8*df1$x
polr <- polr(x2 ~ x + x3, method="probit", Hess=TRUE, data=df1)
predicted_probabilities <- predict(polr, type="probs")
category_dummies <- model.matrix( ~ x2- 1, data=df1)
cum_probability <- polr$fitted.values
cum_probability <- t(apply(cum_probability, 1, cumsum)) # https://stackoverflow.com/questions/67301413/automatically-creating-a-cumulative-table-by-column?noredirect=1#comment118959242_67301413
residuals <- model.matrix( ~ x2 - 1, data=df1) # Just to make it match the df
for(i in seq_len(nrow(df1))){
for(j in seq_len(ncol(df1))){
residuals[i,j] <- category_dummies[i,j] * cum_probability[i,j] * ( 1 / predicted_probabilities[i,j]) * ( 1 / ( 1 - predicted_probabilities[i,j])) * ( predicted_probabilities[i,j] - predicted_probabilities[i,j] )
}}
In Stata
oprobit x2 c.x c.x3
Iteration 0: log likelihood = -2052.0298
Iteration 1: log likelihood = -2039.4155
Iteration 2: log likelihood = -2039.4084
Iteration 3: log likelihood = -2039.4084
Ordered probit regression Number of obs = 2,000
LR chi2(2) = 25.24
Prob > chi2 = 0.0000
Log likelihood = -2039.4084 Pseudo R2 = 0.0062
------------------------------------------------------------------------------
x2 | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x | -.001509 .0014161 -1.07 0.287 -.0042845 .0012665
x3 | .0884805 .0180269 4.91 0.000 .0531485 .1238126
-------------+----------------------------------------------------------------
/cut1 | -1.588152 .1101114 -1.803967 -1.372338
/cut2 | -.7587626 .0933795 -.9417829 -.5757422
/cut3 | 1.227218 .0948042 1.041405 1.413031
/cut4 | 2.057595 .1074906 1.846918 2.268273
------------------------------------------------------------------------------
predict gr, score
References
Chiburis, R., & Lokshin, M. (2007). Maximum Likelihood and Two-Step Estimation of an Ordered-Probit Selection Model. The Stata Journal, 7(2), 167–182. https://doi.org/10.1177/1536867X0700700202
Terza J. V, Basu A., Rathouz, P.J. (2008) Two-stage residual inclusion estimation: addressing endogeneity in health econometric modeling. Journal of health economics 27 (3), 531-543, 2008
Vella, F. (1993). A Simple Estimator for Simultaneous Models with Censored Endogenous Regressors. International Economic Review, 34(2), 441-457. doi:10.2307/2526924
Wooldridge,JM. (2014) Quasi-maximum likelihood estimation and testing for nonlinear models with endogenous explanatory variables. Journal of Econometrics Volume 182, Issue 1, September 2014, Pages 226-234