* * RANDOMIZE.RPF * Example of approximate randomization * * RATS User's Guide, Example from Section 16.10 * open data hprice1.raw data(format=free,org=columns) 1 88 price assess bdrms lotsize sqrft \$ colonial lprice lassess llotsize lsqrft * * This examines heteroscedasticity in a hedonic price regression based * upon lot size. * order(ranks=lotranks) lotsize linreg price # constant lotsize sqrft bdrms * * The first test statistic is the ratio between the sum of the residuals * squared over the final 36 observations (large lot size) to that over * the first 36 (small lots), skipping the middle 16. The second is the * correlation between the ranks of the lot size and the squared residual. * set ressqr = %resids^2 sstats / ressqr*(lotranks<=36)>>sum1 ressqr*(lotranks>=53)>>sum2 compute refer1=sum2/sum1 order(rank=vrank) ressqr compute refer2=%corr(lotranks,vrank) * * count1 and count2 are the number of times we get a more extreme value * after reshuffling. We do 999 shuffles. * compute count1=count2=0.0 compute ns=999 do draw=1,ns * * Use BOOT with NOREPLACE to come up with a new permutation of the * ressqr variable. Recompute the test statistic for these. * boot(noreplace) entries 1 88 set shuffle = ressqr(entries(t)) * sstats / shuffle*(lotranks<=36)>>sum1 \$ shuffle*(lotranks>=53)>>sum2 compute teststat=sum2/sum1 compute count1=count1+(teststat>refer1) * order(rank=vrank) shuffle compute teststat=%corr(lotranks,vrank) compute count2=count2+(teststat>refer2) end do draw * * The p-values for the tests are computed by taking (count+1)/(draws+1). * The +1's are needed because we are, in effect, adding the actual * sample in with the draws and seeing where it ends up. * disp "Test 1, p-value" (count1+1)/(ns+1) disp "Test 2, p-value" (count2+1)/(ns+1)