diff --git a/data/fig1.dta b/data/fig1.dta index b3d314d..27331e1 100644 Binary files a/data/fig1.dta and b/data/fig1.dta differ diff --git a/data/fig2.dta b/data/fig2.dta index 29e1290..ea50689 100644 Binary files a/data/fig2.dta and b/data/fig2.dta differ diff --git a/data/fig3.dta b/data/fig3.dta index 38983d8..333658a 100644 Binary files a/data/fig3.dta and b/data/fig3.dta differ diff --git a/data/nhefs-formatted.dta b/data/nhefs-formatted.dta index 37b8390..4059ec3 100644 Binary files a/data/nhefs-formatted.dta and b/data/nhefs-formatted.dta differ diff --git a/data/nhefs-highprice.dta b/data/nhefs-highprice.dta index 350481e..7172a6a 100644 Binary files a/data/nhefs-highprice.dta and b/data/nhefs-highprice.dta differ diff --git a/data/nhefs-ps.dta b/data/nhefs-ps.dta index 55d0009..a77609c 100644 Binary files a/data/nhefs-ps.dta and b/data/nhefs-ps.dta differ diff --git a/data/nhefs-wcens.dta b/data/nhefs-wcens.dta index 08e6e20..38165fc 100644 Binary files a/data/nhefs-wcens.dta and b/data/nhefs-wcens.dta differ diff --git a/data/nhefs_std.dta b/data/nhefs_std.dta index 445952d..7aab339 100644 Binary files a/data/nhefs_std.dta and b/data/nhefs_std.dta differ diff --git a/data/nhefs_std1.dta b/data/nhefs_std1.dta index 0372945..b0be18b 100644 Binary files a/data/nhefs_std1.dta and b/data/nhefs_std1.dta differ diff --git a/data/nhefs_std2.dta b/data/nhefs_std2.dta index 6fd3973..b7945d2 100644 Binary files a/data/nhefs_std2.dta and b/data/nhefs_std2.dta differ diff --git a/data/nhefs_surv.dta b/data/nhefs_surv.dta index bbbc509..bfbdc9d 100644 Binary files a/data/nhefs_surv.dta and b/data/nhefs_surv.dta differ diff --git a/data/observe.mmat b/data/observe.mmat index dcae375..df82810 100644 Binary files a/data/observe.mmat and b/data/observe.mmat differ diff --git a/docs/11-why-model-r.md b/docs/11-why-model-r.md index 171a12f..9a99fb8 100644 --- a/docs/11-why-model-r.md +++ b/docs/11-why-model-r.md @@ -18,7 +18,9 @@ Y <- c(200, 150, 220, 110, 50, 180, 90, 170, 170, 30, plot(A, Y) ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{11-why-model-r_files/figure-latex/unnamed-chunk-1-1} \end{center} ``` r summary(Y[A == 0]) @@ -35,7 +37,9 @@ Y2 <- c(110, 80, 50, 40, 170, 30, 70, 50, 110, 50, 180, plot(A2, Y2) ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{11-why-model-r_files/figure-latex/unnamed-chunk-1-2} \end{center} ``` r summary(Y2[A2 == 1]) @@ -69,7 +73,9 @@ Y3 <- plot(Y3 ~ A3) ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{11-why-model-r_files/figure-latex/unnamed-chunk-2-1} \end{center} ``` r diff --git a/docs/11-why-model-stata.md b/docs/11-why-model-stata.md index d145dd4..2b83296 100644 --- a/docs/11-why-model-stata.md +++ b/docs/11-why-model-stata.md @@ -109,7 +109,8 @@ bysort A: sum Y Y | 8 146.25 58.2942 50 220 ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{figs/stata-fig-11-1} \end{center} ``` stata @@ -197,7 +198,8 @@ bysort A: sum Y Y | 4 195 31.09126 150 220 ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{figs/stata-fig-11-2} \end{center} ``` stata @@ -250,7 +252,8 @@ qui gr export figs/stata-fig-11-3.png, replace 17. end ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{figs/stata-fig-11-3} \end{center} ## Program 11.2 @@ -294,7 +297,8 @@ qui gr export figs/stata-fig-11-4.png, replace ------------------------------------------------------------------------------ ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{figs/stata-fig-11-4} \end{center} ``` stata @@ -361,4 +365,5 @@ qui gr export figs/stata-fig-11-5.png, replace ------------------------------------------------------------------------------ ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{figs/stata-fig-11-5} \end{center} diff --git a/docs/13-stand-gformula-r.md b/docs/13-stand-gformula-r.md index cac0eb9..a8f07a2 100644 --- a/docs/13-stand-gformula-r.md +++ b/docs/13-stand-gformula-r.md @@ -87,11 +87,11 @@ nhefs[which(nhefs$seqn == 24770), c( "active", "wt71" )] -#> # A tibble: 1 × 11 +#> # A tibble: 1 x 11 #> predicted.meanY qsmk sex race age education smokeintensity smokeyrs #> #> 1 0.342 0 0 0 26 4 15 12 -#> # ℹ 3 more variables: exercise , active , wt71 +#> # i 3 more variables: exercise , active , wt71 summary(nhefs$predicted.meanY[nhefs$cens == 0]) #> Min. 1st Qu. Median Mean 3rd Qu. Max. @@ -344,14 +344,14 @@ bootstrap <- ul )) bootstrap -#> V1 mean se ll -#> 1 Observed 2.56188497106099 0.0549704676078034 2.45414483433637 -#> 2 No Treatment 1.65212306626744 0.143266399330196 1.37132608338552 -#> 3 Treatment 5.11474489549336 0.38239206319866 4.36527022365002 -#> 4 Treatment - No Treatment 3.46262182922592 0.508889999498158 2.46521575811692 +#> V1 mean se ll +#> 1 Observed 2.56188497106099 0.120597104489459 2.32551898962183 +#> 2 No Treatment 1.65212306626744 0.106947069654509 1.4425106614925 +#> 3 Treatment 5.11474489549336 0.358814454471498 4.41148148759683 +#> 4 Treatment - No Treatment 3.46262182922592 0.392348048118945 2.6936337855082 #> ul -#> 1 2.66962510778561 -#> 2 1.93292004914935 -#> 3 5.86421956733669 -#> 4 4.46002790033492 +#> 1 2.79825095250014 +#> 2 1.86173547104237 +#> 3 5.81800830338988 +#> 4 4.23160987294364 ``` diff --git a/docs/15-prop-scores-r.md b/docs/15-prop-scores-r.md index 579bf47..3264aaa 100644 --- a/docs/15-prop-scores-r.md +++ b/docs/15-prop-scores-r.md @@ -330,7 +330,9 @@ ggplot(nhefs, aes(x = ps, fill = qsmklabel, color = qsmklabel)) + legend.title = element_blank()) ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{15-prop-scores-r_files/figure-latex/unnamed-chunk-3-1} \end{center} ``` r @@ -345,7 +347,9 @@ ggplot(nhefs, aes(x = ps, fill = as.factor(qsmk), color = as.factor(qsmk))) + theme(legend.position = 'bottom', legend.direction = 'vertical') ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{15-prop-scores-r_files/figure-latex/unnamed-chunk-3-2} \end{center} ``` r @@ -732,15 +736,15 @@ bootstrap <- data.frame(cbind(c("Observed", "No Treatment", "Treatment", "Treatment - No Treatment"), mean, se, ll, ul)) bootstrap #> V1 mean se ll -#> 1 Observed 2.63384609228479 0.238861089903915 2.16568695876514 -#> 2 No Treatment 1.71983636149845 0.197112530909323 1.33350290001464 -#> 3 Treatment 5.35072300362985 0.587017349690794 4.20019013993574 -#> 4 Treatment - No Treatment 3.6308866421314 0.592573338393775 2.46946424068094 +#> 1 Observed 2.63384609228479 0.279890742231742 2.0852703179044 +#> 2 No Treatment 1.71983636149845 0.275568960869064 1.17973112293796 +#> 3 Treatment 5.35072300362985 0.314161588160568 4.73497760550923 +#> 4 Treatment - No Treatment 3.6308866421314 0.451854865413406 2.74526737968193 #> ul -#> 1 3.10200522580445 -#> 2 2.10616982298226 -#> 3 6.50125586732396 -#> 4 4.79230904358186 +#> 1 3.18242186666519 +#> 2 2.25994160005895 +#> 3 5.96646840175047 +#> 4 4.51650590458087 ``` @@ -833,7 +837,7 @@ for(i in 1:nboot) { } } #> 95% CI for the causal mean difference -#> 2.679491 , 4.442331 +#> 2.714556 , 4.383686 ``` A more flexible and elegant way to do this is to write a function to perform the model fitting, prediction, bootstrapping, and reporting all at once. diff --git a/docs/15-prop-scores-stata.md b/docs/15-prop-scores-stata.md index 7cc9898..a0ec602 100644 --- a/docs/15-prop-scores-stata.md +++ b/docs/15-prop-scores-stata.md @@ -345,7 +345,8 @@ Log likelihood = -838.44842 Pseudo R2 = 0.0611 file ./data/nhefs-ps.dta saved ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{./figs/stata-fig-15-2} \end{center} ## Program 15.3 diff --git a/docs/17-causal-surv-r.md b/docs/17-causal-surv-r.md index b374235..8bea5cf 100644 --- a/docs/17-causal-surv-r.md +++ b/docs/17-causal-surv-r.md @@ -58,7 +58,9 @@ ggsurvplot(fit, data = nhefs, xlab="Months of follow-up", fontsize = 3) ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{17-causal-surv-r_files/figure-latex/unnamed-chunk-2-1} \end{center} ## Program 17.2 @@ -137,7 +139,9 @@ ggplot(hazards.graph, aes(x=time, y=surv)) + theme(legend.position="bottom") ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{17-causal-surv-r_files/figure-latex/unnamed-chunk-3-1} \end{center} ## Program 17.3 @@ -234,7 +238,9 @@ ggplot(ipw.graph, aes(x=time, y=surv)) + theme(legend.position="bottom") ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{17-causal-surv-r_files/figure-latex/unnamed-chunk-4-1} \end{center} ## Program 17.4 @@ -350,7 +356,9 @@ ggplot(gf.graph, aes(x=time, y=surv)) + theme(legend.position="bottom") ``` - + + +\begin{center}\includegraphics[width=0.85\linewidth]{17-causal-surv-r_files/figure-latex/unnamed-chunk-5-1} \end{center} ## Program 17.5 diff --git a/docs/17-causal-surv-stata.md b/docs/17-causal-surv-stata.md index e6642cc..e317d3c 100644 --- a/docs/17-causal-surv-stata.md +++ b/docs/17-causal-surv-stata.md @@ -78,7 +78,8 @@ Observed time interval: (0, survtime] Analysis time _t: survtime ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{./figs/stata-fig-17-1} \end{center} ## Program 17.2 @@ -278,7 +279,8 @@ psurv0 float %9.0g psurv, interv == Original observat psurv1 float %9.0g psurv, interv == Duplicated observation ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{./figs/stata-fig-17-2} \end{center} ## Program 17.3 @@ -620,7 +622,7 @@ psurv1 float %9.0g psurv, interv == Duplicated observ 26. drop if newseqn != 1 /* only need one pair */ 27. -r; t=0.00 6:43:12 +r; t=0.00 8:25:46 Command: bootipw_surv PrY_a0: r(boot_0) @@ -628,7 +630,7 @@ r; t=0.00 6:43:12 difference: r(boot_diff) Simulations (10): .........10 done -r; t=19.98 6:43:32 +r; t=20.55 8:26:06 @@ -646,7 +648,8 @@ Bootstrap results Number of obs = 1,629 ------------------------------------------------------------------------------ ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{./figs/stata-fig-17-3} \end{center} ## Program 17.4 @@ -866,7 +869,7 @@ file /Users/tom/Documents/GitHub/cibookex-r/figs/stata-fig-17-4.png saved as PNG 5. drop if time != 0 6. /*only predict on new version of data */ -r; t=0.00 6:43:39 +r; t=0.00 8:26:13 Command: bootstdz_surv PrY_a0: r(boot_0) @@ -874,7 +877,7 @@ r; t=0.00 6:43:39 difference: r(boot_diff) Simulations (10): .........10 done -r; t=23.62 6:44:03 +r; t=25.24 8:26:39 @@ -892,4 +895,5 @@ Bootstrap results Number of obs = 1,629 ------------------------------------------------------------------------------ ``` - + +\begin{center}\includegraphics[width=0.85\linewidth]{./figs/stata-fig-17-4} \end{center} diff --git a/docs/18-session-info-r.md b/docs/18-session-info-r.md index 93b9d91..dfff9d9 100644 --- a/docs/18-session-info-r.md +++ b/docs/18-session-info-r.md @@ -7,7 +7,7 @@ For reproducibility. ``` r # install.packages("sessioninfo") sessioninfo::session_info() -#> ─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +#> - Session info ------------------------------------------------------------------------------------------------------------------------------------------- #> setting value #> version R version 4.4.2 (2024-10-31) #> os macOS Sequoia 15.1 @@ -20,7 +20,7 @@ sessioninfo::session_info() #> date 2024-11-13 #> pandoc 3.5 @ /opt/homebrew/bin/ (via rmarkdown) #> -#> ─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +#> - Packages ----------------------------------------------------------------------------------------------------------------------------------------------- #> package * version date (UTC) lib source #> bookdown 0.41 2024-10-16 [1] CRAN (R 4.4.1) #> cli 3.6.3 2024-06-21 [1] CRAN (R 4.4.0) @@ -38,5 +38,5 @@ sessioninfo::session_info() #> [1] /Users/tom/Library/R/arm64/4.4/library #> [2] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library #> -#> ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +#> ---------------------------------------------------------------------------------------------------------------------------------------------------------- ``` diff --git a/docs/18-session-info-stata.md b/docs/18-session-info-stata.md index 36fa199..9007501 100644 --- a/docs/18-session-info-stata.md +++ b/docs/18-session-info-stata.md @@ -29,7 +29,7 @@ Serial number: 501809305331 ``` r # install.packages("sessioninfo") sessioninfo::session_info() -#> ─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +#> - Session info ------------------------------------------------------------------------------------------------------------------------------------------- #> setting value #> version R version 4.4.2 (2024-10-31) #> os macOS Sequoia 15.1 @@ -42,7 +42,7 @@ sessioninfo::session_info() #> date 2024-11-13 #> pandoc 3.5 @ /opt/homebrew/bin/ (via rmarkdown) #> -#> ─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +#> - Packages ----------------------------------------------------------------------------------------------------------------------------------------------- #> package * version date (UTC) lib source #> bookdown 0.41 2024-10-16 [1] CRAN (R 4.4.1) #> cli 3.6.3 2024-06-21 [1] CRAN (R 4.4.0) @@ -61,5 +61,5 @@ sessioninfo::session_info() #> [1] /Users/tom/Library/R/arm64/4.4/library #> [2] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library #> -#> ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +#> ---------------------------------------------------------------------------------------------------------------------------------------------------------- ``` diff --git a/docs/cibookex-r.pdf b/docs/cibookex-r.pdf index 894ce3e..30df57d 100644 Binary files a/docs/cibookex-r.pdf and b/docs/cibookex-r.pdf differ diff --git a/docs/cibookex-r.tex b/docs/cibookex-r.tex index f6d5ad3..a6e333d 100644 --- a/docs/cibookex-r.tex +++ b/docs/cibookex-r.tex @@ -1743,15 +1743,15 @@ \section{Program 13.4}\label{program-13.4} \NormalTok{ ))} \NormalTok{bootstrap} \CommentTok{\#\textgreater{} V1 mean se ll} -\CommentTok{\#\textgreater{} 1 Observed 2.56188497106099 0.314019242951459 1.94641856442359} -\CommentTok{\#\textgreater{} 2 No Treatment 1.65212306626744 0.303658428350452 1.05696348309852} -\CommentTok{\#\textgreater{} 3 Treatment 5.11474489549336 0.438830011601556 4.25465387741901} -\CommentTok{\#\textgreater{} 4 Treatment {-} No Treatment 3.46262182922592 0.288456715740051 2.89725705527671} +\CommentTok{\#\textgreater{} 1 Observed 2.56188497106099 0.120597104489459 2.32551898962183} +\CommentTok{\#\textgreater{} 2 No Treatment 1.65212306626744 0.106947069654509 1.4425106614925} +\CommentTok{\#\textgreater{} 3 Treatment 5.11474489549336 0.358814454471498 4.41148148759683} +\CommentTok{\#\textgreater{} 4 Treatment {-} No Treatment 3.46262182922592 0.392348048118945 2.6936337855082} \CommentTok{\#\textgreater{} ul} -\CommentTok{\#\textgreater{} 1 3.17735137769838} -\CommentTok{\#\textgreater{} 2 2.24728264943636} -\CommentTok{\#\textgreater{} 3 5.9748359135677} -\CommentTok{\#\textgreater{} 4 4.02798660317513} +\CommentTok{\#\textgreater{} 1 2.79825095250014} +\CommentTok{\#\textgreater{} 2 1.86173547104237} +\CommentTok{\#\textgreater{} 3 5.81800830338988} +\CommentTok{\#\textgreater{} 4 4.23160987294364} \end{Highlighting} \end{Shaded} @@ -2886,16 +2886,16 @@ \section{Program 15.4}\label{program-15.4} \NormalTok{bootstrap }\OtherTok{\textless{}{-}} \FunctionTok{data.frame}\NormalTok{(}\FunctionTok{cbind}\NormalTok{(}\FunctionTok{c}\NormalTok{(}\StringTok{"Observed"}\NormalTok{, }\StringTok{"No Treatment"}\NormalTok{, }\StringTok{"Treatment"}\NormalTok{,} \StringTok{"Treatment {-} No Treatment"}\NormalTok{), mean, se, ll, ul))} \NormalTok{bootstrap} -\CommentTok{\#\textgreater{} V1 mean se ll} -\CommentTok{\#\textgreater{} 1 Observed 2.63384609228479 0.128997515912632 2.3810156070009} -\CommentTok{\#\textgreater{} 2 No Treatment 1.71983636149845 0.0944885980997972 1.53464211227317} -\CommentTok{\#\textgreater{} 3 Treatment 5.35072300362985 0.369343979138947 4.6268221066108} -\CommentTok{\#\textgreater{} 4 Treatment {-} No Treatment 3.6308866421314 0.396811917955185 2.85314957430297} +\CommentTok{\#\textgreater{} V1 mean se ll} +\CommentTok{\#\textgreater{} 1 Observed 2.63384609228479 0.279890742231742 2.0852703179044} +\CommentTok{\#\textgreater{} 2 No Treatment 1.71983636149845 0.275568960869064 1.17973112293796} +\CommentTok{\#\textgreater{} 3 Treatment 5.35072300362985 0.314161588160568 4.73497760550923} +\CommentTok{\#\textgreater{} 4 Treatment {-} No Treatment 3.6308866421314 0.451854865413406 2.74526737968193} \CommentTok{\#\textgreater{} ul} -\CommentTok{\#\textgreater{} 1 2.88667657756869} -\CommentTok{\#\textgreater{} 2 1.90503061072374} -\CommentTok{\#\textgreater{} 3 6.0746239006489} -\CommentTok{\#\textgreater{} 4 4.40862370995983} +\CommentTok{\#\textgreater{} 1 3.18242186666519} +\CommentTok{\#\textgreater{} 2 2.25994160005895} +\CommentTok{\#\textgreater{} 3 5.96646840175047} +\CommentTok{\#\textgreater{} 4 4.51650590458087} \end{Highlighting} \end{Shaded} @@ -2989,7 +2989,7 @@ \section{Program 15.4}\label{program-15.4} \NormalTok{ \}} \NormalTok{\}} \CommentTok{\#\textgreater{} 95\% CI for the causal mean difference} -\CommentTok{\#\textgreater{} 2.700067 , 4.423406} +\CommentTok{\#\textgreater{} 2.714556 , 4.383686} \end{Highlighting} \end{Shaded} @@ -8961,7 +8961,7 @@ \section{Program 17.3}\label{program-17.3-1} 26. drop if newseqn != 1 /* only need one pair */ 27. -r; t=0.00 6:41:04 +r; t=0.00 8:25:46 Command: bootipw_surv PrY_a0: r(boot_0) @@ -8969,7 +8969,7 @@ \section{Program 17.3}\label{program-17.3-1} difference: r(boot_diff) Simulations (10): .........10 done -r; t=21.01 6:41:25 +r; t=20.55 8:26:06 @@ -9215,7 +9215,7 @@ \section{Program 17.4}\label{program-17.4-1} 5. drop if time != 0 6. /*only predict on new version of data */ -r; t=0.00 6:41:32 +r; t=0.00 8:26:13 Command: bootstdz_surv PrY_a0: r(boot_0) @@ -9223,7 +9223,7 @@ \section{Program 17.4}\label{program-17.4-1} difference: r(boot_diff) Simulations (10): .........10 done -r; t=23.90 6:41:56 +r; t=25.24 8:26:39 diff --git a/docs/index.md b/docs/index.md index d2d8e86..0cde0d1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -33,7 +33,8 @@ The Stata code is based on the code by Eleanor Murray and Roger Logan given [her This repo is rendered at . Click the download button above for the pdf and eBook versions. - + +\begin{center}\includegraphics[width=0.65\linewidth]{figs/download} \end{center} ## Downloading the code @@ -42,12 +43,14 @@ The repo is available on GitHub [here](https://github.com/remlapmot/cibookex-r). Either, * click the green *Clone or download* button then choose to *Open in Desktop* or *Download ZIP*. - + + \begin{center}\includegraphics[width=0.65\linewidth]{figs/clone-or-download} \end{center} The *Desktop* option means open in the [GitHub Desktop](https://desktop.github.com/) app (if you have that installed on your machine). The *ZIP* option will give you a zip archive of the repo, which you then unzip. * or fork the repo into your own GitHub account and then clone or download your forked repo to your machine. - + + \begin{center}\includegraphics[width=0.65\linewidth]{figs/fork} \end{center} ## Installing dependency packages It is easiest to open the repo in RStudio, as an RStudio project, by doubling click the `.Rproj` file. This makes sure that R's working directory is at the top level of the repo. If you don't want to open the repo as a project set the working directory to the top level of the repo directories using `setwd()`. Then run: diff --git a/docs/reference-keys.txt b/docs/reference-keys.txt deleted file mode 100644 index fe3c72b..0000000 --- a/docs/reference-keys.txt +++ /dev/null @@ -1,68 +0,0 @@ -downloading-the-code -installing-dependency-packages -downloading-the-datasets -program-11.1 -program-11.2 -program-11.3 -program-12.1 -program-12.2 -program-12.3 -program-12.4 -program-12.5 -program-12.6 -program-12.7 -program-13.1 -program-13.2 -program-13.3 -program-13.4 -program-14.1 -program-14.2 -g-estimation-checking-one-possible-value-of-psi -g-estimation-checking-multiple-possible-values-of-psi -program-14.3 -g-estimation-closed-form-estimator-linear-mean-models -g-estimation-closed-form-estimator-for-2-parameter-model -program-15.1 -program-15.2 -program-15.3 -program-15.4 -program-16.1 -program-16.2 -program-16.3 -program-16.4 -program-16.5 -program-17.1 -program-17.2 -program-17.3 -program-17.4 -program-17.5 -program-11.1-1 -program-11.2-1 -program-11.3-1 -program-12.1-1 -program-12.2-1 -program-12.3-1 -program-12.4-1 -program-12.5-1 -program-12.6-1 -program-12.7-1 -program-13.1-1 -program-13.2-1 -program-13.3-1 -program-13.4-1 -program-14.1-1 -program-14.2-1 -program-14.3-1 -program-15.1-1 -prorgam-15.2 -program-15.3-1 -program-15.4-1 -program-16.1-1 -program-16.2-1 -program-16.3-1 -program-16.4-1 -program-16.5-1 -program-17.1-1 -program-17.2-1 -program-17.3-1 -program-17.4-1