1
$\begingroup$

In Greene, Econometric Analysis, the following table is shown from a probit regression:

enter image description here

I am trying to reproduce these results. (That is my preferred way to get a better understanding of this). My question: what is this slope (derivative) in Probit regression column? I think it could be:

  1. The average of $$\frac{\partial f(x_i'\hat{\beta})}{\partial\hat{\beta}_j}$$
  2. Or just $$\frac{\partial f(\bar{x}'\hat{\beta})}{\partial\hat{\beta}_j}$$ like the $f(\bar{x}'\hat{\beta})$ quantity at the bottom (Greene calls that one "scale factor"). I had no problems reproducing this value (0.328).
  3. Or may be something else. There is something called the marginal effect, defined as $f(x,\beta) \beta_k$ (don't know what $x$ is here, may be $\bar{x}$, and whether I can interpret $\beta$ as $\hat{\beta}$).

Is there a definition for this slope quantity?


My attempts so far:

$ontext

   Probit Estimation
   -----------------
   We use OLS to get a good starting point

   Erwin Kalvelagen, Amsterdam Optimization

   Data:
      http://pages.stern.nyu.edu/~wgreene/Text/tables/TableF21-1.txt

$offtext


*-----------------------------------------------------------
* raw data from Greene
*-----------------------------------------------------------

sets
  i 'records' /1*32/
  p0 'all variables' /constant,grade,gpa,tuce,psi/
;

table data(i,p0)

       GPA      TUCE     PSI      GRADE
 1      2.66      20      0        0
 2      2.89      22      0        0
 3      3.28      24      0        0
 4      2.92      12      0        0
 5      4.00      21      0        1
 6      2.86      17      0        0
 7      2.76      17      0        0
 8      2.87      21      0        0
 9      3.03      25      0        0
10      3.92      29      0        1
11      2.63      20      0        0
12      3.32      23      0        0
13      3.57      23      0        0
14      3.26      25      0        1
15      3.53      26      0        0
16      2.74      19      0        0
17      2.75      25      0        0
18      2.83      19      0        0
19      3.12      23      1        0
20      3.16      25      1        1
21      2.06      22      1        0
22      3.62      28      1        1
23      2.89      14      1        0
24      3.51      26      1        0
25      3.54      24      1        1
26      2.83      27      1        1
27      3.39      17      1        1
28      2.67      24      1        0
29      3.65      21      1        1
30      4.00      23      1        1
31      3.10      21      1        0
32      2.39      19      1        1

;

data(i,'constant') = 1;
display data;

*-----------------------------------------------------------
* extract data
* form y, x
*-----------------------------------------------------------

set p(p0) 'independent variables' /constant,gpa,tuce,psi/;

parameters
 y(i)    'grade'
 x(i,p)  'independent variables'
;

y(i)   = data(i,'grade');
x(i,p) = data(i,p);
display x,y;


*-----------------------------------------------------------
* solve OLS as QP
*-----------------------------------------------------------

parameter estimate(p,*) 'results';

variable
  sse        'sum of squared errors'
  coeff(p)   'estimated coefficients'
  e(i)       'error term'
;
equation
  obj        'objective'
  fit(i)     'linear fit'
;

obj..    sse =e= sum(i, sqr(e(i)));
fit(i).. y(i) =e= sum(p, coeff(p)*x(i,p)) + e(i);

model ols /obj,fit/;
solve ols using qcp minimizing sse;

estimate(p,'OLS') = coeff.l(p);


*-----------------------------------------------------------
* Max log likelihood
*-----------------------------------------------------------

variable logl 'log likelihood';
equation like;

like.. logl =e= sum(i$(y(i)=1), log(errorf(sum(p,coeff(p)*x(i,p)))))
               +sum(i$(y(i)=0), log(1-errorf(sum(p,coeff(p)*x(i,p)))));

model mle /like/;
solve mle using nlp maximizing logl;

estimate(p,'Probit') = coeff.l(p);

display estimate;

*-----------------------------------------------------------
* reproduce f
*-----------------------------------------------------------

parameter xbar(p) 'mean of the data';
xbar(p) = sum(i,x(i,p))/card(i);
display xbar;

scalar f 'scale factor: density evaluated at the means';
f = errorf.grad(sum(p,xbar(p)*coeff.l(p)));
display f;

Conclusion: slope is the "marginal effect". So: $${\mathit slope}_j = f(\bar{x}'\hat{\beta})\cdot \hat{\beta}_j$$

parameter slope(p) 'marginal effect';
slope(p)$(not sameas(p,'constant')) = f*coeff.l(p);
display slope;

This was an interesting exercise.

$\endgroup$

1 Answer 1

2
$\begingroup$

It appears to me that the textbook is ambiguous. It is probably either (1) or (2) which you mention. The bottom row of the table has $f(\bar{x}'\hat{\beta})$, which makes me inclined to think it is the second thing you wrote.

EDIT: It is definitely the second. As you mention, $f(\bar{x}'\hat{\beta})\hat{\beta}$ are marginal effects at the average. In the table, the slope is $\hat{\beta}$ multiplied by $f(\bar{x}'\hat{\beta})$. That's definitely what is going on.

$\endgroup$
1
  • $\begingroup$ Yes! I could not deduce that from the text. $\endgroup$ Jul 6, 2022 at 15:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.