二是NEWTON-RAPHSON逼近法在使用中,有个初始值得设定问题,似乎越来越多的PAPER开始质疑初始值得设定,而主张在最初使用乱码(随机数码)设定初始值。我编的SAS程序参考了国外一个博士,他似乎没有设定初始值。不知您如何处理。附上的我SAS程序,如果您熟悉的话也请您指点一下。
SAS程序如下:
/*-------------------------------------------------------------------*/
/* Create the dataset containing the observations... */
/* The observations for PERMCO 99999 are consistent with the */
/* Easley, Hvidjkaer, and O'Hara example on p. 2198 of the */
/* Journal of Finance. */
/*-------------------------------------------------------------------*/
data buysell;
input permco buys sells;
cards;
99999 90 40
99999 40 90
99999 40 40
99999 40 40
99999 40 40
88888 70 40
88888 40 70
88888 40 40
88888 40 40
88888 40 40
;
run;
/*-------------------------------------------------------------------*/
/* Get the data ready for the NLP procedure. */
/*-------------------------------------------------------------------*/
proc sort data=buysell;
by permco;
run;
/*-------------------------------------------------------------------*/
/* This is the procedure used to maximize the log likelihood */
/* function specified below. */
/* */
/* This particular factorization of the log-likelihood function */
/* appears in the paper "Time-Varying Arrival Rates of Informed */
/* and Uninformed Trades" by David Easley, Robert F. Engle, */
/* Maureen O’ara, and Liuren Wu (paper presented at the 2002 */
/* AFA meetings). */
/* */
/* The parameters emerging from this estimation, for PERMCO 99999, */
/* are consistent with what's mentioned in the Easley, Hvidjkaer, */
/* O'Hara paper. */
/*-------------------------------------------------------------------*/
proc nlp data=buysell noprint out=pinest(keep=permco alpha eta mu);
by permco;
max loglik;
decvar alpha ,delta,eta,mu;
M = min(buys,sells) + max(buys,sells) / 2.0 ;
x = eta / (mu + eta);
bounds 0.0 < eta mu, 0.0 <= alpha delta <= 1.0 ;
loglik = -2.0 * eta + M * log(x) + (buys + sells) * log(mu + eta) +
log( alpha * (1.0 - delta) * exp(-1.0 * mu) * (x ** (sells - M )) +
alpha * delta * exp(-1.0 * mu) * (x ** (buys - M)) +
(1.0 - alpha) * (x ** (buys + sells - M)) ) ;
run;
/*-------------------------------------------------------------------*/
/* Clean the output and print it nicely. */
/*-------------------------------------------------------------------*/
proc sort data = pinest nodupkey;
by permco;
run;
data pinest;set pinest;
pin=alpha*mu/(alpha*mu+2.0*eta);
label pin='probability of informed trading';
format pin 5.3;
run;
proc print data=pinest;
var permco pin alpha eta mu;
run;
|