Tuve el mismo problema (" non-conformable arguments
") que @hans0l0 mencionó en el comentario anterior. Creo que he resuelto esto, y voy a tratar de explicar aquí.
En primer lugar, hay un error en la ecuación del post original. Debería ser $(x/)_j$ -es decir, hay un subíndice después del segundo $$ but not after the first. In a Tobit model, the marginal effect of a variable $ x_j $ is determined not only by the coefficient of that particular variable (the $ _j $); an adjustment factor is also required that gets calculated from the values of other variables in the model (the $ (x/)$).
De Wooldridge 2006 (p. 598):
El factor de ajuste depende de una función lineal de $x$ , $x/ = (_0 + _1x_1 + … + _kx_k)/$ . Se puede demostrar que el factor de ajuste está estrictamente entre cero y uno.
Este factor de ajuste significa que tenemos que hacer una elección sobre los valores de las otras variables del modelo: "debemos introducir los valores de las x j Por lo general, los valores medios u otros valores interesantes" (Wooldridge 2006, p598). Por lo tanto, generalmente sería la media, pero también podría ser la mediana, el cuartil superior/inferior, o cualquier otra cosa. Esto se relaciona con la razón por la que @hans0l0 y yo estábamos recibiendo el " non-conformable argument
" cuando utilizamos el código de Alex de arriba: los errores " x
" en ese código será un vector cuando lo que necesitamos es un único valor para la variable (media / mediana / etc). Creo que también hay otro error en el código anterior en el sentido de que excluye el valor del intercepto del término de ajuste (con el [-1]
después del primer uso de reg$coef
). Lo que yo entiendo (pero me alegra que me corrijan) es que el término de ajuste debe incluir el intercepto (el $_0$ desde arriba).
Dicho esto, he aquí un ejemplo que utiliza el conjunto de datos de AER::tobit (“Affairs”)
:
## Using the same model and data as in the Tobit help file
## NB: I have added the “x=TRUE” command so the model saves the x values
> fm.tobit <- tobit(affairs ~ age + yearsmarried + religiousness + occupation + rating,
data = Affairs, x=TRUE)
> fm.tobit$coef
(Intercept) age yearsmarried religiousness occupation rating
8.1741974 -0.1793326 0.5541418 -1.6862205 0.3260532 -2.2849727
> fm.tobit$scale
[1] 8.24708
## the vector of marginal effects (at mean values and for y > 0) should be as follows.
## note the [-1] used to remove the intercept term from the final vector,
## but not from within the adjustment term.
> pnorm(sum(apply(fm.tobit$x,2,FUN=mean) * fm.tobit$coef)/fm.tobit$scale) *
fm.tobit$coef[-1]
age yearsmarried religiousness occupation rating
-0.041921 0.1295365 -0.394172 0.076218 -0.534137
Es importante reiterar que se trata de efectos marginales sólo en los casos en los que y es positivo (es decir, se ha producido al menos un asunto) y en los valores medios de todas las variables explicativas.
Si alguien quiere comprobar esos resultados utilizando un programa con una herramienta de efectos marginales incorporada para modelos Tobit, tendría curiosidad por ver la comparación. Cualquier comentario o corrección será muy apreciado.
Referencia :
Wooldridge, Jeffrey M. 2006. Introductory Econometrics: A Modern Approach. Thomson South-Western. 3ª edición.