Skip to content

Commit 97dbc42

Browse files
authored
Merge pull request #18 from lshtm-gigs/dev
gigs 0.3.1
2 parents 1db68ce + 153fd55 commit 97dbc42

24 files changed

+163
-120
lines changed

_gclassify_sga.ado

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
capture program drop _gclassify_sga
22
capture program drop SGA_Badsyntax
3-
*! version 0.3.0 (SJxx-x: dmxxxx)
3+
*! version 0.3.1 (SJxx-x: dmxxxx)
44
program define _gclassify_sga
55
version 16
66
preserve

_gclassify_stunting.ado

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
capture program drop _gclassify_stunting
2-
*! version 0.3.0 (SJxx-x: dmxxxx)
2+
*! version 0.3.1 (SJxx-x: dmxxxx)
33
program define _gclassify_stunting
44
version 16
55
preserve
@@ -50,18 +50,22 @@ program define _gclassify_stunting
5050
else StuntingSex_Badsyntax
5151

5252
marksample touse
53-
tempvar pma_weeks z_PNG z_WHO z
53+
tempvar pma_weeks pma_wks_floored z_NBS z_PNG z_WHO z
5454
qui {
55-
gen double `pma_weeks' = floor((`age_days' + `gest_days') / 7)
55+
gen double `pma_weeks' = (`age_days' + `gest_days') / 7
56+
gen double `pma_wks_floored' = floor(`pma_weeks')
57+
58+
egen double `z_NBS' = ig_nbs(`input', "lfga", "v2z"), ///
59+
gest_days(`gest_days') sex(`sex') sexcode(m="`male'", f="`female'")
5660
egen double `z_PNG' = ig_png(`input', "lfa", "v2z"), ///
57-
xvar(`pma_weeks') sex(`sex') sexcode(m="`male'", f="`female'")
61+
xvar(`pma_wks_floored') sex(`sex') sexcode(m="`male'", f="`female'")
5862
egen double `z_WHO' = who_gs(`input', "lhfa", "v2z"), ///
5963
xvar(`age_days') sex(`sex') sexcode(m="`male'", f="`female'")
60-
61-
gen double `z' = `z_PNG' if ///
62-
`gest_days' >= 182 & `gest_days' < 259 & ///
64+
65+
gen double `z' = `z_NBS' if `age_days' == 0
66+
replace `z' = `z_PNG' if `age_days' > 0 & `gest_days' < 259 & ///
6367
`pma_weeks' >= 27 & `pma_weeks' <= 64
64-
replace `z' = `z_WHO' if `gest_days' >= 259 | ///
68+
replace `z' = `z_WHO' if `age_days' > 0 & `gest_days' >= 259 | ///
6569
(`gest_days' < 259 & `pma_weeks' > 64)
6670

6771
generate `type' `return' = .

_gclassify_svn.ado

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
capture program drop _gclassify_svn
22
capture program drop SVN_Badsyntax
3-
*! version 0.3.0 (SJxx-x: dmxxxx)
3+
*! version 0.3.1 (SJxx-x: dmxxxx)
44
program define _gclassify_svn
55
version 16
66
preserve

_gclassify_wasting.ado

+7-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
capture program drop _gclassify_wasting
2-
*! version 0.3.0 (SJxx-x: dmxxxx)
2+
*! version 0.3.1 (SJxx-x: dmxxxx)
33
program define _gclassify_wasting
44
version 16
55
preserve
@@ -54,25 +54,22 @@ program define _gclassify_wasting
5454

