@@ -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-
11011099void 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-- )
0 commit comments