Hi everyone,
I am trying to run probit using optimize() function from mata. But, I always got the error message "could not calculate numerical derivatives -- flat or discontinuous region encountered". I am very new to mata so I wonder if I did this wrong. Really appreciate it if you can enlighten me on this. Thanks in advance!
This is my current code:
I am trying to run probit using optimize() function from mata. But, I always got the error message "could not calculate numerical derivatives -- flat or discontinuous region encountered". I am very new to mata so I wonder if I did this wrong. Really appreciate it if you can enlighten me on this. Thanks in advance!
This is my current code:
Code:
// define function
void PROBIT(real scalar todo, real vector b, real vector y, real matrix x, val, grad, hess) {
real vector mu
mu = normal(x*b')
val = sum(y :* log(mu) + (1 :- y) :* log(1 :- mu))
}
// setting up initial values using regression
stata("reg Y X")
stata("mat b = e(b)")
// preparing arguments and parameter
y = Y
x = X,J(1000,1,0)
b = st_matrix("b")
// optimization
S = optimize_init()
optimize_init_evaluator(S,&PROBIT())
optimize_init_evaluatortype(S,"gf0")
optimize_init_technique(S,"bfgs")
optimize_init_params(S,b)
optimize_init_argument(S,1,y)
optimize_init_argument(S,2,x)
optimize(S)
beta_probit = optimize_result_params(S)'
beta_probit