5555
tempvar z z_WHO_wfh z_WHO_wfl z_png
5656
qui {
57+
egen double `z_png' = ig_png(`weight_kg', "wfl", "v2z"), ///
58+
xvar(`lenht_cm') sex(`sex') sexcode(m="`male'", f="`female'")
5759
egen double `z_WHO_wfl' = who_gs(`weight_kg', "wfl", "v2z"), ///
5860
xvar(`lenht_cm') sex(`sex') sexcode(m="`male'", f="`female'")
5961
egen double `z_WHO_wfh' = who_gs(`weight_kg', "wfh", "v2z"), ///
6062
xvar(`lenht_cm') sex(`sex') sexcode(m="`male'", f="`female'")
61-
egen double `z_png' = ig_png(`weight_kg', "wfl", "v2z"), ///
62-
xvar(`lenht_cm') sex(`sex') sexcode(m="`male'", f="`female'")
6363

6464
tempvar pma_weeks use_png use_who
65-
gen double `pma_weeks' = floor((`age_days' + `gest_days') / 7)
66-
gen byte `use_png' = 1 if `gest_days' >= 182 & `gest_days' < 259 & ///
65+
gen double `pma_weeks' = (`age_days' + `gest_days') / 7
66+
gen byte `use_png' = 1 if `gest_days' < 259 & ///
6767
`pma_weeks' >= 27 & `pma_weeks' <= 64
6868

6969
gen double `z' = .
7070
replace `z' = `z_png' if `use_png' == 1
71-
replace `z' = `z_WHO_wfl' if `gest_days' >= 259 & ///
72-
`age_days' < 731
73-
replace `z' = `z_WHO_wfh' if `gest_days' >= 259 & ///
74-
`age_days' >= 731
75-
71+
replace `z' = `z_WHO_wfl' if `use_png' != 1 & `age_days' < 731
72+
replace `z' = `z_WHO_wfh' if `use_png' != 1 & `age_days' >= 731
7673

7774
gen `type' `return' = .
7875
replace `return' = -1 if float(`z') <= -2

_gclassify_wfa.ado

+18-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
capture program drop _gclassify_wfa
2-
*! version 0.3.0 (SJxx-x: dmxxxx)
2+
*! version 0.3.1 (SJxx-x: dmxxxx)
33
program define _gclassify_wfa
44
version 16
55
preserve
@@ -17,7 +17,7 @@ program define _gclassify_wfa
1717
error 198
1818
}
1919

20-
syntax [if] [in], GEST_days(varname numeric) age_days(varname) /*
20+
syntax [if] [in], GEST_days(varname numeric) age_days(varname numeric) /*
2121
*/ sex(varname) SEXCode(string) [OUTliers BY(string)]
2222

2323
if `"`by'"' != "" {
@@ -36,7 +36,7 @@ program define _gclassify_wfa
3636
WFASex_Badsyntax
3737
}
3838
local male "`3'"
39-
local female "`6'"
39+
local female "`6'"
4040
}
4141
else if "`1'" == substr("female",1,length("`1'")) {
4242
if "`2'" ~= "=" | "`5'" ~= "=" | /*
@@ -51,21 +51,24 @@ program define _gclassify_wfa
5151

5252
marksample touse
5353

54-
tempvar pma_weeks acronym z_WHO z_PNG z standard
54+
tempvar pma_weeks pma_wks_floored z_NBS z_PNG z_WHO z
5555
qui {
56-
gen double `pma_weeks' = floor((`age_days' + `gest_days') / 7)
56+
gen double `pma_weeks' = (`age_days' + `gest_days') / 7
57+
gen double `pma_wks_floored' = floor(`pma_weeks')
58+
59+
egen double `z_NBS' = ig_nbs(`weight_kg', "wfga", "v2z"), ///
60+
gest_days(`gest_days') sex(`sex') sexcode(m="`male'", f="`female'")
5761
egen double `z_PNG' = ig_png(`weight_kg', "wfa", "v2z"), ///
58-
xvar(`pma_weeks') sex(`sex') sexcode(m="`male'", f="`female'")
59-
egen double `z_WHO' = who_gs(`weight_kg', "wfa", "v2z"), xvar(`age_days') ///
60-
sex(`sex') sexcode(m="`male'", f="`female'")
61-
62-
gen double `z' = `z_PNG' if ///
63-
`gest_days' >= 182 & `gest_days' < 259 & ///
64-
`pma_weeks' >= 27 & `pma_weeks' < 64
65-
replace `z' = `z_WHO' if ///
66-
`gest_days' < 182 | `gest_days' >= 259 | `pma_weeks' < 27 | ///
67-
`pma_weeks' >= 64
62+
xvar(`pma_wks_floored') sex(`sex') sexcode(m="`male'", f="`female'")
63+
egen double `z_WHO' = who_gs(`weight_kg', "wfa", "v2z"), ///
64+
xvar(`age_days') sex(`sex') sexcode(m="`male'", f="`female'")
6865

66+
gen double `z' = `z_NBS' if `age_days' == 0
67+
replace `z' = `z_PNG' if `age_days' > 0 & `gest_days' < 259 & ///
68+
`pma_weeks' >= 27 & `pma_weeks' <= 64
69+
replace `z' = `z_WHO' if `age_days' > 0 & `gest_days' >= 259 | ///
70+
(`gest_days' < 259 & `pma_weeks' > 64)
71+
6972
generate `type' `return' = .
7073
replace `return' = -1 if float(`z') <= -2
7174
replace `return' = -2 if float(`z') <= -3

_gig_nbs.ado

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
capture program drop _gig_nbs
22
capture program drop Badsexvar_nbs
33
capture program drop Badsyntax_nbs
4-
*! version 0.3.0 (SJxx-x: dmxxxx)
4+
*! version 0.3.1 (SJxx-x: dmxxxx)
55
program define _gig_nbs
66
version 16
77
preserve

_gig_png.ado

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
capture program drop _gig_png
22
capture program drop Badsexvar_png
33
capture program drop Badsyntax_png
4-
*! version 0.3.0 (SJxx-x: dmxxxx)
4+
*! version 0.3.1 (SJxx-x: dmxxxx)
55
program define _gig_png
66
version 16
77
preserve

_gwho_gs.ado

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
capture program drop _gwho_gs
22
capture program drop Badsexvar_who
33
capture program drop Badsyntax_who
4-
*! version 0.3.0 (SJxx-x: dmxxxx)
4+
*! version 0.3.1 (SJxx-x: dmxxxx)
55
program define _gwho_gs
66
version 16
77
preserve

benchmarking/benchmark.do

+50-18
Original file line numberDiff line numberDiff line change
@@ -13,39 +13,47 @@
1313
be checked out on the R package website in the benchmarking article
1414
(https://lshtm-gigs.github.io/gigs/)
1515
*/
16+
clear all
17+
foreach file in "_gclassify_sga.ado" "_gclassify_svn.ado" ///
18+
"_gclassify_stunting.ado" "_gclassify_wasting.ado" ///
19+
"_gclassify_wfa.ado" ///
20+
"_gig_nbs.ado" "_gig_png.ado" "_gwho_gs.ado" ///
21+
"gigs_ipolate_coeffs.ado" {
22+
run "`file'"
23+
}
1624

17-
// gigs 0.3.0:
18-
// foreach i in 1 10 100 500 1000 5000 10000 25000 50000 75000 100000 {
19-
// use "benchmarking/bench_dataset.dta", clear
20-
// qui drop if _n > `i'
21-
// di "Number of inputs: `i'"
22-
// bench, reps(25) restore last: ///
23-
// qui egen double z_gigs = who_gs(y, "wfa", "v2z"), ///
24-
// xvar(x) sex(sex) sexcode(m=M, f=F)
25-
// }
25+
foreach i in 1 10 100 500 1000 5000 10000 25000 50000 75000 100000 {
26+
use "benchmarking/bench_dataset.dta", clear
27+
qui drop if _n > `i'
28+
di "Number of inputs: `i'"
29+
bench, reps(25) restore last: ///
30+
qui egen double z_gigs = who_gs(y, "wfa", "v2z"), ///
31+
xvar(x) sex(sex) sexcode(m=M, f=F)
32+
}
2633

34+
// gigs 0.3.1:
2735
// Number of inputs: 1
2836
// Average over 25 runs: 0.008 seconds
2937
// Number of inputs: 10
30-
// Average over 25 runs: 0.010 seconds
38+
// Average over 25 runs: 0.009 seconds
3139
// Number of inputs: 100
32-
// Average over 25 runs: 0.010 seconds
40+
// Average over 25 runs: 0.009 seconds
3341
// Number of inputs: 500
34-
// Average over 25 runs: 0.011 seconds
42+
// Average over 25 runs: 0.010 seconds
3543
// Number of inputs: 1000
36-
// Average over 25 runs: 0.013 seconds
44+
// Average over 25 runs: 0.012 seconds
3745
// Number of inputs: 5000
3846
// Average over 25 runs: 0.028 seconds
3947
// Number of inputs: 10000
40-
// Average over 25 runs: 0.048 seconds
48+
// Average over 25 runs: 0.047 seconds
4149
// Number of inputs: 25000
42-
// Average over 25 runs: 0.107 seconds
50+
// Average over 25 runs: 0.106 seconds
4351
// Number of inputs: 50000
44-
// Average over 25 runs: 0.205 seconds
52+
// Average over 25 runs: 0.204 seconds
4553
// Number of inputs: 75000
46-
// Average over 25 runs: 0.313 seconds
54+
// Average over 25 runs: 0.310 seconds
4755
// Number of inputs: 100000
48-
// Average over 25 runs: 0.431 seconds
56+
// Average over 25 runs: 0.410 seconds
4957

5058
// zanthro 1.0.2:
5159
// foreach i in 1 10 100 500 1000 5000 10000 25000 50000 75000 100000 {
@@ -90,6 +98,30 @@ egen z_anthro = zanthro(y, wa, WHO), xvar(x) gender(sex) ///
9098
// OLD VERSIONS OF GIGS --------------------------------------------------------
9199
// Kept to note how development is progressing
92100

101+
// gigs 0.3.0:
102+
// Number of inputs: 1
103+
// Average over 25 runs: 0.008 seconds
104+
// Number of inputs: 10
105+
// Average over 25 runs: 0.010 seconds
106+
// Number of inputs: 100
107+
// Average over 25 runs: 0.010 seconds
108+
// Number of inputs: 500
109+
// Average over 25 runs: 0.011 seconds
110+
// Number of inputs: 1000
111+
// Average over 25 runs: 0.013 seconds
112+
// Number of inputs: 5000
113+
// Average over 25 runs: 0.028 seconds
114+
// Number of inputs: 10000
115+
// Average over 25 runs: 0.048 seconds
116+
// Number of inputs: 25000
117+
// Average over 25 runs: 0.107 seconds
118+
// Number of inputs: 50000
119+
// Average over 25 runs: 0.205 seconds
120+
// Number of inputs: 75000
121+
// Average over 25 runs: 0.313 seconds
122+
// Number of inputs: 100000
123+
// Average over 25 runs: 0.431 seconds
124+
93125
// gigs 0.2.4:
94126
// Number of inputs: 1
95127
// Average over 25 runs: 0.016 seconds

0 commit comments

Comments
 (0)