? ----- PROGRAM c:\racd\racd5p1.lim July 1998 ------ ? This LIMDEP program was \book2\ch5s1.lim ? It does the analysis for chapter 5 of ? A.C. Cameron and Pravin K. Trivedi (1998), ? REGRESSION ANALYSIS OF COUNT DATA, ? Econometric Society Monograph No.30, Cambridge University Press. ? For more details on the data see files racd5.1st ? The program runs on DOS version of Limdep 7.0 (limdep.exe dated 3/28/97) ? It may not be completely backward compatible with Limdep 6, ? but most of the program was originally written for Limdep 6. ? The program is not written as efficiently written as possible, ? partly because it began with Limdep 6. ? It is written in, hopefully, a transparent manner. ? Also in places intermediate output is given to enable checks. ? The original data are from Sanjiv Jaggia and Satish Thosar, 1993, ? "Multiple Bids as a Consequence of Target Management Resistance" ? Review of Quantitative Finance and Accounting, 447-457. ? 1. DOCNO Doc No. ? 2. WEEKS Weeks ? 3. NUMBIDS Count (Dependent Variable) ? 4. TAKEOVER Delta (1 if taken over) ? 5. BIDPREM Bid Premium ? 6. INSTHOLD Institutional Holdings ? 7. SIZE Size measured in billions ? 8. LEGLREST Legal Restructuring ? 9. REALREST Real Restructuring ? 10. FINREST Financial Restructuring ? 11. REGULATN Regulation ? 12. WHTKNGHT White Knight ? and also ? 13. SIZESQ Size Squared ? 14. CONSTANT ? +++++++++ Open output file and read in the data OPEN; OUTPUT = c:\racd\racd5p1.out $ READ; NREC=126; NVAR=14; FILE=c:\racd\racd5.asc; NAMES = DOCNO,WEEKS,NUMBIDS,TAKEOVER,BIDPREM,INSTHOLD,SIZE, LEGLREST,REALREST,FINREST,REGULATN,WHTKNGHT,SIZESQ,CONSTANT $ ? +++++++++ Setting up CREATE; Y = NUMBIDS $ NAMELIST; X = ONE,LEGLREST,REALREST,FINREST,WHTKNGHT,BIDPREM,INSTHOLD, SIZE,SIZESQ,REGULATN $ ? +++++++++ Descriptive Statistics and histogram TITLE; * RACD Table 5.1, p.147: Actual frequency distribution for DVISITS. HISTOGRAM; RHS=Y; INT=11 $ TITLE; * RACD Table 5.2, p.147: Descriptive Statistics for Y and X. $ DSTATS; RHS=Y,X,DOCNO,WEEKS,TAKEOVER $ ? +++++++++ Poisson PMLE (page 148) ? --------- Poisson PMLE and possibly incorrect ML standard errors TITLE; ** RACD Table 5.3, cols.1, p.148 : Poisson PMLE with ML st.errors $ POISSON; LHS=Y; RHS=X $ MATRIX; PB = B; PVAR = VARB $ CALC; LIST; PLOGL = LOGL; PKREG = KREG; PN = N $ CREATE; PPRED = EXP(DOT(X,B)); PPREDSQ = PPRED*PPRED; PRES = Y - PPRED; PEARSRES = PRES/SQR(PPRED) $ DSTAT; RHS = Y,PPRED,PRES $ ? --------- Poisson standard errors and t-stats for NB1 variance function TITLE; * RACD Table 5.3, cols.2-3, p.148: Poisson NB1 st.errors & t-stats$ CALC; LIST; DEGOFFR = PN - PKREG $ MATRIX; LIST; PEARSON=XDOT(PEARSRES); LIST; ANB1MN = {1/DEGOFFR}*PEARSON $ CALC; TAU = ANB1MN $ MATRIX; LIST; TAUSQRT = SQRT(TAU); UNITY = INIT(PKREG,1,1); NOLIST; DIAGV = DIAG(PVAR); LIST; PSEML = SQRT(DIAGV)*UNITY; LIST; PSEMN = TAUSQRT*PSEML $ CALC; LIST; INVTAUSQ = 1/TAUSQRT $ MATRIX; PTML = ISQR(DIAGV)*PB; LIST; PTMN = INVTAUSQ*PTML $ ? +++++++++ Residual analysis (pages 147-150) ? --------- Construct hat matrix ? This is H = (W^1/2)X (X'WX)^-1 X'W^1/2 where X is n x k ? Large value is Hii > 2k/n, as Hii sum to k with ave value k/n ? This could be problem with much data as H is n x n ? The way around this is to use the quadratic form command ? QFR in CREATE below ? First do the usual HAT for OLS case TITLE; * RACD CHAPTER 5: Usual HAT matrix. $ MATRIX; XXINV= $ CREATE; HATXII = QFR(X,XXINV) $ ? Now redo using X'W^1/2 in place of X ? I know of no easy way to compute this using matrix commands ? without running into dimension problems. Instead ... TITLE; * RACD CHAPTER 5: HAT matrix for Poisson. $ CREATE; PPREDSQR = SQR(PPRED) $ CREATE; TRONE = PPREDSQR; TRLEG = LEGLREST*PPREDSQR; TRREA = REALREST*PPREDSQR; TRFIN = FINREST*PPREDSQR; TRWHT = WHTKNGHT*PPREDSQR; TRBID = BIDPREM*PPREDSQR; TRINS = INSTHOLD*PPREDSQR; TRSIZ = SIZE*PPREDSQR; TRSSQ = SIZESQ*PPREDSQR; TRREG = REGULATN*PPREDSQR $ NAMELIST; XTR = TRONE,TRLEG,TRREA,TRFIN,TRWHT,TRBID,TRINS, TRSIZ,TRSSQ,TRREG $ MATRIX; XXTRINV= $ CREATE; HATWXII = QFR(XTR,XXTRINV) $ DSTAT; RHS = HATXII,HATWXII,Y,PRES,SIZE $ LIST; HATXII,HATWXII $ TITLE; * RACD FIGURE 5.2: 4. Plot of hat matrix against observation $ PLOT; RHS = HATWXII; TITLE = Diagonal of hat matix against observation $ TITLE; * RACD CHAPTER 5: Plot of hat matix against SIZE $ PLOT; RHS = HATWXII; LHS = SIZE; TITLE = Diagonal of hat matrix against SIZE $ ? --------- Drop outlying observations (page 150) ? These are 36, 80, 83, 85, 102 and 126 with 83 by far the biggest outlier TITLE; * RACD CHAPTER 5: Drop observation 83 $ SAMPLE; 1-82, 84-126 $ TITLE; * RACD CHAPTER 5: Drop observations 36, 80, 83, 85, 102 and 126 $ POISSON; LHS=Y; RHS=X $ SAMPLE; 1-35, 37-79, 81-82, 84, 86-101, 103-125 $ POISSON; LHS=Y; RHS=X $ SAMPLE; ALL $ ? --------- Various residuals (page 149) TITLE; * RACD Table 5.4, p.149: Construct various residuals $ ? Pearson residual CREATE; PPEARSON = PRES / SQR(PPRED) $ ? Deviance residual CREATE; IF (PRES > 0) SIGNPRES=1; (ELSE) SIGNPRES=-1 $ CREATE; IF (Y = 0) YLOGY=0; (ELSE) YLOGY=Y*LOG(Y) $ CREATE; PDEVIANC = SIGNPRES*SQR(2)*(YLOGY - Y*LOG(PPRED) - PRES) $ ? Adjusted Pearson residual CREATE; PDEVADJ = PDEVIANC + 1/(6*PPRED^(1/2)) $ ? Adjusted Pearson residual with continuity correction ? Not sure what to do when Y is already within .5 of mean ? Need to checl this. CREATE; YCC = Y - 0.5*SIGNPRES $ ? Anscombe residual CREATE; PANSCOMB = 1.5*(Y^(2/3) - PPRED^(2/3))/PPRED^(1/6) $ ? Small sample corrected residuals using hat matrix CREATE; PPRSNHAT = PPEARSON/SQR(1-HATWXII); PDEVHAT = PDEVIANC/SQR(1-HATWXII) $ TITLE; * RACD Table 5.4 and 5.5, p.149: Compare various residuals. $ LIST; PRES,PPEARSON,PPRSNHAT,PDEVIANC,PDEVHAT,PDEVADJ,PANSCOMB $ DSTAT; RHS = PRES,PPEARSON,PPRSNHAT,PDEVIANC,PDEVHAT,PDEVADJ, PANSCOMB,Y,PPRED; QUANTILES; OUTPUT = 2 $ ? --------- Residuals plots TITLE; * RACD FIGURE 5.2, p.150: 1. Anscombe Residual against Actual y $ PLOT; RHS = PANSCOMB; LHS = Y $ TITLE; * RACD FIGURE 5.2, p.150: 2. Anscombe Residual against predicted y $ PLOT; RHS = PANSCOMB; LHS = PPRED; TITLE = Anscombe Residual against predicted dependent variable $ ? Print data to ASCII for file for SIGMAPLOT used for Figure 5.2 ? for PANSCOMB vs Y, PANSCOMB vs PPRED, ? normal plot of PANSCOMB, HATWXII vs obs no, ? WRITE; PANSCOMB,Y,PPRED,HATWXII; WKS; FILE = c:\racd\racd5p1a.wks $ ? --------- Construct normal plot of residuals TITLE; * RACD FIGURE 5.2, p.150: 3. Normal plot of residuals. $ ? This plots ordered residual against predicted value if normal ? SORT; LHS=PANSCOMB; RHS = Y,PPRED,PRES,PPEARSON,PANSCOMB $ ? This does not seem to work. ? LIST; PRES,PPEARSON,PDEVIANC,PDEVADJ,PANSCOMB,Y,PPRED $ SORT; LHS=PANSCOMB $ CREATE; CI = (TRN(1,1)-.5)/126; TI = INP(CI); RESID = PANSCOMB $ CALC; LIST; MRESID = XBR(RESID); SDRESID=SDV(RESID) $ CREATE; ZI = SDRESID*TI + MRESID $ PLOT; LHS = PANSCOMB; RHS = ZI; REGRESSION; TITLE = Ordered Anscombe residual against prediction if normal $ ? WRITE; PANSCOMB,ZI; WKS; FILE = c:\racd\racd5p1a.wks $ ? +++++++++ Chi-square goodness of fit test (page 158) ? --------- Perform chi-square goodness of fit test TITLE; * RACD FIGURE 5.6, p.158, col.1: Actual probabilities. $ ? Obtain indicator variables CREATE; IF (Y=0) D0 = 1; (ELSE) D0 = 0; IF (Y=1) D1 = 1; (ELSE) D1 = 0; IF (Y=2) D2 = 1; (ELSE) D2 = 0; IF (Y=3) D3 = 1; (ELSE) D3 = 0; IF (Y=4) D4 = 1; (ELSE) D4 = 0; D5ORMORE = 1 - D0-D1-D2-D3-D4 $ DSTAT; RHS = D0,D1,D2,D3,D4,D5ORMORE $ TITLE; * RACD FIGURE 5.6, p.158, col.2: Predicted probabilities. $ ? Obtain predicted probabilities CREATE; P0 = EXP(-PPRED); P1 = P0*PPRED; P2 = P1*PPRED/2; P3 = P2*PPRED/3; P4 = P3*PPRED/4; P5 = P4*PPRED/5; P6 = P5*PPRED/6; P7 = P6*PPRED/7; P8 = P7*PPRED/8; P9 = P8*PPRED/9; P10 = P9*PPRED/10; PREST = 1 - P0-P1-P2-P3-P4-P5-P6-P7-P8-P9-P10 $ CREATE; P5ORMORE = 1 - P0-P1-P2-P3-P4 $ DSTAT; RHS = P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,PREST,P5ORMORE $ TITLE; * RACD FIGURE 5.6, p.158, col.3: Difference in probabilities. $ ? Obtain difference between indicator and predicted probabilities CREATE; DIFF0 = D0 - P0; DIFF1 = D1 - P1; DIFF2 = D2 - P2; DIFF3 = D3 - P3; DIFF4 = D4 - P4; DIFF5ORM = D5ORMORE - P5ORMORE $ DSTAT; RHS = DIFF0,DIFF1,DIFF2,DIFF3,DIFF4,DIFF5ORM $ TITLE; * RACD CHAPTER 5 page 159, chi-square test. $ ? Obtain components of score vector CREATE; SCOREONE = PRES; SCORELEG = LEGLREST*PRES; SCOREREA = REALREST*PRES; SCOREFIN = FINREST*PRES; SCOREWHT = WHTKNGHT*PRES; SCOREBID = BIDPREM*PRES; SCOREINS = INSTHOLD*PRES; SCORESIZ = SIZE*PRES; SCORESSQ = SIZESQ*PRES; SCOREREG = REGULATN*PRES $ NAMELIST; SCORE = SCOREONE,SCORELEG,SCOREREA,SCOREFIN,SCOREWHT, SCOREBID,SCOREINS,SCORESIZ,SCORESSQ,SCOREREG $ ? Note that drop one component of DIFF NAMELIST; DIFF = DIFF0,DIFF1,DIFF2,DIFF3,DIFF4 $ NAMELIST; ALL = SCORE,DIFF $ MATRIX; ONES = INIT(PN,1,1) $ ? CHITEST is the chisquare goodness of fit test MATRIX; LIST; CHITEST = ONES'ALL**ALL'ONE $ REGRESS; LHS=ONE; RHS=SCORE,DIFF $ STOP $