Skip to content

Commit 6ab83d4

Browse files
committed
Refinement to 2.1.6 optimization.
1 parent 8f67944 commit 6ab83d4

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

boottest.mata

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class boottestModel {
6161
pointer (real matrix) scalar pZExcl, pR, pR0, pID, pFEID, pXEnd, pXEx, pG, pX, pinfoBootData, pinfoErrData
6262
pointer (real colvector) scalar pr, pr0, pY, pSc, pwt, pW, pV
6363
string scalar wttype, madjtype, seed
64-
real colvector Dist, DistCDR, s, sAR, plotX, plotY, sAll, beta, wtFE, ClustShare, IDBootData, WeightGrpStart, WeightGrpStop
64+
real colvector Dist, DistCDR, s, sAR, plotX, plotY, sAll, beta, wtFE, ClustShare, IDBootData, IDBootAll, WeightGrpStart, WeightGrpStop
6565
real rowvector peak
6666
struct boottest_clust colvector Clust
6767
class AnalyticalModel scalar M_DGP
@@ -702,15 +702,18 @@ void boottestModel::boottest() {
702702
pinfoBootData = &J(Nobs,0,0) // causes no collapsing of data in _panelsum() calls, only multiplying by weights if any
703703
NBootClust = rows(*pinfoBootData)
704704
705-
purerobust = NBootClust==Nobs & !ML & !subcluster // do we ever error-cluster *and* bootstrap-cluster by individual?
706-
granular = !scoreBS & (purerobust | 5*Nobs*k+1/25*2*NBootClust*k^2+1/25*2*NBootClust^2*k+NBootClust+1/25*2*NBootClust^2*reps+2*NBootClust*reps > 3*Nobs*reps+Nobs*k+1/25*(2*NBootClust*k*reps+2*k*reps-2*k*NBootClust-2*NBootClust*reps+2*NBootClust*k*reps)+2*NBootClust*reps)
705+
purerobust = NClustVar & !scoreBS & NBootClust==Nobs & !subcluster // do we ever error-cluster *and* bootstrap-cluster by individual?
706+
granular = NClustVar & !scoreBS & (purerobust | 5*Nobs*k+1/25*2*NBootClust*k^2+1/25*2*NBootClust^2*k+NBootClust+1/25*2*NBootClust^2*reps+2*NBootClust*reps > 3*Nobs*reps+Nobs*k+1/25*(2*NBootClust*k*reps+2*k*reps-2*k*NBootClust-2*NBootClust*reps+2*NBootClust*k*reps)+2*NBootClust*reps)
707707
doQQ = !granular & NBootClust * (sumN + NBootClust*reps +.5*(NErrClustCombs)) < 2*reps*(2*sumN + NErrClustCombs) // estimate compute time for U :* (sum_c QQ) * U vs. sum_c(colsum((Q_c*U):*(Q_c*U)))
708708
709-
if (granular & rows(IDBootData)==0 & NClustVar)
710-
(void) _panelsetup(*pID, 1..NBootClustVar, IDBootData)
709+
if (granular) {
710+
if (rows(IDBootData)==0 & NFE)
711+
(void) _panelsetup(*pID, 1..NBootClustVar, IDBootData)
712+
(void) _panelsetup(*pIDAll, 1..NBootClustVar, IDBootAll)
713+
}
711714
712-
if (robust & granular < NErrClustCombs) {
713-
if (subcluster)
715+
if (robust & !purerobust) {
716+
if (subcluster | granular)
714717
infoErrAll = _panelsetup(*pIDAll, subcluster+1..NClustVar) // info for error clusters wrt data collapsed to intersections of all bootstrapping & error clusters; used to speed crosstab EZVR0 wrt bootstrapping cluster & intersection of all error clusterings
715718
if (scoreBS)
716719
J_ClustN_NBootClust = J(Clust.N, NBootClust, 0)
@@ -1093,11 +1096,6 @@ real scalar boottestModel::MakeNonWRENumers(real scalar thisWeightGrpStart, real
10931096
10941097
10951098
1096-
1097-
1098-
1099-
1100-
11011099
void boottestModel::MakeNonWREStats(real scalar thisWeightGrpStart, real scalar thisWeightGrpStop) {
11021100
real scalar d, i, c, j, l; real matrix eu, eueu, t; real colvector numer_l
11031101
pointer (real matrix) scalar peZVR0, pVR0
@@ -1178,9 +1176,13 @@ void boottestModel::MakeNonWREStats(real scalar thisWeightGrpStart, real scalar
11781176
eu = *M_DGP.partialFE(&(pM->e :* u)) - *pX * betadev
11791177
eueu = eu:*eu
11801178
} else { // clusters small but not all singletons
1181-
eu = *M_DGP.partialFE(&(pM->e :* u[IDBootData,]))
1182-
for (d=df;d;d--)
1183-
pQ[1,d] = &(_panelsum(eu, pM->WZVR0[d].M, *pinfoErrData) - _panelsum(*pX, pM->WZVR0[d].M, *pinfoErrData) * betadev)
1179+
if (NFE) {
1180+
eu = *M_DGP.partialFE(&(pM->e :* u[IDBootData,]))
1181+
for (d=df;d;d--)
1182+
pQ[1,d] = &(_panelsum(eu, pM->WZVR0[d].M, *pinfoErrData) - _panelsum(*pX, pM->WZVR0[d].M, *pinfoErrData) * betadev)
1183+
} else
1184+
for (d=df;d;d--)
1185+
pQ[1,d] = &(_panelsum(_panelsum(pM->e, pM->WZVR0[d].M, infoAllData) :* u[IDBootAll,], infoErrAll) - _panelsum(*pX, pM->WZVR0[d].M, *pinfoErrData) * betadev)
11841186
}
11851187
11861188
for (c=NErrClustCombs; c>granular; c--)

lboottest.mlib

1.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)