From b096cb5bc97189b9141e58d69ee45a9458679513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Neto?= Date: Wed, 14 Oct 2020 17:44:34 +0100 Subject: [PATCH] Reorganizing index Updated some old links, removed dead ones, and added new links. Also included a resampling test as an alternative to One-way ANOVA --- GraphicalTools/Venn.Rmd | 161 - GraphicalTools/Venn.html | 216 - GraphicalTools/ggvis.Rmd | 237 - GraphicalTools/ggvis.html | 6754 -------------------- GraphicalTools/googleVis.Rmd | 229 - GraphicalTools/googleVis.html | 5017 --------------- bayes.packages/2d4d_hone_2012.csv | 217 - bayes.packages/index.Rmd | 240 - bayes.packages/index.html | 577 -- bayes.packages/part2.Rmd | 278 - bayes.packages/part2.html | 795 --- bayes.packages/roubik_2002_coffe_yield.csv | 29 - bayes.packages/zelig-manual-bayes.pdf | Bin 291461 -> 0 bytes bootstrap/crop.data.csv | 97 + bootstrap/stat_resampling.Rmd | 88 +- bootstrap/stat_resampling.html | 105 +- caret/caret.Rmd | 246 - caret/caret.html | 506 -- caret/train_u6lujuX_CVtuZ9i.csv | 615 -- index.htm | 142 +- manipulate/manipulate.Rmd | 114 - manipulate/manipulate.html | 320 - 22 files changed, 333 insertions(+), 16650 deletions(-) delete mode 100644 GraphicalTools/Venn.Rmd delete mode 100644 GraphicalTools/Venn.html delete mode 100644 GraphicalTools/ggvis.Rmd delete mode 100644 GraphicalTools/ggvis.html delete mode 100644 GraphicalTools/googleVis.Rmd delete mode 100644 GraphicalTools/googleVis.html delete mode 100644 bayes.packages/2d4d_hone_2012.csv delete mode 100644 bayes.packages/index.Rmd delete mode 100644 bayes.packages/index.html delete mode 100644 bayes.packages/part2.Rmd delete mode 100644 bayes.packages/part2.html delete mode 100644 bayes.packages/roubik_2002_coffe_yield.csv delete mode 100644 bayes.packages/zelig-manual-bayes.pdf create mode 100644 bootstrap/crop.data.csv delete mode 100644 caret/caret.Rmd delete mode 100644 caret/caret.html delete mode 100644 caret/train_u6lujuX_CVtuZ9i.csv delete mode 100644 manipulate/manipulate.Rmd delete mode 100644 manipulate/manipulate.html diff --git a/GraphicalTools/Venn.Rmd b/GraphicalTools/Venn.Rmd deleted file mode 100644 index 6061ddd..0000000 --- a/GraphicalTools/Venn.Rmd +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: "Venn Diagrams" -author: "João Neto" -date: October 2014 -output: - html_document: - toc: true - toc_depth: 3 - fig_width: 6 - fig_height: 6 -cache: yes ---- - -Ref: [http://www.rpubs.com/kaz_yos/venn](http://www.rpubs.com/kaz_yos/venn) - -```{r, message=FALSE} -library(VennDiagram) -``` - -```{r} -grid.newpage() # make new page for plot, venn diagrams add to current plot -venn.plot <- draw.single.venn(area = 5, # size of set - category = "\n\nClass XYZ", - cat.cex = 3, - cat.pos = 0, - cat.dist = -0.20, - cat.col = "white", - lwd = 5, # width of the circle's circumference - lty = "blank", # type of circle's circumference - cex = 2, # size of the area label - label.col = "orange", - fill = "red", - alpha = 0.15 # transparecy - ) -``` - -```{r, eval=FALSE} -# Writing to file -png(filename = "Single_Venn_diagram.png"); -grid.draw(venn.plot); -dev.off(); -``` - - -```{r} -grid.newpage() -venn.plot <- draw.pairwise.venn(area1 = 100, - area2 = 70, - cross.area = 30, - category = c("First", "Second")) -grid.newpage() -# switch off scaling -venn.plot <- draw.pairwise.venn(area1 = 100, - area2 = 70, - cross.area = 30, - category = c("First", "Second"), - scaled = FALSE) -``` - -```{r} -grid.newpage() -## A more complicated diagram Demonstrating external area labels -venn.plot <- draw.pairwise.venn(area1 = 100, - area2 = 70, - cross.area = 68, - category = c("First", "Second"), - fill = c("blue", "red"), - lty = "blank", - cex = 2, - cat.cex = 2, - cat.pos = c(285, 105), - cat.dist = 0.09, - cat.just = list(c(-1, -1), c(1, 1)), - ext.pos = 30, - ext.dist = -0.05, - ext.length = 0.85, - ext.line.lwd = 2, - ext.line.lty = "dashed" - ) -``` - -```{r} -grid.newpage() - -## Demonstrating an Euler diagram -venn.plot <- draw.pairwise.venn(area1 = 100, - area2 = 70, - cross.area = 0, - category = c("First", "Second"), - cat.pos = c(0, 180), - euler.d = TRUE, - sep.dist = 0.03, - rotation.degree = 45 - ) -``` - -```{r} -grid.newpage() -venn.plot <- draw.triple.venn(area1 = 4, - area2 = 3, - area3 = 4, - n12 = 2, - n23 = 2, - n13 = 2, - n123 = 1, - category = c('A', 'B', 'C'), - fill = c('red', 'blue', 'green'), - cat.col = c('red', 'blue', 'green'), - cex = c(1/2,2/2,3/2,4/2,5/2,6/2,7/2), - cat.cex = c(1,2,3), - euler = TRUE, - scaled = FALSE - ) -``` - -```{r} -grid.newpage() -venn.plot <- draw.quintuple.venn( - area1 = 301, - area2 = 321, - area3 = 311, - area4 = 321, - area5 = 301, - n12 = 188, - n13 = 191, - n14 = 184, - n15 = 177, - n23 = 194, - n24 = 197, - n25 = 190, - n34 = 190, - n35 = 173, - n45 = 186, - n123 = 112, - n124 = 108, - n125 = 108, - n134 = 111, - n135 = 104, - n145 = 104, - n234 = 111, - n235 = 107, - n245 = 110, - n345 = 100, - n1234 = 61, - n1235 = 60, - n1245 = 59, - n1345 = 58, - n2345 = 57, - n12345 = 31, - category = c("A", "B", "C", "D", "E"), - fill = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"), - cat.col = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"), - cat.cex = 2, - margin = 0.05, - cex = c(1.5, 1.5, 1.5, 1.5, 1.5, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8, - 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 1, 1, 1, 1, 1.5), - ind = TRUE - ) -``` - -There is also another package: [venneuler](http://cran.r-project.org/web/packages/venneuler/index.html). \ No newline at end of file diff --git a/GraphicalTools/Venn.html b/GraphicalTools/Venn.html deleted file mode 100644 index f1ddf9e..0000000 --- a/GraphicalTools/Venn.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - -Venn Diagrams - - - - - - - - - - - - - - - - - - - - -
- - - - - -

Ref: http://www.rpubs.com/kaz_yos/venn

-
library(VennDiagram)
-
## Warning: package 'VennDiagram' was built under R version 3.1.1
-
grid.newpage() # make new page for plot, venn diagrams add to current plot
-venn.plot <- draw.single.venn(area      = 5,           # size of set
-                              category  = "\n\nClass XYZ",
-                              cat.cex   = 3,
-                              cat.pos   = 0,
-                              cat.dist  = -0.20,
-                              cat.col   = "white",
-                              lwd       = 5,           # width of the circle's circumference 
-                              lty       = "blank",     # type of circle's circumference
-                              cex       = 2,           # size of the area label
-                              label.col = "orange",
-                              fill      = "red",
-                              alpha     = 0.15         # transparecy
-                             )
-

plot of chunk unnamed-chunk-2

-
# Writing to file
-png(filename = "Single_Venn_diagram.png");
-grid.draw(venn.plot);
-dev.off();
-
grid.newpage()
-venn.plot <- draw.pairwise.venn(area1      = 100,
-                                area2      = 70,
-                                cross.area = 30,
-                                category   = c("First", "Second"))
-

plot of chunk unnamed-chunk-4

-
grid.newpage()
-# switch off scaling
-venn.plot <- draw.pairwise.venn(area1      = 100,
-                                area2      = 70,
-                                cross.area = 30,
-                                category   = c("First", "Second"),
-                                scaled     = FALSE)
-

plot of chunk unnamed-chunk-4

-
grid.newpage()
-## A more complicated diagram Demonstrating external area labels
-venn.plot <- draw.pairwise.venn(area1           = 100,
-                                area2           = 70,
-                                cross.area      = 68,
-                                category        = c("First", "Second"),
-                                fill            = c("blue", "red"),
-                                lty             = "blank",
-                                cex             = 2,
-                                cat.cex         = 2,
-                                cat.pos         = c(285, 105),
-                                cat.dist        = 0.09,
-                                cat.just        = list(c(-1, -1), c(1, 1)),
-                                ext.pos         = 30,
-                                ext.dist        = -0.05,
-                                ext.length      = 0.85,
-                                ext.line.lwd    = 2,
-                                ext.line.lty    = "dashed"
-                               )
-

plot of chunk unnamed-chunk-5

-
grid.newpage()
-
-## Demonstrating an Euler diagram
-venn.plot <- draw.pairwise.venn(area1           = 100,
-                                area2           = 70,
-                                cross.area      = 0,
-                                category        = c("First", "Second"),
-                                cat.pos         = c(0, 180),
-                                euler.d         = TRUE,
-                                sep.dist        = 0.03,
-                                rotation.degree = 45
-                               )
-

plot of chunk unnamed-chunk-6

-
grid.newpage()
-venn.plot <- draw.triple.venn(area1           = 4,
-                              area2           = 3,
-                              area3           = 4,
-                              n12             = 2,
-                              n23             = 2,
-                              n13             = 2,
-                              n123            = 1,
-                              category        = c('A', 'B', 'C'),
-                              fill            = c('red', 'blue', 'green'),
-                              cat.col         = c('red', 'blue', 'green'),
-                              cex             = c(1/2,2/2,3/2,4/2,5/2,6/2,7/2),
-                              cat.cex         = c(1,2,3),
-                              euler           = TRUE,
-                              scaled          = FALSE
-                             )
-

plot of chunk unnamed-chunk-7

-
grid.newpage()
-venn.plot <- draw.quintuple.venn(
-  area1 = 301,
-    area2 = 321,
-    area3 = 311,
-    area4 = 321,
-    area5 = 301,
-    n12 = 188,
-    n13 = 191,
-    n14 = 184,
-    n15 = 177,
-    n23 = 194,
-    n24 = 197,
-    n25 = 190,
-    n34 = 190,
-    n35 = 173,
-    n45 = 186,
-    n123 = 112,
-    n124 = 108,
-    n125 = 108,
-    n134 = 111,
-    n135 = 104,
-    n145 = 104,
-    n234 = 111,
-    n235 = 107,
-    n245 = 110,
-    n345 = 100,
-    n1234 = 61,
-    n1235 = 60,
-    n1245 = 59,
-    n1345 = 58,
-    n2345 = 57,
-    n12345 = 31,
-    category = c("A", "B", "C", "D", "E"),
-    fill = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),
-    cat.col = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),
-    cat.cex = 2,
-    margin = 0.05,
-    cex = c(1.5, 1.5, 1.5, 1.5, 1.5, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8, 
-    1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 1, 1, 1, 1, 1.5),
-    ind = TRUE
-    )
-

plot of chunk unnamed-chunk-8

-

There is also another package: venneuler.

- - -
- - - - - - - - diff --git a/GraphicalTools/ggvis.Rmd b/GraphicalTools/ggvis.Rmd deleted file mode 100644 index 8b9e450..0000000 --- a/GraphicalTools/ggvis.Rmd +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: "ggvis" -author: "João Neto" -date: October 2014 -output: - html_document: - toc: true - toc_depth: 3 - fig_width: 6 - fig_height: 6 -cache: yes ---- - -Refs: - -+ [http://cran.r-project.org/web/packages/ggvis/vignettes/overview.html](http://cran.r-project.org/web/packages/ggvis/vignettes/overview.html) - - -> package ggvis is used to turn a dataset into a visualisation, setting up default mappings between variables in the dataset and visual properties. It uses a syntax similar in spirit to ggplot2 and dplyr. - -> The goal is to combine the best of R (e.g. every modelling function you can imagine) and the best of the web (everyone has a web browser). Data manipulation and transformation are done in R, and the graphics are rendered in a web browser, using Vega [ref.(http://cran.r-project.org/web/packages/ggvis/vignettes/overview.html) - -```{r, warning=FALSE, message=FALSE} -library(ggvis) -library(dplyr) -``` - -Several examples: - -```{r} -head(mtcars) -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points() -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points(size := 25, shape := "diamond", stroke := "red", fill := NA) -mtcars %>% - ggvis(~mpg, ~disp, size = ~vs) %>% - layer_points() -mtcars %>% - ggvis(~mpg, ~disp, size = ~vs, opacity := 0.4) %>% - layer_points() -``` - -### Axis - -```{r} -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points() %>% - add_axis("x", title = "Weight (lb/1000)", title_offset = 50, orient = "top") %>% - add_axis("y", title = "Miles/(US) gallon", subdivide = 2, values = seq(10,34,by=2)) - -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points() %>% - add_axis("x", title = "") %>% - add_axis("x", title = "Weight (lb/1000)", offset = 60, grid = FALSE) %>% - hide_axis("y") - -# For axes, you can set the properties of the ticks (or majorTicks and minorTicks separately), the labels and axis. -mtcars %>% ggvis(~wt, ~mpg) %>% - layer_points() %>% - add_axis("x", properties = axis_props( - axis = list(stroke = "red", strokeWidth = 3), - grid = list(stroke = "blue"), - ticks = list(stroke = "blue", strokeWidth = 2), - labels = list(angle = 45, align = "left", fontSize = 10) - )) - -mtcars %>% ggvis(y = ~mpg) %>% - layer_points(prop("x", ~disp, scale = "xdisp")) %>% - layer_points(prop("x", ~wt, scale = "xwt"), fill := "blue") %>% - add_axis("x", "xdisp", orient = "bottom") %>% - add_axis("x", "xwt", orient = "top", - properties = axis_props(labels = list(fill = "blue"))) -``` - -### Legends - -Unlike ggplot2, by default, ggvis will not combine scales based on the same underlying variables into a single legend. Instead you must do this yourself by supplying the name of multiple scales to one legend: - -```{r} -mtcars %>% - ggvis(~wt, ~mpg, size = ~cyl) %>% - layer_points() %>% - add_legend(c("size")) -mtcars %>% - ggvis(~wt, ~mpg, size = ~cyl, fill=~cyl) %>% - layer_points() %>% - add_legend(c("size","fill")) -``` - -### Regression Lines - -```{r} -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points() %>% - layer_smooths(span=0.5) # add a smooth loess curve using span% of the neighbors -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points() %>% - layer_model_predictions(model = "lm", se = TRUE, stroke := "red") # add a regression line with 95% CI -# layer_smooths() is just compute_smooth() + layer_paths() -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points() %>% - compute_smooth(mpg ~ wt) %>% - layer_paths(~pred_, ~resp_, strokeWidth := 1, stroke := "red") -mtcars %>% ggvis(~wt, ~mpg) %>% - layer_points(size := 5) %>% - layer_smooths(span = 1, stroke := "orange") %>% - layer_smooths(span = 0.3, stroke := "red") -``` - -### Interactive elements - -Behind the scenes, interactive plots are built with shiny, and you can currently only have one running at a time in a given R session. To finish with a plot, press the stop button in Rstudio, or close the browser window and then press Escape or Ctrl + C in R. - -```{r} -mtcars %>% - ggvis(~wt, ~mpg, - size := input_slider(10, 100, label = "Point size"), - opacity := input_slider(0, 1, label = "Opacity"), - stroke := input_select(c("GOLD" = "gold", "BLACK" = "black"), label="Select color"), - strokeWidth := input_numeric(label = "Stroke size", value = 5) - ) %>% - layer_points() -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points() %>% - layer_smooths(se = TRUE, span = input_slider(0.2, 1), stroke := "blue", strokeWidth := 5) -mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() %>% - layer_model_predictions(model = "lm", - domain = input_slider(0, 10, value = c(1, 4))) # domain determines the interval of the regression -mtcars %>% ggvis(~wt, ~mpg) %>% - layer_points() %>% - add_tooltip(function(df) df$wt*100) -``` - -### Scatter plots with grouping - -```{r} -mtcars %>% - ggvis(~wt, ~mpg) %>% - layer_points(fill = ~factor(cyl)) -mtcars %>% - ggvis(~wt, ~mpg, fill = ~factor(cyl)) %>% - layer_points() %>% - group_by(cyl) %>% - layer_smooths(span = input_slider(0.66, 1, value=1)) -``` - -### Bar graphs - -```{r} -head(pressure) -pressure %>% - ggvis(~temperature, ~pressure) %>% - layer_bars(width = 12) -``` - -### Line graphs - -```{r} -pressure %>% - ggvis(~temperature, ~pressure) %>% - layer_lines() -pressure %>% - ggvis(~temperature, ~pressure) %>% - layer_points(shape := "square", stroke := "darkgreen", fill := "gold") %>% - layer_lines(stroke := "blue", strokeWidth := 1) -``` - -### Histograms - -```{r} -head(faithful) -faithful %>% - ggvis(~eruptions) %>% - layer_histograms() -faithful %>% - ggvis(~eruptions) %>% - layer_histograms(width=0.5, center=0) -mtcars %>% - ggvis(~wt) %>% - layer_histograms(width = input_slider(0, 2, step = 0.10, label = "width"), - center = input_slider(0, 2, step = 0.05, label = "center")) -cocaine %>% ggvis(~month, fill := "#fff8dc") %>% - layer_histograms(width = 1, center = 0) %>% - add_axis("x", title = "month") %>% - add_axis("y", title = "count") -# with grouping -mtcars %>% - ggvis(~mpg, fill = ~factor(cyl)) %>% - group_by(cyl) %>% - layer_histograms(width = 2, stack=TRUE) -``` - -### Box plots - -```{r} -mtcars %>% - ggvis(~factor(cyl), ~mpg) %>% - layer_boxplots() -``` - -### More Layers - -```{r} -mtcars %>% - arrange(wt) %>% - ggvis(~wt, ~mpg) %>% - layer_paths() # arrange+layer_paths is the same as layer_lines -t <- seq(0, 2 * pi, length = 100) -data.frame(x = sin(t), y = cos(t)) %>% - ggvis(~x, ~y) %>% - layer_paths(fill := "red") # with fill makes a polygon -mtcars %>% - arrange(wt) %>% - ggvis(~wt, ~mpg) %>% - layer_ribbons() -data.frame(x = 1:10, y = (1:10) ^ 2) %>% - ggvis(~x, ~y, y2 := 0) %>% - layer_ribbons() -set.seed(1014) -data.frame(x1 = runif(5), x2 = runif(5), y1 = runif(5), y2 = runif(5)) %>% - ggvis(~x1, ~y1, x2 = ~x2, y2 = ~y2, fillOpacity := 0.1) %>% - layer_rects() -data.frame(x = 3:1, y = c(1, 3, 2), label = c("a", "b", "c"), type=c("x","x","y")) %>% - ggvis(~x, ~y, text := ~label) %>% - layer_text(fontSize := 15, fontWeight := "bold", angle := 45) %>% - layer_text(text := ~type, dx := 10, dy := -10, stroke := "blue") -``` - diff --git a/GraphicalTools/ggvis.html b/GraphicalTools/ggvis.html deleted file mode 100644 index 65a4d4d..0000000 --- a/GraphicalTools/ggvis.html +++ /dev/null @@ -1,6754 +0,0 @@ - - - - - - - - - - - - - - -ggvis - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -

Refs:

- -
-

package ggvis is used to turn a dataset into a visualisation, setting up default mappings between variables in the dataset and visual properties. It uses a syntax similar in spirit to ggplot2 and dplyr.

-
-
-

The goal is to combine the best of R (e.g. every modelling function you can imagine) and the best of the web (everyone has a web browser). Data manipulation and transformation are done in R, and the graphics are rendered in a web browser, using Vega [ref.(http://cran.r-project.org/web/packages/ggvis/vignettes/overview.html)

-
-
library(ggvis)
-library(dplyr)
-

Several examples:

-
head(mtcars)
-
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
-## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
-## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
-## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
-## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
-## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
-## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
-
mtcars %>% 
-  ggvis(~wt, ~mpg) %>% 
-  layer_points()
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~wt, ~mpg) %>% 
-  layer_points(size := 25, shape := "diamond", stroke := "red", fill := NA)
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~mpg, ~disp, size = ~vs) %>% 
-  layer_points()
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~mpg, ~disp, size = ~vs, opacity := 0.4) %>% 
-  layer_points()
-

-
-
- -
-
-

-
-

Axis

-
mtcars %>% 
-  ggvis(~wt, ~mpg) %>% 
-  layer_points() %>%
-  add_axis("x", title = "Weight (lb/1000)", title_offset = 50, orient = "top") %>%
-  add_axis("y", title = "Miles/(US) gallon", subdivide = 2, values = seq(10,34,by=2)) 
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~wt, ~mpg) %>% 
-  layer_points() %>%
-  add_axis("x", title = "") %>%
-  add_axis("x", title = "Weight (lb/1000)", offset = 60, grid = FALSE) %>%
-  hide_axis("y")
-

-
-
- -
-
-

-
# For axes, you can set the properties of the ticks (or majorTicks and minorTicks separately), the labels and axis.
-mtcars %>% ggvis(~wt, ~mpg) %>%
-  layer_points() %>%
-  add_axis("x", properties = axis_props(
-    axis = list(stroke = "red", strokeWidth = 3),
-    grid = list(stroke = "blue"),
-    ticks = list(stroke = "blue", strokeWidth = 2),
-    labels = list(angle = 45, align = "left", fontSize = 10)
-  ))
-

-
-
- -
-
-

-
mtcars %>% ggvis(y = ~mpg) %>%
-  layer_points(prop("x", ~disp, scale = "xdisp")) %>%
-  layer_points(prop("x", ~wt, scale = "xwt"), fill := "blue") %>%
-  add_axis("x", "xdisp", orient = "bottom") %>%
-  add_axis("x", "xwt", orient = "top",
-    properties = axis_props(labels = list(fill = "blue")))
-

-
-
- -
-
-

-
-
-

Legends

-

Unlike ggplot2, by default, ggvis will not combine scales based on the same underlying variables into a single legend. Instead you must do this yourself by supplying the name of multiple scales to one legend:

-
mtcars %>% 
-  ggvis(~wt, ~mpg, size = ~cyl) %>% 
-  layer_points() %>%
-  add_legend(c("size"))
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~wt, ~mpg, size = ~cyl, fill=~cyl) %>% 
-  layer_points() %>%
-  add_legend(c("size","fill"))
-

-
-
- -
-
-

-
-
-

Regression Lines

-
mtcars %>% 
-  ggvis(~wt, ~mpg) %>%
-  layer_points() %>%
-  layer_smooths(span=0.5)  # add a smooth loess curve using span% of the neighbors
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~wt, ~mpg) %>%
-  layer_points() %>%
-  layer_model_predictions(model = "lm", se = TRUE, stroke := "red") # add a regression line with 95% CI
-
## Guessing formula = mpg ~ wt
-

-
-
- -
-
-

-
# layer_smooths() is just compute_smooth() + layer_paths()
-mtcars %>%
-  ggvis(~wt, ~mpg) %>%
-  layer_points() %>%
-  compute_smooth(mpg ~ wt) %>%
-  layer_paths(~pred_, ~resp_, strokeWidth := 1, stroke := "red")
-

-
-
- -
-
-

-
mtcars %>% ggvis(~wt, ~mpg) %>%
-  layer_points(size := 5) %>%
-  layer_smooths(span = 1, stroke := "orange") %>%
-  layer_smooths(span = 0.3, stroke := "red")
-

-
-
- -
-
-

-
-
-

Interactive elements

-

Behind the scenes, interactive plots are built with shiny, and you can currently only have one running at a time in a given R session. To finish with a plot, press the stop button in Rstudio, or close the browser window and then press Escape or Ctrl + C in R.

-
mtcars %>% 
-  ggvis(~wt, ~mpg, 
-    size := input_slider(10, 100, label = "Point size"),
-    opacity := input_slider(0, 1, label = "Opacity"),
-    stroke := input_select(c("GOLD" = "gold", "BLACK" = "black"), label="Select color"),
-    strokeWidth := input_numeric(label = "Stroke size", value = 5)
-  ) %>% 
-  layer_points()
-
## Warning: Can't output dynamic/interactive ggvis plots in a knitr document.
-## Generating a static (non-dynamic, non-interactive) version of the plot.
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~wt, ~mpg) %>% 
-  layer_points() %>%
-  layer_smooths(se = TRUE, span = input_slider(0.2, 1), stroke := "blue", strokeWidth := 5)
-
## Warning: Can't output dynamic/interactive ggvis plots in a knitr document.
-## Generating a static (non-dynamic, non-interactive) version of the plot.
-

-
-
- -
-
-

-
mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() %>%
-  layer_model_predictions(model = "lm",
-    domain = input_slider(0, 10, value = c(1, 4)))  # domain determines the interval of the regression
-
## Guessing formula = mpg ~ wt
-
## Warning: Can't output dynamic/interactive ggvis plots in a knitr document.
-## Generating a static (non-dynamic, non-interactive) version of the plot.
-

-
-
- -
-
-

-
mtcars %>% ggvis(~wt, ~mpg) %>% 
-  layer_points() %>% 
-  add_tooltip(function(df) df$wt*100)
-
## Warning: Can't output dynamic/interactive ggvis plots in a knitr document.
-## Generating a static (non-dynamic, non-interactive) version of the plot.
-

-
-
- -
-
-

-
-
-

Scatter plots with grouping

-
mtcars %>% 
-  ggvis(~wt, ~mpg) %>% 
-  layer_points(fill = ~factor(cyl))
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~wt, ~mpg, fill = ~factor(cyl)) %>% 
-  layer_points() %>% 
-  group_by(cyl) %>% 
-  layer_smooths(span = input_slider(0.66, 1, value=1))
-
## Warning: Can't output dynamic/interactive ggvis plots in a knitr document.
-## Generating a static (non-dynamic, non-interactive) version of the plot.
-

-
-
- -
-
-

-
-
-

Bar graphs

-
head(pressure)
-
##   temperature pressure
-## 1           0   0.0002
-## 2          20   0.0012
-## 3          40   0.0060
-## 4          60   0.0300
-## 5          80   0.0900
-## 6         100   0.2700
-
pressure %>% 
-  ggvis(~temperature, ~pressure) %>%
-  layer_bars(width = 12)
-

-
-
- -
-
-

-
-
-

Line graphs

-
pressure %>% 
-  ggvis(~temperature, ~pressure) %>% 
-  layer_lines()
-

-
-
- -
-
-

-
pressure %>% 
-  ggvis(~temperature, ~pressure) %>%
-  layer_points(shape := "square", stroke := "darkgreen", fill := "gold") %>% 
-  layer_lines(stroke := "blue", strokeWidth := 1)
-

-
-
- -
-
-

-
-
-

Histograms

-
head(faithful)
-
##   eruptions waiting
-## 1     3.600      79
-## 2     1.800      54
-## 3     3.333      74
-## 4     2.283      62
-## 5     4.533      85
-## 6     2.883      55
-
faithful %>% 
-  ggvis(~eruptions) %>% 
-  layer_histograms()
-
## Guessing width = 0.1 # range / 35
-

-
-
- -
-
-

-
faithful %>% 
-  ggvis(~eruptions) %>% 
-  layer_histograms(width=0.5, center=0)
-

-
-
- -
-
-

-
mtcars %>% 
-  ggvis(~wt) %>% 
-  layer_histograms(width =  input_slider(0, 2, step = 0.10, label = "width"),
-                   center = input_slider(0, 2, step = 0.05, label = "center"))
-
## Warning: Can't output dynamic/interactive ggvis plots in a knitr document.
-## Generating a static (non-dynamic, non-interactive) version of the plot.
-

-
-
- -
-
-

-
cocaine %>% ggvis(~month, fill := "#fff8dc") %>%
-  layer_histograms(width = 1, center = 0) %>%
-  add_axis("x", title = "month") %>%
-  add_axis("y", title = "count")
-

-
-
- -
-
-

-
# with grouping
-mtcars %>% 
-  ggvis(~mpg, fill = ~factor(cyl)) %>% 
-  group_by(cyl) %>%
-  layer_histograms(width = 2, stack=TRUE)
-
## Warning: Unequal factor levels: coercing to character
-

-
-
- -
-
-

-
-
-

Box plots

-
mtcars %>% 
-  ggvis(~factor(cyl), ~mpg) %>% 
-  layer_boxplots()
-
## Warning: Unequal factor levels: coercing to character
-

-
-
- -
-
-

-
-
-

More Layers

-
mtcars %>% 
-  arrange(wt) %>% 
-  ggvis(~wt, ~mpg) %>%   
-  layer_paths() # arrange+layer_paths is the same as layer_lines
-

-
-
- -
-
-

-
t <- seq(0, 2 * pi, length = 100)
-data.frame(x = sin(t), y = cos(t)) %>% 
-  ggvis(~x, ~y) %>% 
-  layer_paths(fill := "red") # with fill makes a polygon
-

-
-
- -
-
-

-
mtcars %>% 
-  arrange(wt) %>% 
-  ggvis(~wt, ~mpg) %>%   
-  layer_ribbons()
-

-
-
- -
-
-

-
data.frame(x = 1:10, y = (1:10) ^ 2) %>%
-  ggvis(~x, ~y, y2 := 0) %>% 
-  layer_ribbons()
-

-
-
- -
-
-

-
set.seed(1014)
-data.frame(x1 = runif(5), x2 = runif(5), y1 = runif(5), y2 = runif(5)) %>% 
-  ggvis(~x1, ~y1, x2 = ~x2, y2 = ~y2, fillOpacity := 0.1) %>% 
-  layer_rects()
-

-
-
- -
-
-

-
data.frame(x = 3:1, y = c(1, 3, 2), label = c("a", "b", "c"), type=c("x","x","y")) %>% 
-  ggvis(~x, ~y, text := ~label) %>% 
-  layer_text(fontSize := 15, fontWeight := "bold", angle := 45) %>%
-  layer_text(text := ~type, dx := 10, dy := -10, stroke := "blue")
-

-
-
- -
-
-

-
- - -
- - - - - - - - diff --git a/GraphicalTools/googleVis.Rmd b/GraphicalTools/googleVis.Rmd deleted file mode 100644 index 314108e..0000000 --- a/GraphicalTools/googleVis.Rmd +++ /dev/null @@ -1,229 +0,0 @@ ---- -title: "googleVis egs" -author: "João Neto" -date: "Friday, September 05, 2014" -output: html_document ---- - -Refs: - -+ [http://lamages.blogspot.pt/2014/09/zoom-zoom-googlevis.html](http://lamages.blogspot.pt/2014/09/zoom-zoom-googlevis.html) - -+ [http://www.r-bloggers.com/google-charts-in-r-markdown/](http://www.r-bloggers.com/google-charts-in-r-markdown/) - -+ [GoogleVis package](http://cran.r-project.org/web/packages/googleVis/index.html) - -+ [GoogleVis demos](http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis_examples.html) - -+ [Google Chart Gallery](https://developers.google.com/chart/interactive/docs/gallery) - -```{r, message=FALSE, warning=FALSE} -library(googleVis) -``` - - -```{r, results='asis'} -set.seed(2020) -x <- seq(0,100,by=0.5) -y <- (50-x)^2+rnorm(length(x),sd=100) - -curvy <- data.frame(x,y) - -gvScat <- gvisScatterChart(curvy, - options=list( - explorer="{actions: ['dragToZoom', 'rightClickToReset'], maxZoomIn:0.05}", - gvis.editor="Edit me!", - chartArea="{width:'85%',height:'80%'}", - hAxis="{title: 'Click&drag for zoom region, right-click to reset', titleTextStyle: {color: '#000000'}}", - vAxis="{title: 'Response y', titleTextStyle: {color: '#000000'}}", - backgroundColor="#EEEEEE", - title="Curvilinear Relationship", - titleTextStyle="{color:'red', fontName:'Courier', fontSize:12}", - width=550, height=500, - legend="none"), - chartid="ZoomZoom") - -print(gvScat,'chart') -``` - -## More egs - - -```{r, results='asis'} -df=data.frame(country=c("US", "GB", "BR"), - val1=c(10,13,14), - val2=c(23,12,32)) - -gvLine <- gvisLineChart(df) - -print(gvLine,'chart') - -gvIntensity <- gvisIntensityMap(df) - -print(gvIntensity,'chart') -``` - -```{r} -head(Exports) -``` - -```{r, results='asis'} -Geo=gvisGeoChart(Exports, locationvar="Country", - colorvar="Profit", - options=list(projection="kavrayskiy-vii")) -print(Geo,'chart') -``` - -Merge charts: - -```{r, results='asis'} -G <- gvisGeoChart(Exports, "Country", "Profit", - options=list(width=300, height=300)) -T <- gvisTable(Exports, - options=list(width=220, height=300)) - -GT <- gvisMerge(G,T, horizontal=TRUE) -print(GT,'chart') -``` - - -```{r} -head(Stock) -``` - -```{r, results='asis'} -gvAnno <- gvisAnnotationChart(Stock, - datevar="Date", - numvar="Value", - idvar="Device", - titlevar="Title", - annotationvar="Annotation", - options=list( - width=600, height=350, - fill=10, displayExactValues=TRUE, - colors="['#0000ff','#00ff00']") -) -plot(gvAnno, 'chart') - -AnnoTimeLine <- gvisAnnotatedTimeLine(Stock, - datevar="Date", - numvar="Value", - idvar="Device", - titlevar="Title", - annotationvar="Annotation", - options=list(displayAnnotations=TRUE, - width="600px", height="350px")) -plot(AnnoTimeLine, 'chart') - -datSK <- data.frame(From=c(rep("A",3), rep("B", 3)), - To=c(rep(c("X", "Y", "Z"),2)), - Weight=c(5,7,6,2,9,4)) - -gvSankey <- gvisSankey(datSK, from="From", to="To", weight="Weight", - options=list( - sankey="{link: { color: { fill: '#d799ae' } }, - node: { color: { fill: '#a61d4c' }, - label: { color: '#871b47' } }}")) -plot(gvSankey, 'chart') -``` - -In this org chart, double-click to expand/collapse: - - -```{r} -head(Regions) -``` - - -```{r, results='asis'} -gvOrg <- gvisOrgChart(Regions, - options=list(width=600, height=250, - size='large', allowCollapse=TRUE)) -plot(gvOrg, 'chart') -``` - - -```{r} -head(Population[,-5]) -``` - -```{r, results='asis'} -PopTable <- gvisTable(Population[,-5], - formats=list(Population="#,###", - '% of World Population'='#.#%'), - options=list(page='enable')) -plot(PopTable, 'chart') -``` - - -```{r} -head(Andrew) -``` - -```{r, results='asis'} -GeoMarker <- gvisGeoChart(Andrew, "LatLong", - sizevar='Speed_kt', - colorvar="Pressure_mb", - options=list(region="US")) -plot(GeoMarker, 'chart') -``` - -## Google Maps - -```{r, results='asis'} -AndrewMap <- gvisMap(Andrew, "LatLong" , "Tip", - options=list(showTip=TRUE, - showLine=TRUE, - enableScrollWheel=TRUE, - mapType='terrain', - useMapTypeControl=TRUE)) -plot(AndrewMap, 'chart') -``` - -## Flash charts - -These charts require Flash. - -```{r} -head(Fruits) -``` - -```{r, results='asis'} -Motion=gvisMotionChart(Fruits, - idvar="Fruit", - timevar="Year") -plot(Motion, 'chart') - -myStateSettings <-' -{"xZoomedDataMin":1199145600000,"colorOption":"2", -"duration":{"timeUnit":"Y","multiplier":1},"yLambda":1, -"yAxisOption":"4","sizeOption":"_UNISIZE", -"iconKeySettings":[],"xLambda":1,"nonSelectedAlpha":0, -"xZoomedDataMax":1262304000000,"iconType":"LINE", -"dimensions":{"iconDimensions":["dim0"]}, -"showTrails":false,"uniColorForNonSelected":false, -"xAxisOption":"_TIME","orderedByX":false,"playDuration":15000, -"xZoomedIn":false,"time":"2010","yZoomedDataMin":0, -"yZoomedIn":false,"orderedByY":false,"yZoomedDataMax":100} -' -M <- gvisMotionChart(Fruits, "Fruit", "Year", options=list(state=myStateSettings)) -plot(M, 'chart') -``` - -From [http://members.unine.ch/martin.hilpert/motion.html](http://members.unine.ch/martin.hilpert/motion.html): - -```{r} -url <- "http://members.unine.ch/martin.hilpert/mot.zip" -fn <- paste0(tempfile(), ".zip") -download.file(url, destfile = fn) -dat <- read.table(unzip(fn, files="mot/convdata.txt", - exdir=tempdir()), - header=TRUE) -library(googleVis) -plot(gvisMotionChart(dat, idvar="VERB", timevar="DECADE", - xvar="verbs", yvar="nouns", - sizevar="freq", colorvar="skewedness", - options=list(width=500, height=450), - chartid="Hilpert")) -``` - diff --git a/GraphicalTools/googleVis.html b/GraphicalTools/googleVis.html deleted file mode 100644 index 6e4dc27..0000000 --- a/GraphicalTools/googleVis.html +++ /dev/null @@ -1,5017 +0,0 @@ - - - - - - - - - - - - - - -googleVis egs - - - - - - - - - - - - - - - - - - - - -
- - - - - -

Refs:

- -
library(googleVis)
-
set.seed(2020)
-x <- seq(0,100,by=0.5)
-y <- (50-x)^2+rnorm(length(x),sd=100)
- 
-curvy <- data.frame(x,y) 
- 
-gvScat <- gvisScatterChart(curvy,
-                   options=list(
-                     explorer="{actions: ['dragToZoom', 'rightClickToReset'], maxZoomIn:0.05}",
-                     gvis.editor="Edit me!",
-                     chartArea="{width:'85%',height:'80%'}",
-                     hAxis="{title: 'Click&drag for zoom region, right-click to reset', titleTextStyle: {color: '#000000'}}",
-                     vAxis="{title: 'Response y',    titleTextStyle: {color: '#000000'}}",
-                     backgroundColor="#EEEEEE",
-                     title="Curvilinear Relationship",
-                     titleTextStyle="{color:'red', fontName:'Courier', fontSize:12}",  
-                     width=550, height=500,
-                     legend="none"),
-                     chartid="ZoomZoom")
- 
-print(gvScat,'chart')
- - - - - - - - - - - -
-
- -
-
-

More egs

-
df=data.frame(country=c("US", "GB", "BR"), 
-               val1=c(10,13,14), 
-               val2=c(23,12,32))
-
-gvLine <- gvisLineChart(df)
-
-print(gvLine,'chart')
- - - - - - - - - - - - -
-
- -
gvIntensity <- gvisIntensityMap(df)
-
-print(gvIntensity,'chart')
- - - - - - - - - - - - -
-
- - -
head(Exports)
-
##         Country Profit Online
-## 1       Germany      3   TRUE
-## 2        Brazil      4  FALSE
-## 3 United States      5   TRUE
-## 4        France      4   TRUE
-## 5       Hungary      3  FALSE
-## 6         India      2   TRUE
-
Geo=gvisGeoChart(Exports, locationvar="Country", 
-                 colorvar="Profit",
-                 options=list(projection="kavrayskiy-vii"))
-print(Geo,'chart')
- - - - - - - - - - - - -
-
- -

Merge charts:

-
G <- gvisGeoChart(Exports, "Country", "Profit", 
-                  options=list(width=300, height=300))
-T <- gvisTable(Exports, 
-               options=list(width=220, height=300))
-
-GT <- gvisMerge(G,T, horizontal=TRUE) 
-print(GT,'chart')
- - - - - - - - - - - - - - - - - - - -
- - - -
-
- -
- - - -
-
- -
- - - -
head(Stock)
-
##         Date  Device  Value          Title          Annotation
-## 1 2008-01-01 Pencils   3000           <NA>                <NA>
-## 2 2008-01-02 Pencils  14045           <NA>                <NA>
-## 3 2008-01-03 Pencils   5502           <NA>                <NA>
-## 4 2008-01-04 Pencils  75284           <NA>                <NA>
-## 5 2008-01-05 Pencils  41476 Bought pencils Bought 200k pencils
-## 6 2008-01-06 Pencils 333222           <NA>                <NA>
-
gvAnno <- gvisAnnotationChart(Stock, 
-                            datevar="Date",
-                            numvar="Value", 
-                            idvar="Device",
-                            titlevar="Title", 
-                            annotationvar="Annotation",
-                            options=list(
-                              width=600, height=350,
-                              fill=10, displayExactValues=TRUE,
-                              colors="['#0000ff','#00ff00']")
-)
-plot(gvAnno, 'chart')
- - - - - - - - - - - - -
-
- -
AnnoTimeLine  <- gvisAnnotatedTimeLine(Stock, 
-                                       datevar="Date",
-                                       numvar="Value", 
-                                       idvar="Device",
-                                       titlevar="Title", 
-                                       annotationvar="Annotation",
-                                       options=list(displayAnnotations=TRUE,
-                                                    width="600px", height="350px"))
-plot(AnnoTimeLine, 'chart')
- - - - - - - - - - - - -
-
- -
datSK <- data.frame(From=c(rep("A",3), rep("B", 3)),
-                    To=c(rep(c("X", "Y", "Z"),2)),
-                    Weight=c(5,7,6,2,9,4))
-
-gvSankey <- gvisSankey(datSK, from="From", to="To", weight="Weight",
-                     options=list(
-                       sankey="{link:  { color: { fill: '#d799ae' } },
-                                node:  { color: { fill: '#a61d4c' },
-                                label: { color: '#871b47' } }}"))
-plot(gvSankey, 'chart')
- - - - - - - - - - - - -
-
- -

In this org chart, double-click to expand/collapse:

-
head(Regions)
-
##    Region Parent Val Fac
-## 1  Global   <NA>  10   2
-## 2 America Global   2   4
-## 3  Europe Global  99  11
-## 4    Asia Global  10   8
-## 5  France Europe  71   2
-## 6  Sweden Europe  89   3
-
gvOrg <- gvisOrgChart(Regions, 
-                    options=list(width=600, height=250,
-                                 size='large', allowCollapse=TRUE))
-plot(gvOrg, 'chart')
- - - - - - - - - - - - -
-
- - - -
head(Population[,-5])
-
##   Rank       Country Population % of World Population Mode       Date
-## 1    1         China 1339940000                 19.50 TRUE 2010-10-09
-## 2    2         India 1188650000                 17.30 TRUE 2010-10-09
-## 3    3 United States  310438000                  4.52 TRUE 2010-10-09
-## 4    4     Indonesia  237556363                  3.46 TRUE 2010-10-09
-## 5    5        Brazil  193626000                  2.82 TRUE 2010-10-09
-## 6    6      Pakistan  170745000                  2.48 TRUE 2010-10-09
-
PopTable <- gvisTable(Population[,-5], 
-                      formats=list(Population="#,###",
-                                   '% of World Population'='#.#%'),
-                      options=list(page='enable'))
-plot(PopTable, 'chart')
- - - - - - - - - - - - -
-
- - - -
head(Andrew)
-
##         Date/Time UTC  Lat  Long Pressure_mb Speed_kt            Category
-## 1 1992-08-16 18:00:00 10.8 -35.5        1010       25 Tropical Depression
-## 2 1992-08-17 00:00:00 11.2 -37.4        1009       30 Tropical Depression
-## 3 1992-08-17 06:00:00 11.7 -39.6        1008       30 Tropical Depression
-## 4 1992-08-17 12:00:00 12.3 -42.0        1006       35      Tropical Storm
-## 5 1992-08-17 18:00:00 13.1 -44.2        1003       35      Tropical Storm
-## 6 1992-08-18 00:00:00 13.6 -46.2        1002       40      Tropical Storm
-##      LatLong                                              Tip
-## 1 10.8:-35.5 Tropical Depression<BR>Pressure=1010<BR>Speed=25
-## 2 11.2:-37.4 Tropical Depression<BR>Pressure=1009<BR>Speed=30
-## 3 11.7:-39.6 Tropical Depression<BR>Pressure=1008<BR>Speed=30
-## 4   12.3:-42      Tropical Storm<BR>Pressure=1006<BR>Speed=35
-## 5 13.1:-44.2      Tropical Storm<BR>Pressure=1003<BR>Speed=35
-## 6 13.6:-46.2      Tropical Storm<BR>Pressure=1002<BR>Speed=40
-
GeoMarker <- gvisGeoChart(Andrew, "LatLong", 
-                          sizevar='Speed_kt',
-                          colorvar="Pressure_mb", 
-                          options=list(region="US"))
-plot(GeoMarker, 'chart')
- - - - - - - - - - - - -
-
- -
-
-

Google Maps

-
AndrewMap <- gvisMap(Andrew, "LatLong" , "Tip", 
-                     options=list(showTip=TRUE, 
-                                  showLine=TRUE, 
-                                  enableScrollWheel=TRUE,
-                                  mapType='terrain', 
-                                  useMapTypeControl=TRUE))
-plot(AndrewMap, 'chart')
- - - - - - - - - - - - -
-
- -
-
-

Flash charts

-

These charts require Flash.

-
head(Fruits)
-
##     Fruit Year Location Sales Expenses Profit       Date
-## 1  Apples 2008     West    98       78     20 2008-12-31
-## 2  Apples 2009     West   111       79     32 2009-12-31
-## 3  Apples 2010     West    89       76     13 2010-12-31
-## 4 Oranges 2008     East    96       81     15 2008-12-31
-## 5 Bananas 2008     East    85       76      9 2008-12-31
-## 6 Oranges 2009     East    93       80     13 2009-12-31
-
Motion=gvisMotionChart(Fruits, 
-                       idvar="Fruit", 
-                       timevar="Year")
-plot(Motion, 'chart')
- - - - - - - - - - - - -
-
- -
myStateSettings <-'
-{"xZoomedDataMin":1199145600000,"colorOption":"2",
-"duration":{"timeUnit":"Y","multiplier":1},"yLambda":1,
-"yAxisOption":"4","sizeOption":"_UNISIZE",
-"iconKeySettings":[],"xLambda":1,"nonSelectedAlpha":0,
-"xZoomedDataMax":1262304000000,"iconType":"LINE",
-"dimensions":{"iconDimensions":["dim0"]},
-"showTrails":false,"uniColorForNonSelected":false,
-"xAxisOption":"_TIME","orderedByX":false,"playDuration":15000,
-"xZoomedIn":false,"time":"2010","yZoomedDataMin":0,
-"yZoomedIn":false,"orderedByY":false,"yZoomedDataMax":100}
-'
-M <- gvisMotionChart(Fruits, "Fruit", "Year", options=list(state=myStateSettings))
-plot(M, 'chart')
- - - - - - - - - - - - -
-
- - - -
- - -
- - - - - - - - diff --git a/bayes.packages/2d4d_hone_2012.csv b/bayes.packages/2d4d_hone_2012.csv deleted file mode 100644 index a306073..0000000 --- a/bayes.packages/2d4d_hone_2012.csv +++ /dev/null @@ -1,217 +0,0 @@ -"ratio_2d4d","grip_kg","sex" -0.9427257753,54.1866031551,"male" -0.9336376282,52.1641068556,"male" -0.9460053089,51.1510006478,"male" -0.9526542961,51.1530907662,"male" -0.9177890969,50.1437659814,"male" -0.9386282624,50.1604119695,"male" -0.9224874706,49.1495755344,"male" -0.9312451114,49.1671436674,"male" -0.9525121668,49.1825267093,"male" -0.9701592978,49.195291361,"male" -0.9828262248,48.7079881354,"male" -0.9420613003,48.1360062732,"male" -0.9371693993,46.1464626386,"male" -0.9749364738,46.1809689407,"male" -1.0001789428,46.1923386763,"male" -0.9312600661,45.14446831,"male" -0.933001497,45.1506597116,"male" -0.9367790038,45.1593102179,"male" -0.9400674469,45.1465334093,"male" -0.9453578274,45.1648865349,"male" -0.9713089161,45.1750806624,"male" -0.9762451207,45.1687875998,"male" -0.9832176444,45.1836945707,"male" -0.9316153071,44.1415391809,"male" -0.9767158153,44.1770621706,"male" -0.9150911322,43.1436227882,"male" -0.9184282407,43.1443926841,"male" -0.9367541075,43.157648284,"male" -0.9411659307,43.1679869792,"male" -0.92509686,42.156285159,"male" -0.9316579728,42.1610309911,"male" -0.912560288,41.1742252225,"male" -0.9164816567,41.0936149825,"male" -0.9390616754,41.1356448808,"male" -0.9569711103,41.160106744,"male" -0.9008463091,40.1134276177,"male" -0.9356757989,40.1317319072,"male" -0.9438842924,40.1379824635,"male" -0.956533497,40.1537076813,"male" -0.9630083237,40.1411690216,"male" -0.9751061396,40.1605660781,"male" -0.9828395771,40.1595841818,"male" -0.9902440421,40.1780914391,"male" -0.9202606116,39.107579012,"male" -0.9481566943,39.1349902833,"male" -0.958767577,39.139048788,"male" -1.0301705227,39.1798465787,"male" -0.8900688237,38.0883524826,"male" -0.9186832816,37.1245212687,"male" -0.954140943,37.1501687634,"male" -0.9837790733,37.1716068324,"male" -0.9359226045,36.1479194738,"male" -0.9619304862,36.1595841818,"male" -0.9757520154,36.1695816713,"male" -1.0138640801,36.2008023365,"male" -0.9476626436,35.1201663769,"male" -0.9454693214,35.118579887,"male" -0.9800784197,35.1541135054,"male" -1.0213871785,35.1734933461,"male" -0.9492369438,34.1231134295,"male" -0.9728696027,33.6403503389,"male" -0.9306904981,33.1115065971,"male" -1.0293123901,33.1762981146,"male" -0.939737445,32.6117213869,"male" -0.9523436265,32.1118803872,"male" -0.9200568682,31.0857318196,"male" -0.9337447979,31.111706613,"male" -0.9585391689,31.1201428213,"male" -1.0351665622,31.175283607,"male" -0.9149904771,30.084636876,"male" -0.9485330197,30.1137635948,"male" -0.9552889434,30.1166410965,"male" -0.9931033378,30.1460025229,"male" -0.9757324705,29.0776720876,"male" -0.9900952576,29.1110760434,"male" -1.0137416757,29.1051651836,"male" -0.9488121812,28.0685566391,"male" -1.0067778119,28.1104847626,"male" -0.976527918,26.0764391382,"male" -1.0086599161,26.1046128669,"male" -0.9299567631,25.0235190196,"male" -0.9423777476,25.0362610013,"male" -0.9650659712,25.0587780226,"male" -1.0054032545,25.0887379029,"male" -1.0591068835,25.1284443081,"male" -0.9559844533,23.0827861307,"male" -0.9882489072,23.0903993845,"male" -0.9261086223,21.0358596707,"male" -1.0267877672,21.1086836453,"male" -1.0168067171,20.0953815541,"male" -0.9809925521,19.0601058142,"male" -0.9494213482,14.0301577349,"male" -0.9605490437,30.1023626879,"male" -0.9603227984,30.1021990386,"male" -0.9594174082,30.0292114145,"male" -0.9603796666,40.1564897208,"male" -0.9594746855,40.1558351232,"male" -1.0107334308,38.5259273645,"female" -0.9190087146,37.0414586499,"female" -0.9493569959,37.0479704797,"female" -0.9509375,35.0258302583,"female" -0.993275463,35.0258302583,"female" -0.9949074074,34.0221402214,"female" -0.9299768519,31.0332103321,"female" -0.9735294118,31.0332103321,"female" -0.9356995885,30.036900369,"female" -0.9393518519,30.036900369,"female" -0.9758101852,30.036900369,"female" -0.9859953704,30.036900369,"female" -0.9899305556,30.036900369,"female" -0.9258101852,29.499794998,"female" -1.0225389864,29.4989318314,"female" -0.9067460317,28.9808469513,"female" -0.9447916667,28.9831898319,"female" -0.977662037,28.9831898319,"female" -1.0127199074,28.9741697417,"female" -0.9435185185,27.9827798278,"female" -0.9998842593,27.9704797048,"female" -0.9552266082,26.9819382404,"female" -0.9910365226,26.9823698237,"female" -0.9404651675,26.4645932174,"female" -0.9878472222,26.4739647396,"female" -0.9874099794,25.9983599836,"female" -0.946144943,25.9608288391,"female" -0.9928755144,25.9778597786,"female" -0.9655092593,24.9815498155,"female" -0.9701388889,24.9815498155,"female" -0.9757897603,24.9902322553,"female" -0.9932355967,24.9774497745,"female" -1.0101851852,24.9815498155,"female" -1.0262061404,24.9815498155,"female" -0.9154113248,23.9426625035,"female" -0.9247337963,23.9704797048,"female" -0.9339395944,23.983482692,"female" -0.9437987329,23.9832977277,"female" -0.9643518519,23.9852398524,"female" -0.9998713992,23.9852398524,"female" -1.0032407407,23.9852398524,"female" -1.031457115,23.9794134783,"female" -0.9597709552,22.9889298893,"female" -0.9719420078,22.9889298893,"female" -0.9780579922,22.9889298893,"female" -0.9965765107,22.9889298893,"female" -1.0138401559,22.9889298893,"female" -0.9383442266,22.4723247232,"female" -0.9548076923,21.9784274766,"female" -0.9207892416,21.9662625198,"female" -0.9276924951,21.9712565547,"female" -0.9578493266,21.9624287152,"female" -0.9652083333,21.963099631,"female" -1.0341435185,21.9721197212,"female" -1.0418981481,21.9634880559,"female" -1.0730324074,21.9721197212,"female" -0.9215718695,20.9892813214,"female" -0.9537268519,20.9926199262,"female" -0.9720138889,20.9926199262,"female" -0.9841617934,20.9885414644,"female" -0.9547619048,19.9771569144,"female" -0.9598842593,19.9741697417,"female" -0.9644161523,19.971299713,"female" -0.9665509259,19.983227105,"female" -0.9698302469,19.9723247232,"female" -0.9870949074,19.9815498155,"female" -0.9949074074,19.9708681297,"female" -1.0102430556,19.9815498155,"female" -1.0199845679,19.963099631,"female" -1.0249634503,19.9747523791,"female" -1.0407986111,19.9815498155,"female" -0.9125578704,19.4649446494,"female" -0.9157986111,18.9852398524,"female" -0.9396990741,18.9872898729,"female" -0.9493634259,18.9852398524,"female" -0.9583333333,19.0036900369,"female" -0.9720486111,18.9852398524,"female" -1.0193287037,18.9835625629,"female" -0.942456427,17.9791621446,"female" -0.9842361111,17.9741697417,"female" -0.9898919753,17.9704797048,"female" -0.9998842593,17.9704797048,"female" -1.0032407407,17.9704797048,"female" -1.0240740741,17.9704797048,"female" -1.0599652778,17.9778597786,"female" -1.0005116959,16.9838803651,"female" -1.0099279835,16.9782697827,"female" -0.9553240741,16.9741697417,"female" -0.9959490741,16.9741697417,"female" -0.9247942387,14.9651496515,"female" -0.9547619048,14.9587067299,"female" -0.9778143275,14.9563021946,"female" -0.9812865497,14.9563021946,"female" -0.9907150206,14.9651496515,"female" -0.9998987269,14.963099631,"female" -0.9286405724,13.9718215364,"female" -0.9396990741,13.9688396884,"female" -0.975,13.9852398524,"female" -1.0318011464,13.9676682481,"female" -1.0549768519,13.9688396884,"female" -1.0349537037,12.9675665178,"female" -0.9547800926,11.9667896679,"female" -0.9296840959,11.4586498806,"female" -1.0179398148,9.963099631,"female" -1.021882716,8.9569495695,"female" -0.9467592593,22.9151291513,"female" -0.9969907407,21.8081180812,"female" -1.0002314815,24.8339483395,"female" -0.999537037,24.9077490775,"female" -0.9891203704,23.9483394834,"female" -0.987962963,23.8007380074,"female" -0.9759259259,18.9298892989,"female" -0.9752314815,18.9298892989,"female" -0.9766203704,9.926199262,"female" -0.975462963,9.852398524,"female" -0.9511574074,20.7749077491,"female" -0.9502314815,20.8487084871,"female" -0.9706018519,23.8745387454,"female" -0.9696759259,23.8745387454,"female" diff --git a/bayes.packages/index.Rmd b/bayes.packages/index.Rmd deleted file mode 100644 index de4bfe9..0000000 --- a/bayes.packages/index.Rmd +++ /dev/null @@ -1,240 +0,0 @@ ---- -title: "Bayesian Model Packages" -author: "João Neto" -date: October 2014 -output: - html_document: - toc: true - toc_depth: 3 - fig_width: 6 - fig_height: 6 -cache: yes ---- - -## Bayesian First Aid - -> Bayesian First Aid is an attempt at implementing reasonable Bayesian alternatives to the classical hypothesis tests in R. For the rationale behind Bayesian First Aid see the [original announcement](http://sumsar.net/blog/2014/01/bayesian-first-aid/). The development of Bayesian First Aid can be followed on [GitHub](https://github.com/rasmusab/bayesian_first_aid). Bayesian First Aid is a work in progress and I'm grateful for any suggestion on how to improve it! [ref](http://sumsar.net/blog/2014/01/bayesian-first-aid-binomial-test/) - -The following code and tests in this chapter are taken from the package author's webpages, namely: - -+ [Binomial Test](http://sumsar.net/blog/2014/01/bayesian-first-aid-binomial-test/): bayes.binom.test(x, n) -+ [One Sample and Paired Samples t-test](http://sumsar.net/blog/2014/02/bayesian-first-aid-one-sample-t-test/): bayes.t.test(x) -+ [Pearson Correlation Test](http://sumsar.net/blog/2014/03/bayesian-first-aid-pearson-correlation-test/): bayes.cor.test(x, y) -+ [Test of Proportions](http://sumsar.net/blog/2014/06/bayesian-first-aid-prop-test/): bayes.prop.test(x, n) (check [part2](part2.html)) -+ [Poisson test](http://sumsar.net/blog/2014/09/bayesian-first-aid-poisson-test/): bayes.poisson.test(x, T) - -```{r, warning=FALSE, message=FALSE} -# To install: -## install.packages("devtools") -# library(devtools) -# install_github("rasmusab/bayesian_first_aid") - -library(BayesianFirstAid) -``` - -### Binomial Test - -We have $n$ trials with $x$ sucesses and $n-x$ failures. We assume that the tests are iid. - -The likelihood, the distribution of the data is considered a Binomial with parameter $\theta$ ($n$ is considered fixed): - -$$p(x|n, \theta) = {n \choose x} \theta^x (1-\theta)^{(n-x)}$$ - -The prior distribution of parameter $\theta$ used in the flat prior which is described by a Beta(1,1): - -$$\theta \sim \text{Beta}(1,1)$$ - -The Bayesian estimation: - -```{r} -# x: number of successes -# n: number of trials -# comp.theta: a fixed relative frequency of success to compare with the estimated relative frequency of success -# cred.mass: the amount of probability mass that will be contained in reported credible intervals -# n.iter: The number of iterations to run the MCMC sampling (default: 15000, max: 1e6-1) - -model <- bayes.binom.test(x=9, n=11, comp.theta=0.7, cred.mass = 0.95) -model -``` - -Versus the classical binomial test: - -```{r} -binom.test(x=9, n=11, p=0.7, conf.level=0.95) -``` - -To plot and summarize: - -```{r} -summary(model) -plot(model) -``` - -The posterior predictive distribution is the distribution of unobserved observation $y$ (a prediction) conditional on the observed data $x$ - -$$p(y|x,n) = \int_{\theta} p(y|\theta) p(\theta|x,n) d\theta = E_{\theta|x,n} [ p(y|\theta) ]$$ - - -`diagnostics` plots MCMC diagnostics based on the `code` package: - -```{r} -diagnostics(model) -``` - -`model_code` print out R and JAGS code that runs the model (copy-paste friendly): - -```{r} -model.code(model) -``` - -Eg, to change the prior just replace, in the model_string, the distribution of $\theta$ for something else (liek Jeffrey's prior `dbeta(0.5,0.5)`) and run the code yourself. - -### One Sample and Paired Samples t-test - -To replace the classical t-test, this test uses the [BEST](http://www.indiana.edu/~kruschke/BEST/) methodology which assumes the data $x=(x_1,x_2,\ldots,x_n)$ are distributed as a t distribution according to the following model: - -$$x_i \sim t(\mu,\sigma,\nu$$ - -$$\mu \sim \mathcal{N}(M_{\mu}, S_{\mu})$$ - -$$\sigma \sim U(L_{\sigma}, H_{\sigma})$$ - -$$\nu \sim \text{ShiftedExp}(\frac{1}{29}, \text{shift}=1)$$ - -$\nu$ is the degrees of freedom of the t distribution (lower values mean heavier tails). The value $\frac{1}{29}$ is used to try to balance nearly normal distributions ($\nu\gt 30$) with heavy tailed distributions ($\nu\lt 30$). - -For paired samples the test takes the difference between each paired sample and model just the paired differences using the one sample procedure. - -As an eg let's load a dataset with coffee yields and compare these yields in two different time periords (1960-80 amd 1980-2001) and see if the test recognize some statistical significant change: - -```{r} -d <- read.csv("roubik_2002_coffe_yield.csv") -head(d) -new.yield_61 <- d[,3][d$world=="new"] -new.yield_61 -new.yield_81 <- d[,4][d$world=="new"] -new.yield_81 - -model <- bayes.t.test(new.yield_61, new.yield_81, paired=TRUE) -model -``` - -The $95$\% credible interval does not include zero, so the test recognizes a statistical difference between the two samples. - -```{r} -summary(model) -plot(model) -``` - -The posterior predictive box presents a histogram with a smattering of t-distributions drawn from the posterior. If there is a large discrepancy between the model fit and the data then we need to think twice before proceeding. Herein it's ok. - -```{r} -diagnostics(model) -model.code(model) -``` - -### Pearson Correlation Test - -This is a measure of the linear correlation (dependence) between two variables $X_1$ and $X_2$, giving a value $\rho$ between +1 and -1 inclusive, where 1 is total positive correlation, 0 is no correlation, and -1 is total negative correlation - -$$\rho = \frac{\text{cov}(X_1,X_2)}{\sigma_{X_1} \sigma_{X_2}$$ - -Classical statistical inference based on Pearson's correlation coefficient aims at test the null hypothesis that $\rho=0$ and finding the p\% confidence interval around $r$ (the sample correlation) that contains $\rho$. - -The Pearson's correlation coefficient is which assumes bivariate normality. - -The model that a classical Pearson's correlation test assumes is that between two paired variables $X_{i1}$ and $X_{i2}$ it follows a bivariate normal distribution, ie, $X_i1 \sim \mathcal{N}(\mu_1,\sigma_1), X_i2 \sim \mathcal{N}(\mu_2,\sigma_2)$ and for each pair $(x_i,y_i)$ there is a linear dependency which is quantified by $\rho$. Here's an eg for $\rho=0.3$: - - - -The classical model pressuposes that $X=(X_1,X_2)^T$ has a multivariate normal distribution: - -$$X \sim \mathcal{N}(\mu,\Sigma)$$ - -where $\mu=(\mu_1,\mu_2)^T$ and - -$$\Sigma = -\left() \begin{array}{cc} -\sigma_1^2 & \rho\sigma_1\sigma_2 \\ -\rho\sigma_1\sigma_2 & \sigma_2^2 \end{array} \right)$$ - -This test is implemented by R function `cor.test`. - -The following Bayesian model replaces the normal for a bivariate t distribution which is more robust to outliers (it could also be a normal, of course, the Bayesian framework is much more flexible in this sense). - -The Bayesian model becomes - -$$X \sim t(\mu,\Sigma,nu)$$ - -$$\rho \sim U(-1,1)$$ - -$$\mu_x,\mu_y \sim \mathcal{N}(M_{\mu}, \S_{\mu})$$ - -$$\sigma_{x_1}, \sigma_{x_2}\sim U(L_{\sigma}, U_{\sigma})$$ - -$$\nu \sim \text{ShiftedExp}(\frac{1}{29}, \text{shift}=1)$$ - -Let's load some data: - -```{r} -d <- read.csv("2d4d_hone_2012.csv") -head(d) -plot(d$ratio_2d4d, d$grip_kg, col=unclass(d$sex), pch=18) -legend("topright",c("female","male"), col=1:2, pch=18) -``` - -There is a visual difference between the two variables concerning gender. Let's try to find some pattern with this test - -```{r} -model.male <- bayes.cor.test( ~ ratio_2d4d + grip_kg, data=d[d$sex=="male",], n.iter = 5000) -model.male -summary(model.male) -model.female <- bayes.cor.test( ~ ratio_2d4d + grip_kg, data=d[d$sex=="female",], n.iter = 5000) -model.female - -plot(model.male) -plot(model.female) -``` - -Both estimates indicate a slight negative correlation (the males more than the females). The two ellipses show the 50% (darker blue) and 95% (lighter blue) highest density regions. The red histograms show the marginal distributions of the data with a smatter of marginal densities drawn from the posterior. Looking at this plot we see that the model fits quite well, however, we could be concerned with the right skewness of the `ratio_2d4d` marginal which is not captured by the model (the t-distribution is symmetric). - -To take a look at the posterior difference in correlation between the male and the female group, we first extract the MCMC samples from the Bayesian First Aid fit object using the `as.data.frame` function: - -```{r} -female.mcmc <- as.data.frame(model.female) - male.mcmc <- as.data.frame(model.male) - -hist(male.mcmc$rho-female.mcmc$rho, breaks=50, xlim=c(-1,1), main=bquote(paste("Density for ", rho, " male minus ", rho, " female")), yaxt="n", ylab="") -``` - -And the entire code: - -```{r} -model.code(model.female) -``` - -For instance, if you wanted to replace $\rho \sim U(-1,1)$ with a Beta, such that $\rho \sim \text{Beta}(-1,1)$ we would replace - -```{r, eval=FALSE} -rho ~ dunif(-1,1) -``` - -with - -```{r, eval=FALSE} -rho_half_width ~ dbeta(1,1) -rho ~ 2*rho_half_width - 1 # shift and strech from [0,1] to[-1,1] -``` - -and replace the inits_lit variable: - -```{r, eval=FALSE} -# from -rho=cor(x, y, method="spearman") -# to -rho_half_width=( cor(x,y,method="spearman") + 1 ) / 2 -``` - -By changing the parameter values of `dbeta` we could define several priors, placing more probability mass at that value of `rho` we know is more probable. - -Goto [part2](part2.html) \ No newline at end of file diff --git a/bayes.packages/index.html b/bayes.packages/index.html deleted file mode 100644 index cf8c052..0000000 --- a/bayes.packages/index.html +++ /dev/null @@ -1,577 +0,0 @@ - - - - - - - - - - - - - - -Bayesian Model Packages - - - - - - - - - - - - - - - - - - - - -
- - - - - - -
-

Bayesian First Aid

-
-

Bayesian First Aid is an attempt at implementing reasonable Bayesian alternatives to the classical hypothesis tests in R. For the rationale behind Bayesian First Aid see the original announcement. The development of Bayesian First Aid can be followed on GitHub. Bayesian First Aid is a work in progress and I’m grateful for any suggestion on how to improve it! ref

-
-

The following code and tests in this chapter are taken from the package author’s webpages, namely:

- -
# To install:
-## install.packages("devtools")
-# library(devtools)
-# install_github("rasmusab/bayesian_first_aid")
-
-library(BayesianFirstAid)
-
-

Binomial Test

-

We have \(n\) trials with \(x\) sucesses and \(n-x\) failures. We assume that the tests are iid.

-

The likelihood, the distribution of the data is considered a Binomial with parameter \(\theta\) (\(n\) is considered fixed):

-

\[p(x|n, \theta) = {n \choose x} \theta^x (1-\theta)^{(n-x)}\]

-

The prior distribution of parameter \(\theta\) used in the flat prior which is described by a Beta(1,1):

-

\[\theta \sim \text{Beta}(1,1)\]

-

The Bayesian estimation:

-
# x: number of successes
-# n: number of trials
-# comp.theta: a fixed relative frequency of success to compare with the estimated relative frequency of success
-# cred.mass: the amount of probability mass that will be contained in reported credible intervals
-# n.iter: The number of iterations to run the MCMC sampling (default: 15000, max: 1e6-1)
-
-model <- bayes.binom.test(x=9, n=11, comp.theta=0.7, cred.mass = 0.95)
-model
-
## 
-##  Bayesian First Aid binomial test
-## 
-## data: 9 and 11
-## number of successes = 9, number of trials = 11
-## Estimated relative frequency of success:
-##   0.78 
-## 95% credible interval:
-##   0.55 0.96 
-## The relative frequency of success is more than 0.7 by a probability of 0.742 
-## and less than 0.7 by a probability of 0.258
-

Versus the classical binomial test:

-
binom.test(x=9, n=11, p=0.7, conf.level=0.95)
-
## 
-##  Exact binomial test
-## 
-## data:  9 and 11
-## number of successes = 9, number of trials = 11, p-value = 0.523
-## alternative hypothesis: true probability of success is not equal to 0.7
-## 95 percent confidence interval:
-##  0.4822 0.9772
-## sample estimates:
-## probability of success 
-##                 0.8182
-

To plot and summarize:

-
summary(model)
-
##   Data
-## number of successes = 9, number of trials = 11
-## 
-##   Model parameters and generated quantities
-## theta: the relative frequency of success
-## x_pred: predicted number of successes in a replication
-## 
-##   Measures
-##         mean    sd HDIlo HDIup %<comp %>comp
-## theta  0.767 0.113 0.545  0.96  0.258  0.742
-## x_pred 8.434 1.847 5.000 11.00  0.000  1.000
-## 
-## 'HDIlo' and 'HDIup' are the limits of a 95% HDI credible interval.
-## '%<comp' and '%>comp' are the probabilities of the respective parameter being
-## smaller or larger than 0.7.
-## 
-##   Quantiles
-##        q2.5%  q25% median   q75% q97.5%
-## theta  0.512 0.696  0.781  0.853  0.944
-## x_pred 4.000 7.000  9.000 10.000 11.000
-
plot(model)
-

plot of chunk unnamed-chunk-4

-

The posterior predictive distribution is the distribution of unobserved observation \(y\) (a prediction) conditional on the observed data \(x\)

-

\[p(y|x,n) = \int_{\theta} p(y|\theta) p(\theta|x,n) d\theta = E_{\theta|x,n} [ p(y|\theta) ]\]

-

diagnostics plots MCMC diagnostics based on the code package:

-
diagnostics(model)
-
## 
-## Iterations = 1:5000
-## Thinning interval = 1 
-## Number of chains = 3 
-## Sample size per chain = 5000 
-## 
-##   Diagnostic measures
-##         mean    sd mcmc_se n_eff Rhat
-## theta  0.767 0.113   0.001 14883    1
-## x_pred 8.434 1.847   0.015 14749    1
-## 
-## mcmc_se: the estimated standard error of the MCMC approximation of the mean.
-## n_eff: a crude measure of effective MCMC sample size.
-## Rhat: the potential scale reduction factor (at convergence, Rhat=1).
-## 
-##   Model parameters and generated quantities
-## theta: The relative frequency of success
-## x_pred: Predicted number of successes in a replication
-

plot of chunk unnamed-chunk-5

-

model_code print out R and JAGS code that runs the model (copy-paste friendly):

-
model.code(model)
-
## ### Model code for the Bayesian First Aid alternative to the binomial test ###
-## require(rjags)
-## 
-## # Setting up the data
-## x <- 9 
-## n <- 11 
-## 
-## # The model string written in the JAGS language
-## model_string <- "model {
-##   x ~ dbinom(theta, n)
-##   theta ~ dbeta(1, 1)
-##   x_pred ~ dbinom(theta, n)
-## }"
-## 
-## # Running the model
-## model <- jags.model(textConnection(model_string), data = list(x = x, n = n), 
-##                     n.chains = 3, n.adapt=1000)
-## samples <- coda.samples(model, c("theta", "x_pred"), n.iter=5000)
-## 
-## # Inspecting the posterior
-## plot(samples)
-## summary(samples)
-

Eg, to change the prior just replace, in the model_string, the distribution of \(\theta\) for something else (liek Jeffrey’s prior dbeta(0.5,0.5)) and run the code yourself.

-
-
-

One Sample and Paired Samples t-test

-

To replace the classical t-test, this test uses the BEST methodology which assumes the data \(x=(x_1,x_2,\ldots,x_n)\) are distributed as a t distribution according to the following model:

-

\[x_i \sim t(\mu,\sigma,\nu\]

-

\[\mu \sim \mathcal{N}(M_{\mu}, S_{\mu})\]

-

\[\sigma \sim U(L_{\sigma}, H_{\sigma})\]

-

\[\nu \sim \text{ShiftedExp}(\frac{1}{29}, \text{shift}=1)\]

-

\(\nu\) is the degrees of freedom of the t distribution (lower values mean heavier tails). The value \(\frac{1}{29}\) is used to try to balance nearly normal distributions (\(\nu\gt 30\)) with heavy tailed distributions (\(\nu\lt 30\)).

-

For paired samples the test takes the difference between each paired sample and model just the paired differences using the one sample procedure.

-

As an eg let’s load a dataset with coffee yields and compare these yields in two different time periords (1960-80 amd 1980-2001) and see if the test recognize some statistical significant change:

-
d <- read.csv("roubik_2002_coffe_yield.csv")
-head(d)
-
##   world     country yield_61_to_80 yield_81_to_01
-## 1   new  Costa_Rica           9139          14620
-## 2   new     Bolivia           7686           8767
-## 3   new El_Salvador           9996           8729
-## 4   new   Guatemala           5488           8231
-## 5   new    Colombia           5920           7740
-## 6   new    Honduras           4096           7264
-
new.yield_61 <- d[,3][d$world=="new"]
-new.yield_61
-
##  [1] 9139 7686 9996 5488 5920 4096 4566 4965 5487 5227 2347 3089 1938
-
new.yield_81 <- d[,4][d$world=="new"]
-new.yield_81
-
##  [1] 14620  8767  8729  8231  7740  7264  6408  6283  5740  5116  4124
-## [12]  3240  2789
-
model <- bayes.t.test(new.yield_61, new.yield_81, paired=TRUE)
-model
-
## 
-##  Bayesian estimation supersedes the t test (BEST) - paired samples
-## 
-## data: new.yield_61 and new.yield_81, n = 13
-## 
-##   Estimates [95% credible interval]
-## mean paired difference: -1399 [-2462, -377]
-## sd of the paired differences: 1690 [915, 2727]
-## 
-## The mean difference is more than 0 by a probability of 0.006 
-## and less than 0 by a probability of 0.994
-

The \(95\)% credible interval does not include zero, so the test recognizes a statistical difference between the two samples.

-
summary(model)
-
##   Data
-## new.yield_61, n = 13
-## new.yield_81, n = 13
-## 
-##   Model parameters and generated quantities
-## mu_diff: the mean pairwise difference between new.yield_61 and new.yield_81 
-## sigma_diff: the scale of the pairwise difference, a consistent
-##   estimate of SD when nu is large.
-## nu: the degrees-of-freedom for the t distribution fitted to the pairwise difference
-## eff_size: the effect size calculated as (mu_diff - 0) / sigma_diff
-## diff_pred: predicted distribution for a new datapoint generated
-##   as the pairwise difference between new.yield_61 and new.yield_81 
-## 
-##   Measures
-##                mean      sd     HDIlo   HDIup %<comp %>comp
-## mu_diff    -1401.85  525.00 -2461.806 -376.69  0.994  0.006
-## sigma_diff  1757.19  487.99   915.427 2726.86  0.000  1.000
-## nu            29.21   27.57     1.011   84.65  0.000  1.000
-## eff_size      -0.85    0.36    -1.576   -0.18  0.994  0.006
-## diff_pred  -1420.79 2165.88 -5583.972 2803.76  0.781  0.219
-## 
-## 'HDIlo' and 'HDIup' are the limits of a 95% HDI credible interval.
-## '%<comp' and '%>comp' are the probabilities of the respective parameter being
-## smaller or larger than 0.
-## 
-##   Quantiles
-##                q2.5%      q25%    median      q75%   q97.5%
-## mu_diff    -2463.431 -1729.394 -1399.476 -1063.340 -377.569
-## sigma_diff  1002.421  1431.532  1689.791  2007.287 2868.776
-## nu             2.314     9.441    20.572    40.006  102.353
-## eff_size      -1.580    -1.079    -0.838    -0.608   -0.183
-## diff_pred  -5610.141 -2645.939 -1410.718  -183.086 2782.547
-
plot(model)
-

plot of chunk unnamed-chunk-8

-

The posterior predictive box presents a histogram with a smattering of t-distributions drawn from the posterior. If there is a large discrepancy between the model fit and the data then we need to think twice before proceeding. Herein it’s ok.

-
diagnostics(model)
-
## 
-## Iterations = 601:10600
-## Thinning interval = 1 
-## Number of chains = 3 
-## Sample size per chain = 10000 
-## 
-##   Diagnostic measures
-##                mean      sd mcmc_se n_eff  Rhat
-## mu_diff    -1401.85  525.00   4.291 15032 1.002
-## sigma_diff  1757.19  487.99   6.084  7160 1.014
-## nu            29.21   27.57   0.384  5203 1.001
-## eff_size      -0.85    0.36   0.003 14951 1.000
-## diff_pred  -1420.79 2165.88  12.971 27889 1.001
-## 
-## mcmc_se: the estimated standard error of the MCMC approximation of the mean.
-## n_eff: a crude measure of effective MCMC sample size.
-## Rhat: the potential scale reduction factor (at convergence, Rhat=1).
-## 
-##   Model parameters and generated quantities
-## mu_diff: the mean pairwise difference between new.yield_61 and new.yield_81 
-## sigma_diff: the scale of the pairwise difference, a consistent
-##   estimate of SD when nu is large.
-## nu: the degrees-of-freedom for the t distribution fitted to the pairwise difference
-## eff_size: the effect size calculated as (mu_diff - 0) / sigma_diff
-## diff_pred: predicted distribution for a new datapoint generated
-##   as the pairwise difference between new.yield_61 and new.yield_81
-

plot of chunk unnamed-chunk-9plot of chunk unnamed-chunk-9

-
model.code(model)
-
## ## Model code for Bayesian estimation supersedes the t test - paired samples ##
-## require(rjags)
-## 
-## # Setting up the data
-## x <- new.yield_61 
-## y <- new.yield_81 
-## pair_diff <- x - y
-## comp_mu <-  0 
-## 
-## # The model string written in the JAGS language
-## model_string <- "model {
-##   for(i in 1:length(pair_diff)) {
-##     pair_diff[i] ~ dt( mu_diff , tau_diff , nu )
-##   }
-##   diff_pred ~ dt( mu_diff , tau_diff , nu )
-##   eff_size <- (mu_diff - comp_mu) / sigma_diff
-##   
-##   mu_diff ~ dnorm( mean_mu , precision_mu )
-##   tau_diff <- 1/pow( sigma_diff , 2 )
-##   sigma_diff ~ dunif( sigma_low , sigma_high )
-##   # A trick to get an exponentially distributed prior on nu that starts at 1.
-##   nu <- nuMinusOne + 1 
-##   nuMinusOne ~ dexp(1/29)
-## }"
-## 
-## # Setting parameters for the priors that in practice will result
-## # in flat priors on mu and sigma.
-## mean_mu = mean(pair_diff, trim=0.2)
-## precision_mu = 1 / (mad(pair_diff)^2 * 1000000)
-## sigma_low = mad(pair_diff) / 1000 
-## sigma_high = mad(pair_diff) * 1000
-## 
-## # Initializing parameters to sensible starting values helps the convergence
-## # of the MCMC sampling. Here using robust estimates of the mean (trimmed)
-## # and standard deviation (MAD).
-## inits_list <- list(
-##   mu_diff = mean(pair_diff, trim=0.2),
-##   sigma_diff = mad(pair_diff),
-##   nuMinusOne = 4)
-## 
-## data_list <- list(
-##   pair_diff = pair_diff,
-##   comp_mu = comp_mu,
-##   mean_mu = mean_mu,
-##   precision_mu = precision_mu,
-##   sigma_low = sigma_low,
-##   sigma_high = sigma_high)
-## 
-## # The parameters to monitor.
-## params <- c("mu_diff", "sigma_diff", "nu", "eff_size", "diff_pred")
-## 
-## # Running the model
-## model <- jags.model(textConnection(model_string), data = data_list,
-##                     inits = inits_list, n.chains = 3, n.adapt=1000)
-## update(model, 500) # Burning some samples to the MCMC gods....
-## samples <- coda.samples(model, params, n.iter=10000)
-## 
-## # Inspecting the posterior
-## plot(samples)
-## summary(samples)
-
-
-

Pearson Correlation Test

-

This is a measure of the linear correlation (dependence) between two variables \(X_1\) and \(X_2\), giving a value \(\rho\) between +1 and -1 inclusive, where 1 is total positive correlation, 0 is no correlation, and -1 is total negative correlation

-

\[\rho = \frac{\text{cov}(X_1,X_2)}{\sigma_{X_1} \sigma_{X_2}\]

-

Classical statistical inference based on Pearson’s correlation coefficient aims at test the null hypothesis that \(\rho=0\) and finding the p% confidence interval around \(r\) (the sample correlation) that contains \(\rho\).

-

The Pearson’s correlation coefficient is which assumes bivariate normality.

-

The model that a classical Pearson’s correlation test assumes is that between two paired variables \(X_{i1}\) and \(X_{i2}\) it follows a bivariate normal distribution, ie, \(X_i1 \sim \mathcal{N}(\mu_1,\sigma_1), X_i2 \sim \mathcal{N}(\mu_2,\sigma_2)\) and for each pair \((x_i,y_i)\) there is a linear dependency which is quantified by \(\rho\). Here’s an eg for \(\rho=0.3\):

-

-

The classical model pressuposes that \(X=(X_1,X_2)^T\) has a multivariate normal distribution:

-

\[X \sim \mathcal{N}(\mu,\Sigma)\]

-

where \(\mu=(\mu_1,\mu_2)^T\) and

-

\[\Sigma = -\left() \begin{array}{cc} -\sigma_1^2 & \rho\sigma_1\sigma_2 \\ -\rho\sigma_1\sigma_2 & \sigma_2^2 \end{array} \right)\]

-

This test is implemented by R function cor.test.

-

The following Bayesian model replaces the normal for a bivariate t distribution which is more robust to outliers (it could also be a normal, of course, the Bayesian framework is much more flexible in this sense).

-

The Bayesian model becomes

-

\[X \sim t(\mu,\Sigma,nu)\]

-

\[\rho \sim U(-1,1)\]

-

\[\mu_x,\mu_y \sim \mathcal{N}(M_{\mu}, \S_{\mu})\]

-

\[\sigma_{x_1}, \sigma_{x_2}\sim U(L_{\sigma}, U_{\sigma})\]

-

\[\nu \sim \text{ShiftedExp}(\frac{1}{29}, \text{shift}=1)\]

-

Let’s load some data:

-
d <- read.csv("2d4d_hone_2012.csv")
-head(d)
-
##   ratio_2d4d grip_kg  sex
-## 1     0.9427   54.19 male
-## 2     0.9336   52.16 male
-## 3     0.9460   51.15 male
-## 4     0.9527   51.15 male
-## 5     0.9178   50.14 male
-## 6     0.9386   50.16 male
-
plot(d$ratio_2d4d, d$grip_kg, col=unclass(d$sex), pch=18)
-legend("topright",c("female","male"), col=1:2, pch=18)
-

plot of chunk unnamed-chunk-10

-

There is a visual difference between the two variables concerning gender. Let’s try to find some pattern with this test

-
model.male <- bayes.cor.test( ~ ratio_2d4d + grip_kg, data=d[d$sex=="male",], n.iter = 5000)
-model.male
-
## 
-##  Bayesian First Aid Pearson's Correlation Coefficient Test
-## 
-## data: ratio_2d4d and grip_kg (n = 97)
-## Estimated correlation:
-##   -0.34 
-## 95% credible interval:
-##   -0.51 -0.15 
-## The correlation is more than 0 by a probability of <0.001 
-## and less than 0 by a probability of >0.999
-
summary(model.male)
-
##   Data
-## ratio_2d4d and grip_kg, n = 97
-## 
-##   Model parameters
-## rho: the correlation between ratio_2d4d and grip_kg 
-## mu[1]: the mean of ratio_2d4d 
-## sigma[1]: the scale of ratio_2d4d , a consistent
-##   estimate of SD when nu is large.
-## mu[2]: the mean of grip_kg 
-## sigma[2]: the scale of grip_kg 
-## nu: the degrees-of-freedom for the bivariate t distribution
-## 
-##   Measures
-##            mean     sd  HDIlo   HDIup %<comp %>comp
-## rho      -0.339  0.092 -0.511  -0.154  0.999  0.001
-## mu[1]     0.958  0.003  0.952   0.965  0.000  1.000
-## mu[2]    37.252  0.923 35.488  39.124  0.000  1.000
-## sigma[1]  0.032  0.003  0.028   0.037  0.000  1.000
-## sigma[2]  8.701  0.684  7.490  10.130  0.000  1.000
-## nu       47.783 31.402  6.589 110.502  0.000  1.000
-## 
-## 'HDIlo' and 'HDIup' are the limits of a 95% HDI credible interval.
-## '%<comp' and '%>comp' are the probabilities of the respective parameter being
-## smaller or larger than 0.
-## 
-##   Quantiles
-##           q2.5%   q25% median   q75%  q97.5%
-## rho      -0.506 -0.402 -0.345 -0.283  -0.143
-## mu[1]     0.951  0.956  0.958  0.960   0.965
-## mu[2]    35.442 36.646 37.243 37.870  39.086
-## sigma[1]  0.028  0.031  0.032  0.034   0.038
-## sigma[2]  7.458  8.228  8.667  9.140  10.112
-## nu       10.569 25.617 40.041 60.820 129.822
-
model.female <- bayes.cor.test( ~ ratio_2d4d + grip_kg, data=d[d$sex=="female",], n.iter = 5000)
-model.female
-
## 
-##  Bayesian First Aid Pearson's Correlation Coefficient Test
-## 
-## data: ratio_2d4d and grip_kg (n = 119)
-## Estimated correlation:
-##   -0.14 
-## 95% credible interval:
-##   -0.31 0.052 
-## The correlation is more than 0 by a probability of 0.064 
-## and less than 0 by a probability of 0.936
-
plot(model.male)
-

plot of chunk unnamed-chunk-11

-
plot(model.female)
-

plot of chunk unnamed-chunk-11

-

Both estimates indicate a slight negative correlation (the males more than the females). The two ellipses show the 50% (darker blue) and 95% (lighter blue) highest density regions. The red histograms show the marginal distributions of the data with a smatter of marginal densities drawn from the posterior. Looking at this plot we see that the model fits quite well, however, we could be concerned with the right skewness of the ratio_2d4d marginal which is not captured by the model (the t-distribution is symmetric).

-

To take a look at the posterior difference in correlation between the male and the female group, we first extract the MCMC samples from the Bayesian First Aid fit object using the as.data.frame function:

-
female.mcmc <- as.data.frame(model.female)
-  male.mcmc <- as.data.frame(model.male)
-
-hist(male.mcmc$rho-female.mcmc$rho, breaks=50, xlim=c(-1,1), main=bquote(paste("Density for ", rho, " male minus ", rho, " female")), yaxt="n", ylab="")
-

plot of chunk unnamed-chunk-12

-

And the entire code:

-
model.code(model.female)
-
## ## Model code for the Bayesian First Aid alternative to Pearson's correlation test. ##
-## require(rjags)
-## 
-## # Setting up the data
-## x <- d[d$sex == "female", ][ , "ratio_2d4d"] 
-## y <- d[d$sex == "female", ][ , "grip_kg"] 
-## xy <- cbind(x, y)
-## 
-## # The model string written in the JAGS language
-## model_string <- "model {
-##   for(i in 1:n) {
-##     xy[i,1:2] ~ dmt(mu[], prec[ , ], nu) 
-##   }
-## 
-##   # JAGS parameterizes the multivariate t using precision (inverse of variance) 
-##   # rather than variance, therefore here inverting the covariance matrix.
-##   prec[1:2,1:2] <- inverse(cov[,])
-## 
-##   # Constructing the covariance matrix
-##   cov[1,1] <- sigma[1] * sigma[1]
-##   cov[1,2] <- sigma[1] * sigma[2] * rho
-##   cov[2,1] <- sigma[1] * sigma[2] * rho
-##   cov[2,2] <- sigma[2] * sigma[2]
-## 
-##   # Priors  
-##   rho ~ dunif(-1, 1)
-##   sigma[1] ~ dunif(sigmaLow, sigmaHigh) 
-##   sigma[2] ~ dunif(sigmaLow, sigmaHigh)
-##   mu[1] ~ dnorm(mean_mu, precision_mu)
-##   mu[2] ~ dnorm(mean_mu, precision_mu)
-##   nu <- nuMinusOne+1
-##   nuMinusOne ~ dexp(1/29)
-## }"
-## 
-## # Initializing the data list and setting parameters for the priors
-## # that in practice will result in flat priors on mu and sigma.
-## data_list = list(
-##   xy = xy, 
-##   n = length(x),
-##   mean_mu = mean(c(x, y), trim=0.2) ,
-##   precision_mu = 1 / (max(mad(x), mad(y))^2 * 1000000),
-##   sigmaLow = min(mad(x), mad(y)) / 1000 ,
-##   sigmaHigh = max(mad(x), mad(y)) * 1000)
-## 
-## # Initializing parameters to sensible starting values helps the convergence
-## # of the MCMC sampling. Here using robust estimates of the mean (trimmed)
-## # and standard deviation (MAD).
-## inits_list = list(mu=c(mean(x, trim=0.2), mean(y, trim=0.2)), rho=cor(x, y, method="spearman"), 
-##                   sigma = c(mad(x), mad(y)), nuMinusOne = 5)
-## 
-## # The parameters to monitor.
-## params <- c("rho", "mu", "sigma", "nu")
-##   
-## # Running the model
-## model <- jags.model(textConnection(model_string), data = data_list,
-##                     inits = inits_list, n.chains = 3, n.adapt=1000)
-## update(model, 500) # Burning some samples to the MCMC gods....
-## samples <- coda.samples(model, params, n.iter=5000)
-## 
-## # Inspecting the posterior
-## plot(samples)
-## summary(samples)
-

For instance, if you wanted to replace \(\rho \sim U(-1,1)\) with a Beta, such that \(\rho \sim \text{Beta}(-1,1)\) we would replace

-
rho ~ dunif(-1,1)
-

with

-
rho_half_width ~ dbeta(1,1)
-rho ~ 2*rho_half_width - 1  # shift and strech from [0,1] to[-1,1]
-

and replace the inits_lit variable:

-
# from 
-rho=cor(x, y, method="spearman")
-# to
-rho_half_width=( cor(x,y,method="spearman") + 1 ) / 2
-

By changing the parameter values of dbeta we could define several priors, placing more probability mass at that value of rho we know is more probable.

-

Goto part2

-
-
- - -
- - - - - - - - diff --git a/bayes.packages/part2.Rmd b/bayes.packages/part2.Rmd deleted file mode 100644 index 808ef9d..0000000 --- a/bayes.packages/part2.Rmd +++ /dev/null @@ -1,278 +0,0 @@ ---- -title: "Bayesian Model Packages" -author: "João Neto" -date: October 2014 -output: - html_document: - toc: true - toc_depth: 3 - fig_width: 6 - fig_height: 6 -cache: yes ---- - -## Bayesian First Aid (cont.) - -```{r, warning=FALSE, message=FALSE,echo=FALSE} -library(BayesianFirstAid) -``` - -### Test of Proportions - -A lot of questions out there involves estimating the proportion or relative frequency of success of two or more groups (where success could be a saved life, a click on a link, or a happy baby) and there exists a little known R function that does just that, `prop.test`. Here we'll use its Bayesian version `bayes.prop.test`. - -This is an extension of the binomial test which estimates the underlying relative frequency of success given a number of trials. - -For $m$ different trials, in the i-th trial there were $x_1$ successes out of $n_i$ trials, so: - -$$x_i \sim \text{Binomial}(\theta_i, n_i)$$ - -$$\theta_i \sim \text{Beta}(1,1)$$ - -Here's an eg with two trials: - -```{r} -trial.1 <- c( 43, 275) -trial.2 <- c(170,1454) -model <- bayes.prop.test(trial.1, trial.2) -model -``` - -It seems that the first trial has more successes by around 7\%. However this is not very solid evidence since the 95\% confidence interval includes 0 even if barely. - -We can calculate the probability that the difference between the two trials is small (say 5\%): - -```{r} -ts <- as.data.frame(model) -head(ts) -diff <- mean(abs( ts$theta1 - ts$theta2 ) < 0.05) # check Kruschke's ROPE -diff -``` - -So, there's a `r round(100*diff,0)`\% that the relative frequency of successes in the two trials is equivalent, which is weak evidence for the 'no difference' hypothesis. - - -```{r} -plot(model) -diagnostics(model) -model.code(model) -``` - -Let's see an eg with four groups: - -```{r, fig.height=12, fig.width=12} -smokers <- c(83, 90, 129, 70) -patients <- c(86, 93, 136, 82) -model <- bayes.prop.test(smokers, patients) -model -plot(model) -``` - -The 4th group seems slighty different from the others. - -```{r} -model.code(model) -``` - -### Poisson Test - -Given a set of counts per time period, and assuming a Poisson distribution, the goal is to estimate the $\lambda$ parameter of the Poisson. It assumes that every count comes from equal periods of time, and that the parameter is fixed, ie, all counts com from the same distribution. - -```{r} -sales.per.period <- c(14,16,9,18,10,6,13) -poisson.test(x=sum(sales.per.period), T=length(sales.per.period),r=10) # r -- hypothesized rate -``` - -The bayes version uses the following model: - -$$x \sim \text{Poisson}(\lambda_{\text{total}})$$ - -$$\lambda_{\text{total}} = \lambda . T$$ - -$$\lambda \sim \text{Gamma}(0.5,0.00001)$$ - -The $\text{Gamma}(0.5,0.00001)$ is the JAGS-friendly approximation of the Jeffrey's prior for the parameter of the Poisson (which is $p(\lambda) \propto 1/\sqrt{\lambda}$). - -Using `bayes.poisson.text`: - -```{r} -model <- bayes.poisson.test(x=sum(sales.per.period), T=length(sales.per.period), r=10) -model -plot(model) -diagnostics(model) -model.code(model) -``` - -The test accepts two different counts and compare its ratios. In the following eg we are comparing if the first group, that was X-rayed, the cancer rate is 1.5 higher than in the 2nd group, the control group: - -```{r} -cancer.cases <- c(41,15) -person.per.thousand <- c(28.011,19.025) -model <- bayes.poisson.test(x=cancer.cases, T=person.per.thousand, r=1.5) -model -``` - -So, there is evidence, around 75\%, that the cancer rate after the patients being X-rayed, is higher than 1.5 times the control group. - -```{r} -plot(model) -diagnostics(model) -model.code(model) -``` - -It's possible to add Poisson tests for more than two groups. Just copy-paste the R and JAGS code above, and change the input data for longer vectors. Then update the `for(group_i in 1:2)` to the required group size. - -# Zelig package - -Zelig is a unified framework for a large range of statistical models. Here in we'll check [its](http://cran.r-project.org/web/packages/Zelig/vignettes/manual-bayes.pdf) bayesian models. - -```{r, warning=FALSE, message=FALSE} -library(MCMCpack) -library(Zelig) -``` - -## Bayesian Logistic Regression - -A logistic model for $p_i = P(Z_i=1|X_i)$ is - -$$logit(p_i) = \log(\frac{p_i}{1-p_i}) = \beta_0 + \beta_1 \log(x_i)$$ - -$$\beta_0, \beta_1 \sim U(-\infty,+\infty)$$ - -The model option for `zelig` is `model = "logit.bayes"`. Here's an eg of training and testing using the bayesian logistic regression (check [here](http://web.cse.ohio-state.edu/~kulis/teaching/788_sp12/scribe_notes/lecture6.pdf) for more info): - -```{r} -head(mtcars) - -set.seed(101) -n <- nrow(mtcars) -sample.set <- sample(1:n, 0.7*n) -train.set <- mtcars[sample.set,] -test.set <- mtcars[-sample.set,] - -# model the probability of a manual transmission in a vehicle based on its engine horsepower & weight -z.out <- zelig(am ~ hp + wt, model = "logit.bayes", data = train.set, verbose=FALSE, cite=FALSE) -# test a new record: -x.out <- setx(z.out, wt=test.set[1,"wt"], hp=test.set[1,"hp"]) # this is test.set[1,] -s.out <- sim(z.out, x = x.out) -summary(s.out) -test.set[1,"am"] # compare with real value - -# check the entire test set -ams <- rep(NA, nrow(test.set)) -for(i in 1:nrow(test.set)) { - - x.out <- setx(z.out, wt=test.set[i,"wt"], hp=test.set[i,"hp"]) - s.out <- sim(z.out, x = x.out) - - ams[i] <- which.max(s.out$stats$`Predicted Value: Y|X`)-1 -} -table(test.set$`am`, ams, dnn = c("real","predicted")) -``` - - - -To check more bayesian models from this package check [Zelig's manual](http://cran.r-project.org/web/packages/Zelig/vignettes/manual-bayes.pdf). - -# Laplace's Demon - -This is another package that offers many different kinds of MCMC. Check their [webpage](http://www.bayesian-inference.com/software) for more info. - -```{r, eval=FALSE} -# to install, download from http://www.bayesian-inference.com/softwaredownload -install.packages(pkgs="path\\LaplacesDemon_[version].tar.gz", repos=NULL, type="source") - -# check package documentation -vignette("BayesianInference") -vignette("LaplacesDemonTutorial") -vignette("Examples") -``` - -Let's implement the following model ([ref](http://www.sumsar.net/blog/2013/06/three-ways-to-run-bayesian-models-in-r/)): - -$$y_i \sim \mathcal{N}(\mu,\sigma)$$ -$$\mu \sim \mathcal{N}(0,100)$$ -$$\sigma \sim \text{LogNormal}(0,4)$$ - -and get some data: - -```{r} -set.seed(1337) -y <- rnorm(20,10,5) -``` - -There is no special mechanism for keeping the parameters inside a bounded range, therefore $\sigma$ is sampled on the log-scale and then exponentiated to make sure it is always positive. - -```{r, message=FALSE, results=FALSE} -library(LaplacesDemon) - -model <- function(theta, data) { - mu <- theta[1] - sigma <- exp(theta[2]) - log_lik <- sum( dnorm(data$y, mu, sigma, log=T) ) # sum ( log p(y_i|theta) ) - log_post <- log_lik + dnorm(mu, 0, 100, log=T) + dlnorm(sigma, 0, 4, log=T) - - # return list in package required format - list(LP=log_post, - Dev= -2*log_lik, - Monitor=c(log_post,sigma), - yhat=NA, - parm=theta) -} - -data.list <- list(N=length(y), y=y, mon.names=c("log_post","sigma"), parm.names=c("mu","log.sigma")) -mcmc.samples <- LaplacesDemon(Model=model, - Data=data.list, - Iterations=1e4, - Algorithm="HARM", # Hit-and-Run Metropolis, www.bayesian-inference.com/mcmcharm - Thinning=1 - ) -``` - -We can present the results from the sampling: - -```{r} -Consort(mcmc.samples) -plot(mcmc.samples, BurnIn=1e3, data.list) -``` - -The modelling with this package is less user-friendly since there is no declarative language like in BUGS, JAGS or STAN. However it has the possibility of lots of configuration options. diff --git a/bayes.packages/part2.html b/bayes.packages/part2.html deleted file mode 100644 index 56879b0..0000000 --- a/bayes.packages/part2.html +++ /dev/null @@ -1,795 +0,0 @@ - - - - - - - - - - - - - - -Bayesian Model Packages - - - - - - - - - - - - - - - - - - - - -
- - - - - - -
-

Bayesian First Aid (cont.)

-
-

Test of Proportions

-

A lot of questions out there involves estimating the proportion or relative frequency of success of two or more groups (where success could be a saved life, a click on a link, or a happy baby) and there exists a little known R function that does just that, prop.test. Here we’ll use its Bayesian version bayes.prop.test.

-

This is an extension of the binomial test which estimates the underlying relative frequency of success given a number of trials.

-

For \(m\) different trials, in the i-th trial there were \(x_1\) successes out of \(n_i\) trials, so:

-

\[x_i \sim \text{Binomial}(\theta_i, n_i)\]

-

\[\theta_i \sim \text{Beta}(1,1)\]

-

Here’s an eg with two trials:

-
trial.1 <- c( 43, 275)
-trial.2 <- c(170,1454)
-model <- bayes.prop.test(trial.1, trial.2)
-model
-
## 
-##  Bayesian First Aid propotion test
-## 
-## data: trial.1 out of trial.2
-## number of successes:    43,  275
-## number of trials:      170, 1454
-## Estimated relative frequency of success [95% credible interval]:
-##   Group 1: 0.26 [0.19, 0.32]
-##   Group 2: 0.19 [0.17, 0.21]
-## Estimated group difference (Group 1 - Group 2):
-##   0.07 [-0.0034, 0.13]
-## The relative frequency of success is larger for Group 1 by a probability
-## of 0.975 and larger for Group 2 by a probability of 0.025 .
-

It seems that the first trial has more successes by around 7%. However this is not very solid evidence since the 95% confidence interval includes 0 even if barely.

-

We can calculate the probability that the difference between the two trials is small (say 5%):

-
ts <- as.data.frame(model)
-head(ts)
-
##   theta1 theta2 x_pred1 x_pred2
-## 1 0.3004 0.1976      46     305
-## 2 0.2749 0.1769      58     279
-## 3 0.2518 0.1836      39     263
-## 4 0.2867 0.1751      48     258
-## 5 0.2024 0.1986      36     309
-## 6 0.2417 0.1900      47     282
-
diff <- mean(abs( ts$theta1 - ts$theta2 ) < 0.05) # check Kruschke's ROPE
-diff
-
## [1] 0.3277
-

So, there’s a 33% that the relative frequency of successes in the two trials is equivalent, which is weak evidence for the ‘no difference’ hypothesis.

-
plot(model)
-

plot of chunk unnamed-chunk-4

-
diagnostics(model)
-
## 
-## Iterations = 1:5000
-## Thinning interval = 1 
-## Number of chains = 3 
-## Sample size per chain = 5000 
-## 
-##   Diagnostic measures
-##                    mean     sd mcmc_se n_eff  Rhat
-## theta[1]          0.256  0.033   0.000 14727 1.000
-## theta[2]          0.190  0.010   0.000 14791 1.000
-## x_pred[1]        43.451  8.024   0.067 14311 1.000
-## x_pred[2]       275.637 20.968   0.175 14385 1.001
-## theta_diff[1,2]   0.066  0.035      NA    NA    NA
-## 
-## mcmc_se: the estimated standard error of the MCMC approximation of the mean.
-## n_eff: a crude measure of effective MCMC sample size.
-## Rhat: the potential scale reduction factor (at convergence, Rhat=1).
-## 
-##   Model parameters and generated quantities
-## theta: The relative frequency of success
-## x_pred: Predicted number of successes in a replication
-## theta_diff[i,j]: the difference between two groups (theta[i] - theta[j])
-

plot of chunk unnamed-chunk-4

-
model.code(model)
-
## ### Model code for the Bayesian First Aid  ###
-## ### alternative to the test of proportions ###
-## require(rjags)
-## 
-## # Setting up the data
-## x <- c(43, 275) 
-## n <- c(170, 1454) 
-## 
-## # The model string written in the JAGS language
-## model_string <- "model {
-##   for(i in 1:length(x)) {
-##     x[i] ~ dbinom(theta[i], n[i])
-##     theta[i] ~ dbeta(1, 1)
-##     x_pred[i] ~ dbinom(theta[i], n[i])
-##   }
-## }"
-## 
-## # Running the model
-## model <- jags.model(textConnection(model_string), data = list(x = x, n = n), 
-##                     n.chains = 3, n.adapt=1000)
-## samples <- coda.samples(model, c("theta", "x_pred"), n.iter=5000)
-## 
-## # Inspecting the posterior
-## plot(samples)
-## summary(samples)
-## 
-## # You can extract the mcmc samples as a matrix and compare the thetas 
-## # of the groups. For example, the following shows the median and 95%
-## # credible interval for the difference between Group 1 and Group 2.
-## samp_mat <- as.matrix(samples)
-## quantile(samp_mat[, "theta[1]"] - samp_mat[, "theta[2]"], c(0.025, 0.5, 0.975))
-

Let’s see an eg with four groups:

-
smokers  <- c(83, 90, 129, 70)
-patients <- c(86, 93, 136, 82)
-model <- bayes.prop.test(smokers, patients)
-model
-
## 
-##  Bayesian First Aid propotion test
-## 
-## data: smokers out of patients
-## number of successes:   83,  90, 129,  70
-## number of trials:      86,  93, 136,  82
-## Estimated relative frequency of success [95% credible interval]:
-##   Group 1: 0.96 [0.91, 0.99]
-##   Group 2: 0.96 [0.92, 0.99]
-##   Group 3: 0.94 [0.90, 0.98]
-##   Group 4: 0.85 [0.77, 0.92]
-## Estimated pairwise group differences (row - column) with 95 % cred. intervals:
-##                         Group                        
-##            2               3               4       
-##   1        0             0.01            0.11      
-##     [-0.064, 0.055] [-0.045, 0.072]  [0.023, 0.2]  
-##   2                      0.02            0.11      
-##                     [-0.042, 0.072]  [0.025, 0.2]  
-##   3                                      0.09      
-##                                      [0.014, 0.18]
-
plot(model)
-

plot of chunk unnamed-chunk-5

-

The 4th group seems slighty different from the others.

-
model.code(model)
-
## ### Model code for the Bayesian First Aid  ###
-## ### alternative to the test of proportions ###
-## require(rjags)
-## 
-## # Setting up the data
-## x <- c(83, 90, 129, 70) 
-## n <- c(86, 93, 136, 82) 
-## 
-## # The model string written in the JAGS language
-## model_string <- "model {
-##   for(i in 1:length(x)) {
-##     x[i] ~ dbinom(theta[i], n[i])
-##     theta[i] ~ dbeta(1, 1)
-##     x_pred[i] ~ dbinom(theta[i], n[i])
-##   }
-## }"
-## 
-## # Running the model
-## model <- jags.model(textConnection(model_string), data = list(x = x, n = n), 
-##                     n.chains = 3, n.adapt=1000)
-## samples <- coda.samples(model, c("theta", "x_pred"), n.iter=5000)
-## 
-## # Inspecting the posterior
-## plot(samples)
-## summary(samples)
-## 
-## # You can extract the mcmc samples as a matrix and compare the thetas 
-## # of the groups. For example, the following shows the median and 95%
-## # credible interval for the difference between Group 1 and Group 2.
-## samp_mat <- as.matrix(samples)
-## quantile(samp_mat[, "theta[1]"] - samp_mat[, "theta[2]"], c(0.025, 0.5, 0.975))
-
-
-

Poisson Test

-

Given a set of counts per time period, and assuming a Poisson distribution, the goal is to estimate the \(\lambda\) parameter of the Poisson. It assumes that every count comes from equal periods of time, and that the parameter is fixed, ie, all counts com from the same distribution.

-
sales.per.period <- c(14,16,9,18,10,6,13)
-poisson.test(x=sum(sales.per.period), T=length(sales.per.period),r=10) # r -- hypothesized rate
-
## 
-##  Exact Poisson test
-## 
-## data:  sum(sales.per.period) time base: length(sales.per.period)
-## number of events = 86, time base = 7, p-value = 0.06345
-## alternative hypothesis: true event rate is not equal to 10
-## 95 percent confidence interval:
-##   9.827 15.173
-## sample estimates:
-## event rate 
-##      12.29
-

The bayes version uses the following model:

-

\[x \sim \text{Poisson}(\lambda_{\text{total}})\]

-

\[\lambda_{\text{total}} = \lambda . T\]

-

\[\lambda \sim \text{Gamma}(0.5,0.00001)\]

-

The \(\text{Gamma}(0.5,0.00001)\) is the JAGS-friendly approximation of the Jeffrey’s prior for the parameter of the Poisson (which is \(p(\lambda) \propto 1/\sqrt{\lambda}\)).

-

Using bayes.poisson.text:

-
model <- bayes.poisson.test(x=sum(sales.per.period), T=length(sales.per.period), r=10)
-model
-
## 
-##  Bayesian Fist Aid poisson test - one sample
-## 
-## number of events: 86, time periods: 7
-## Estimated event rate:
-##   12 
-## 95% credible interval:
-##   9.7 15 
-## The event rate is more than 10 by a probability of 0.969 
-## and less than 10 by a probability of 0.031  .
-
plot(model)
-

plot of chunk unnamed-chunk-8

-
diagnostics(model)
-
## 
-## Iterations = 101:5100
-## Thinning interval = 1 
-## Number of chains = 3 
-## Sample size per chain = 5000 
-## 
-##   Diagnostic measures
-##         mean     sd mcmc_se n_eff  Rhat
-## lambda 12.35  1.325   0.011 15313 1.001
-## x_pred 86.45 13.083   0.104 15741 1.001
-## 
-## mcmc_se: the estimated standard error of the MCMC approximation of the mean.
-## n_eff: a crude measure of effective MCMC sample size.
-## Rhat: the potential scale reduction factor (at convergence, Rhat=1).
-## 
-##   Model parameters and generated quantities
-## lambda: the rate of the process.
-## x_pred: predicted event count during 7 periods.
-

plot of chunk unnamed-chunk-8

-
model.code(model)
-
## ### Model code for the Bayesian First Aid one sample Poisson test ###
-## require(rjags)
-## 
-## # Setting up the data
-## x <- 86 
-## t <- 7 
-## 
-## # The model string written in the JAGS language
-## model_string <- "model {
-##   x ~ dpois(lambda * t)
-##   lambda ~ dgamma(0.5, 0.00001)
-##   x_pred ~ dpois(lambda * t)
-## }"
-## 
-## # Running the model
-## model <- jags.model(textConnection(model_string), data = list(x = x, t = t), n.chains = 3)
-## samples <- coda.samples(model, c("lambda", "x_pred"), n.iter=5000)
-## 
-## # Inspecting the posterior
-## plot(samples)
-## summary(samples)
-

The test accepts two different counts and compare its ratios. In the following eg we are comparing if the first group, that was X-rayed, the cancer rate is 1.5 higher than in the 2nd group, the control group:

-
cancer.cases <- c(41,15)
-person.per.thousand  <- c(28.011,19.025)
-model <- bayes.poisson.test(x=cancer.cases, T=person.per.thousand, r=1.5)
-model
-
## 
-##  Bayesian Fist Aid poisson test - two sample
-## 
-## number of events: 41 and 15, time periods: 28.011 and 19.025
-## 
-##   Estimates [95% credible interval]
-## Group 1 rate: 1.5 [1.0, 1.9]
-## Group 2 rate: 0.80 [0.42, 1.2]
-## Rate ratio (Group 1 rate / Group 2 rate):
-##               1.8 [1.1, 3.5]
-## 
-## The event rate of group 1 is more than 1.5 times that of group 2 by a probability 
-## of 0.757 and less than 1.5 times that of group 2 by a probability of 0.243 .
-

So, there is evidence, around 75%, that the cancer rate after the patients being X-rayed, is higher than 1.5 times the control group.

-
plot(model)
-

plot of chunk unnamed-chunk-10

-
diagnostics(model)
-
## 
-## Iterations = 101:5100
-## Thinning interval = 1 
-## Number of chains = 3 
-## Sample size per chain = 5000 
-## 
-##   Diagnostic measures
-##              mean    sd mcmc_se n_eff Rhat
-## lambda[1]   1.485 0.230   0.002 15000    1
-## lambda[2]   0.815 0.208   0.002 15000    1
-## x_pred[1]  41.547 9.128   0.075 15000    1
-## x_pred[2]  15.501 5.576   0.046 14814    1
-## rate_diff   0.670 0.310   0.003 15000    1
-## rate_ratio  1.860    NA   0.005 14512    1
-## 
-## mcmc_se: the estimated standard error of the MCMC approximation of the mean.
-## n_eff: a crude measure of effective MCMC sample size.
-## Rhat: the potential scale reduction factor (at convergence, Rhat=1).
-## 
-##   Model parameters and generated quantities
-## lambda[1]: the rate of the process of group 1.
-## lambda[2]: the rate of the process of group 2.
-## x_pred[1]: predicted event count of group 1 during 28.01 periods.
-## x_pred[2]: predicted event count of group 2 during 19.02 periods.
-## rate_diff: The difference lambda[1] - lambda[2].
-## rate_ratio: The ratio lambda[1] / lambda[2].
-

plot of chunk unnamed-chunk-10plot of chunk unnamed-chunk-10

-
model.code(model)
-
## ### Model code for the Bayesian First Aid two sample Poisson test ###
-## require(rjags)
-## 
-## # Setting up the data
-## x <- c(41, 15) 
-## t <- c(28.011, 19.025) 
-## 
-## # The model string written in the JAGS language
-## model_string <- "model {
-##   for(group_i in 1:2) {
-##     x[group_i] ~ dpois(lambda[group_i] * t[group_i])
-##     lambda[group_i] ~ dgamma(0.5, 0.00001)
-##     x_pred[group_i] ~ dpois(lambda[group_i] * t[group_i])
-##   }
-##   rate_diff <- lambda[1] - lambda[2]
-##   rate_ratio <- lambda[1] / lambda[2]
-## }"
-## 
-## # Running the model
-## model <- jags.model(textConnection(model_string), data = list(x = x, t = t), n.chains = 3)
-## samples <- coda.samples(model, c("lambda", "x_pred", "rate_diff", "rate_ratio"), n.iter=5000)
-## 
-## # Inspecting the posterior
-## plot(samples)
-## summary(samples)
-

It’s possible to add Poisson tests for more than two groups. Just copy-paste the R and JAGS code above, and change the input data for longer vectors. Then update the for(group_i in 1:2) to the required group size.

-
-
-
-

Zelig package

-

Zelig is a unified framework for a large range of statistical models. Here in we’ll check its bayesian models.

-
library(MCMCpack)
-library(Zelig)
-
-

Bayesian Logistic Regression

-

A logistic model for \(p_i = P(Z_i=1|X_i)\) is

-

\[logit(p_i) = \log(\frac{p_i}{1-p_i}) = \beta_0 + \beta_1 \log(x_i)\]

-

\[\beta_0, \beta_1 \sim U(-\infty,+\infty)\]

-

The model option for zelig is model = "logit.bayes". Here’s an eg of training and testing using the bayesian logistic regression (check here for more info):

-
head(mtcars)
-
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
-## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
-## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
-## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
-## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
-## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
-## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
-
set.seed(101)
-n <- nrow(mtcars)
-sample.set <- sample(1:n, 0.7*n)
-train.set  <- mtcars[sample.set,]
-test.set   <- mtcars[-sample.set,]
-
-# model the probability of a manual transmission in a vehicle based on its engine horsepower & weight
-z.out <- zelig(am ~ hp + wt, model = "logit.bayes", data = train.set, verbose=FALSE, cite=FALSE)
-# test a new record:
-x.out <- setx(z.out, wt=test.set[1,"wt"], hp=test.set[1,"hp"]) # this is test.set[1,]
-s.out <- sim(z.out, x = x.out)
-summary(s.out)
-
## 
-## Model:  logit.bayes 
-## Number of simulations:  1000 
-## 
-## Values of X
-##            (Intercept) hp   wt
-## Merc 450SE           1 93 2.32
-## attr(,"assign")
-## [1] 0 1 2
-## 
-## Expected Value: E(Y|X) 
-##             mean  sd   50% 2.5% 97.5%
-## Merc 450SE 0.934 0.1 0.974 0.63     1
-## 
-## Predicted Value: Y|X 
-##                0     1
-## Merc 450SE 0.068 0.932
-
test.set[1,"am"] # compare with real value
-
## [1] 1
-
# check the entire test set
-ams <- rep(NA, nrow(test.set))
-for(i in 1:nrow(test.set)) {
-   
-  x.out <- setx(z.out, wt=test.set[i,"wt"], hp=test.set[i,"hp"])
-  s.out <- sim(z.out, x = x.out)
-  
-  ams[i] <- which.max(s.out$stats$`Predicted Value: Y|X`)-1
-}
-table(test.set$`am`, ams, dnn = c("real","predicted"))
-
##     predicted
-## real 0 1
-##    0 4 0
-##    1 1 5
- - -

To check more bayesian models from this package check Zelig’s manual.

-
-
-
-

Laplace’s Demon

-

This is another package that offers many different kinds of MCMC. Check their webpage for more info.

-
# to install, download from http://www.bayesian-inference.com/softwaredownload
-install.packages(pkgs="path\\LaplacesDemon_[version].tar.gz", repos=NULL, type="source")
-
-# check package documentation
-vignette("BayesianInference")
-vignette("LaplacesDemonTutorial")
-vignette("Examples")
-

Let’s implement the following model (ref):

-

\[y_i \sim \mathcal{N}(\mu,\sigma)\] \[\mu \sim \mathcal{N}(0,100)\] \[\sigma \sim \text{LogNormal}(0,4)\]

-

and get some data:

-
set.seed(1337)
-y <- rnorm(20,10,5)
-

There is no special mechanism for keeping the parameters inside a bounded range, therefore \(\sigma\) is sampled on the log-scale and then exponentiated to make sure it is always positive.

-
library(LaplacesDemon)
-
-model <- function(theta, data) {
-  mu       <- theta[1]
-  sigma    <- exp(theta[2])
-  log_lik  <- sum( dnorm(data$y, mu, sigma, log=T) )  # sum ( log p(y_i|theta) )
-  log_post <- log_lik + dnorm(mu, 0, 100, log=T) + dlnorm(sigma, 0, 4, log=T)
-  
-  # return list in package required format
-  list(LP=log_post, 
-       Dev= -2*log_lik, 
-       Monitor=c(log_post,sigma),
-       yhat=NA,
-       parm=theta)
-}
-
-data.list <- list(N=length(y), y=y, mon.names=c("log_post","sigma"), parm.names=c("mu","log.sigma"))
-mcmc.samples <- LaplacesDemon(Model=model, 
-                              Data=data.list, 
-                              Iterations=1e4, 
-                              Algorithm="HARM", # Hit-and-Run Metropolis, www.bayesian-inference.com/mcmcharm
-                              Thinning=1
-                             )
-
## 
-## Laplace's Demon was called on Mon Oct 13 12:50:10 2014
-## 
-## Performing initial checks...
-## WARNING: Initial Values were not supplied.
-## Suggestion: 1 possible instance(s) of for loops
-##      were found in the Model specification. Iteration speed will
-##      increase if for loops are vectorized in R or coded in a
-##      faster language such as C++ via the Rcpp package.
-## 
-## Laplace Approximation will be used on initial values.
-## Suggestion: 1  possible instance(s) of for loops
-##      were found in the Model specification. Iteration speed will
-##      increase if for loops are vectorized in R or coded in a
-##      faster language such as C++ via the Rcpp package.
-## Sample Size:  20 
-## Laplace Approximation begins...
-## Iteration:  10  of  100 ,   LP:  -91.2 
-## Iteration:  20  of  100 ,   LP:  -85.6 
-## Iteration:  30  of  100 ,   LP:  -82.8 
-## Iteration:  40  of  100 ,   LP:  -79 
-## Iteration:  50  of  100 ,   LP:  -72.9 
-## Estimating the Covariance Matrix
-## Creating Summary from Point-Estimates
-## Estimating Log of the Marginal Likelihood
-## Laplace Approximation is finished.
-## 
-## The covariance matrix from Laplace Approximation has been scaled
-## for Laplace's Demon, and the posterior modes are now the initial
-## values for Laplace's Demon.
-## 
-## Algorithm: Hit-And-Run Metropolis 
-## 
-## Laplace's Demon is beginning to update...
-## Iteration: 100Iteration: 100,   Proposal: Multivariate,   LP:-73.5
-## Iteration: 200Iteration: 200,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 300Iteration: 300,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 400Iteration: 400,   Proposal: Multivariate,   LP:-74.5
-## Iteration: 500Iteration: 500,   Proposal: Multivariate,   LP:-73
-## Iteration: 600Iteration: 600,   Proposal: Multivariate,   LP:-73.5
-## Iteration: 700Iteration: 700,   Proposal: Multivariate,   LP:-73.8
-## Iteration: 800Iteration: 800,   Proposal: Multivariate,   LP:-72.8
-## Iteration: 900Iteration: 900,   Proposal: Multivariate,   LP:-72.5
-## Iteration: 1000Iteration: 1000,   Proposal: Multivariate,   LP:-74
-## Iteration: 1100Iteration: 1100,   Proposal: Multivariate,   LP:-73.9
-## Iteration: 1200Iteration: 1200,   Proposal: Multivariate,   LP:-73.8
-## Iteration: 1300Iteration: 1300,   Proposal: Multivariate,   LP:-73
-## Iteration: 1400Iteration: 1400,   Proposal: Multivariate,   LP:-74.3
-## Iteration: 1500Iteration: 1500,   Proposal: Multivariate,   LP:-74.8
-## Iteration: 1600Iteration: 1600,   Proposal: Multivariate,   LP:-74.2
-## Iteration: 1700Iteration: 1700,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 1800Iteration: 1800,   Proposal: Multivariate,   LP:-76.3
-## Iteration: 1900Iteration: 1900,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 2000Iteration: 2000,   Proposal: Multivariate,   LP:-74.2
-## Iteration: 2100Iteration: 2100,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 2200Iteration: 2200,   Proposal: Multivariate,   LP:-75.3
-## Iteration: 2300Iteration: 2300,   Proposal: Multivariate,   LP:-73.7
-## Iteration: 2400Iteration: 2400,   Proposal: Multivariate,   LP:-73.2
-## Iteration: 2500Iteration: 2500,   Proposal: Multivariate,   LP:-73.4
-## Iteration: 2600Iteration: 2600,   Proposal: Multivariate,   LP:-72.5
-## Iteration: 2700Iteration: 2700,   Proposal: Multivariate,   LP:-75.1
-## Iteration: 2800Iteration: 2800,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 2900Iteration: 2900,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 3000Iteration: 3000,   Proposal: Multivariate,   LP:-74.4
-## Iteration: 3100Iteration: 3100,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 3200Iteration: 3200,   Proposal: Multivariate,   LP:-73
-## Iteration: 3300Iteration: 3300,   Proposal: Multivariate,   LP:-72.5
-## Iteration: 3400Iteration: 3400,   Proposal: Multivariate,   LP:-73.1
-## Iteration: 3500Iteration: 3500,   Proposal: Multivariate,   LP:-73.5
-## Iteration: 3600Iteration: 3600,   Proposal: Multivariate,   LP:-74.4
-## Iteration: 3700Iteration: 3700,   Proposal: Multivariate,   LP:-74.8
-## Iteration: 3800Iteration: 3800,   Proposal: Multivariate,   LP:-72.8
-## Iteration: 3900Iteration: 3900,   Proposal: Multivariate,   LP:-74.1
-## Iteration: 4000Iteration: 4000,   Proposal: Multivariate,   LP:-73.9
-## Iteration: 4100Iteration: 4100,   Proposal: Multivariate,   LP:-73.1
-## Iteration: 4200Iteration: 4200,   Proposal: Multivariate,   LP:-74.9
-## Iteration: 4300Iteration: 4300,   Proposal: Multivariate,   LP:-73.1
-## Iteration: 4400Iteration: 4400,   Proposal: Multivariate,   LP:-73.8
-## Iteration: 4500Iteration: 4500,   Proposal: Multivariate,   LP:-72.6
-## Iteration: 4600Iteration: 4600,   Proposal: Multivariate,   LP:-73.9
-## Iteration: 4700Iteration: 4700,   Proposal: Multivariate,   LP:-73.1
-## Iteration: 4800Iteration: 4800,   Proposal: Multivariate,   LP:-73
-## Iteration: 4900Iteration: 4900,   Proposal: Multivariate,   LP:-73.4
-## Iteration: 5000Iteration: 5000,   Proposal: Multivariate,   LP:-73.1
-## Iteration: 5100Iteration: 5100,   Proposal: Multivariate,   LP:-73.3
-## Iteration: 5200Iteration: 5200,   Proposal: Multivariate,   LP:-73.1
-## Iteration: 5300Iteration: 5300,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 5400Iteration: 5400,   Proposal: Multivariate,   LP:-75.7
-## Iteration: 5500Iteration: 5500,   Proposal: Multivariate,   LP:-73.8
-## Iteration: 5600Iteration: 5600,   Proposal: Multivariate,   LP:-73.2
-## Iteration: 5700Iteration: 5700,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 5800Iteration: 5800,   Proposal: Multivariate,   LP:-72.8
-## Iteration: 5900Iteration: 5900,   Proposal: Multivariate,   LP:-72.8
-## Iteration: 6000Iteration: 6000,   Proposal: Multivariate,   LP:-73.6
-## Iteration: 6100Iteration: 6100,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 6200Iteration: 6200,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 6300Iteration: 6300,   Proposal: Multivariate,   LP:-73.1
-## Iteration: 6400Iteration: 6400,   Proposal: Multivariate,   LP:-74
-## Iteration: 6500Iteration: 6500,   Proposal: Multivariate,   LP:-72.8
-## Iteration: 6600Iteration: 6600,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 6700Iteration: 6700,   Proposal: Multivariate,   LP:-74.9
-## Iteration: 6800Iteration: 6800,   Proposal: Multivariate,   LP:-73
-## Iteration: 6900Iteration: 6900,   Proposal: Multivariate,   LP:-73.6
-## Iteration: 7000Iteration: 7000,   Proposal: Multivariate,   LP:-72.8
-## Iteration: 7100Iteration: 7100,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 7200Iteration: 7200,   Proposal: Multivariate,   LP:-73.1
-## Iteration: 7300Iteration: 7300,   Proposal: Multivariate,   LP:-73
-## Iteration: 7400Iteration: 7400,   Proposal: Multivariate,   LP:-72.6
-## Iteration: 7500Iteration: 7500,   Proposal: Multivariate,   LP:-73.6
-## Iteration: 7600Iteration: 7600,   Proposal: Multivariate,   LP:-74.6
-## Iteration: 7700Iteration: 7700,   Proposal: Multivariate,   LP:-73.6
-## Iteration: 7800Iteration: 7800,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 7900Iteration: 7900,   Proposal: Multivariate,   LP:-74.1
-## Iteration: 8000Iteration: 8000,   Proposal: Multivariate,   LP:-73.5
-## Iteration: 8100Iteration: 8100,   Proposal: Multivariate,   LP:-74.3
-## Iteration: 8200Iteration: 8200,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 8300Iteration: 8300,   Proposal: Multivariate,   LP:-72.5
-## Iteration: 8400Iteration: 8400,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 8500Iteration: 8500,   Proposal: Multivariate,   LP:-72.8
-## Iteration: 8600Iteration: 8600,   Proposal: Multivariate,   LP:-72.7
-## Iteration: 8700Iteration: 8700,   Proposal: Multivariate,   LP:-72.9
-## Iteration: 8800Iteration: 8800,   Proposal: Multivariate,   LP:-74.7
-## Iteration: 8900Iteration: 8900,   Proposal: Multivariate,   LP:-74.2
-## Iteration: 9000Iteration: 9000,   Proposal: Multivariate,   LP:-73.7
-## Iteration: 9100Iteration: 9100,   Proposal: Multivariate,   LP:-74.2
-## Iteration: 9200Iteration: 9200,   Proposal: Multivariate,   LP:-73.7
-## Iteration: 9300Iteration: 9300,   Proposal: Multivariate,   LP:-74.4
-## Iteration: 9400Iteration: 9400,   Proposal: Multivariate,   LP:-72.6
-## Iteration: 9500Iteration: 9500,   Proposal: Multivariate,   LP:-73.6
-## Iteration: 9600Iteration: 9600,   Proposal: Multivariate,   LP:-73.5
-## Iteration: 9700Iteration: 9700,   Proposal: Multivariate,   LP:-75
-## Iteration: 9800Iteration: 9800,   Proposal: Multivariate,   LP:-75.6
-## Iteration: 9900Iteration: 9900,   Proposal: Multivariate,   LP:-73.2
-## Iteration: 10000Iteration: 10000,   Proposal: Multivariate,   LP:-72.6
-## 
-## Assessing Stationarity
-## Assessing Thinning and ESS
-## Creating Summaries
-## Estimating Log of the Marginal Likelihood
-## Creating Output
-## 
-## Laplace's Demon has finished.
-

We can present the results from the sampling:

-
Consort(mcmc.samples)
-
## 
-## #############################################################
-## # Consort with Laplace's Demon                              #
-## #############################################################
-## Call:
-## LaplacesDemon(Model = model, Data = data.list, Iterations = 10000, 
-##     Thinning = 1, Algorithm = "HARM")
-## 
-## Acceptance Rate: 0.4179
-## Algorithm: Hit-And-Run Metropolis
-## Covariance Matrix: (NOT SHOWN HERE; diagonal shown instead)
-##        mu log.sigma 
-##   1.49688   0.02556 
-## 
-## Covariance (Diagonal) History: (NOT SHOWN HERE)
-## Deviance Information Criterion (DIC):
-##          All Stationary
-## Dbar 127.733    127.733
-## pD     1.866      1.866
-## DIC  129.599    129.599
-## Initial Values:
-##        mu log.sigma 
-##    12.719     1.699 
-## 
-## Iterations: 10000
-## Log(Marginal Likelihood): -62.64
-## Minutes of run-time: 0.03
-## Model: (NOT SHOWN HERE)
-## Monitor: (NOT SHOWN HERE)
-## Parameters (Number of): 2
-## Posterior1: (NOT SHOWN HERE)
-## Posterior2: (NOT SHOWN HERE)
-## Recommended Burn-In of Thinned Samples: 0
-## Recommended Burn-In of Un-thinned Samples: 0
-## Recommended Thinning: 40
-## Specs: (NOT SHOWN HERE)
-## Status is displayed every 100 iterations
-## Summary1: (SHOWN BELOW)
-## Summary2: (SHOWN BELOW)
-## Thinned Samples: 10000
-## Thinning: 1
-## 
-## 
-## Summary of All Samples
-##              Mean     SD     MCSE    ESS      LB  Median      UB
-## mu         12.355 1.2235 0.127777  103.6  10.079  12.343  14.871
-## log.sigma   1.740 0.1599 0.005314 1636.8   1.453   1.732   2.079
-## Deviance  127.733 1.9316 0.117931  264.3 125.826 127.141 132.812
-## log_post  -73.539 0.9981 0.063120  249.6 -76.262 -73.238 -72.561
-## sigma       5.774 0.9563 0.032264 1594.9   4.277   5.651   7.998
-## 
-## 
-## Summary of Stationary Samples
-##              Mean     SD     MCSE    ESS      LB  Median      UB
-## mu         12.355 1.2235 0.127777  103.6  10.079  12.343  14.871
-## log.sigma   1.740 0.1599 0.005314 1636.8   1.453   1.732   2.079
-## Deviance  127.733 1.9316 0.117931  264.3 125.826 127.141 132.812
-## log_post  -73.539 0.9981 0.063120  249.6 -76.262 -73.238 -72.561
-## sigma       5.774 0.9563 0.032264 1594.9   4.277   5.651   7.998
-## 
-## Demonic Suggestion
-## 
-## Due to the combination of the following conditions,
-## 
-## 1. Hit-And-Run Metropolis
-## 2. The acceptance rate (0.4179) is within the interval [0.15,0.5].
-## 3. At least one target MCSE is >= 6.27% of its marginal posterior
-##    standard deviation.
-## 4. Each target distribution has an effective sample size (ESS)
-##    of at least 100.
-## 5. Each target distribution became stationary by
-##    1 iteration.
-## 
-## Laplace's Demon has not been appeased, and suggests
-## copy/pasting the following R code into the R console,
-## and running it.
-## 
-## Initial.Values <- as.initial.values(mcmc.samples)
-## mcmc.samples <- LaplacesDemon(Model, Data=data.list, Initial.Values,
-##      Covar=NULL, Iterations=4e+05, Status=333333, Thinning=40,
-##      Algorithm="HARM", Specs=list(alpha.star=NA, B=NULL)
-## 
-## Laplace's Demon is finished consorting.
-
plot(mcmc.samples, BurnIn=1e3, data.list)
-

plot of chunk unnamed-chunk-18plot of chunk unnamed-chunk-18

-

The modelling with this package is less user-friendly since there is no declarative language like in BUGS, JAGS or STAN. However it has the possibility of lots of configuration options.

-
- - -
- - - - - - - - diff --git a/bayes.packages/roubik_2002_coffe_yield.csv b/bayes.packages/roubik_2002_coffe_yield.csv deleted file mode 100644 index 7067309..0000000 --- a/bayes.packages/roubik_2002_coffe_yield.csv +++ /dev/null @@ -1,29 +0,0 @@ -world,country,yield_61_to_80,yield_81_to_01 -new,Costa_Rica,9139,14620 -new,Bolivia,7686,8767 -new,El_Salvador,9996,8729 -new,Guatemala,5488,8231 -new,Colombia,5920,7740 -new,Honduras,4096,7264 -new,Nicaragua,4566,6408 -new,Brazil,4965,6283 -new,Peru,5487,5740 -new,Mexico,5227,5116 -new,Panama,2347,4124 -new,Ecuador,3089,3240 -new,Venezuela,1938,2789 -old,Vietnam,4251,13380 -old,Papua_NG,10522,11561 -old,Thailand,3509,9652 -old,Philippines,10028,9593 -old,Ethiopia,5667,8797 -old,Sri_Lanka,17064,7869 -old,India,5904,7354 -old,Malaysia,4001,7288 -old,Kenya,6604,6055 -old,Tanzania,4738,5432 -old,Indonesia,5716,5394 -old,Madagascar,3824,3576 -old,Cameroon,3525,3141 -old,Ivory_Coast,3393,2391 -old,Ghana,3213,2136 diff --git a/bayes.packages/zelig-manual-bayes.pdf b/bayes.packages/zelig-manual-bayes.pdf deleted file mode 100644 index 91b8f14d1017b3887911178f5219d2960e26daab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291461 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

W@BdJz8rzW2GVJWUc!zBpzwq` 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 = zo~fBzQr$$_%fW2HTRQD_22XiSPvW&yLnoeyf*YO3p3NLe+YC`XJxRYpkE$dg9xrMy z|74~Q9+F)&*7=`54<$g}WSSW(*y6rxA6j@I1uWb-OH#GJgO5YNG03e)71`wP3DAwH zXB{n47qpr+(uxJ7{|e{*VV=_DW1b5l-Q7PXp0ZcGRV87BE4J0i*@5k9ZIJ_aVRjMMbD_` zv##tBTi34ax#tmM(X|}xHP;iKU71;=5JRDZFuGT_zu;`%L!vXK!E}M^Qrc*58lA50 zI6J2+HtR9`Z^Pxol_G03r=~A>^N#N%*6cxh)H(2{chdGx^ZjQ<56FkAFwZ^JL&8xov9t( z$rV?OHH~4ik`-CGWdxb4R=p7gZO*TndPWMWSOsbelLdVnvMUR`LF)w#UisGoE%?zX zKVuK$gaxgY?ngEvXzi6amK&ty2*;I>c7SWz9SjQu`GW%-yc-=H=t2FcKE(7qU2yHcxO^i!F><<3%KUM6Tn- zns>AcN_KmzsnWww=rb;q6;bjoX$OkT zj}F1(eHme>khM@t&z!)7pfd~7 zzx0PYF8mpkC6}LMl0oGa{}u8PL8bupH=ZVYvy$^ye2OFlMp~D));}NX4hk;Y=woS! z6QG!~AsiEG5xA(umO;iXh56CA->B0ko@JIT0rVTUhKS{mbNZIYWBZ zA>1uqCEjncP!#dEI=>9QgC^3$Y@vHvL+GdzbVKIHU(7i;xz(hv4U(=TjY5?AySHGL zGha37TMViXUlHG^Y?0lP{g#W7?C`iZGX`QmGVHz;8{AMB&6y+@%e8s8F+taWM0Z!C z&|snQeD>Y_l9+YJA~Hm{l9r{!7GgtpxwD6{RtOP}gIHiBG6Hb4hk2PL4*hw8Y0{MG zqM;V5Hm(pYoS40=e z(Y6%NN0VzUib{iMZx9N`(~rAs2MA4QPS?S#R!ZKZnsmZZ-`I#Cb)W$qGO>gA3> zL3AiqZxinr!3``)H}~sPIbg!IJ(s)KbC4}pzm-)B@bn@w$2Ga^t;?*P`s;Xa4HgWu zbDvlM+!MBzMT}Hw_tcR|<8(40kBTL^y`CY1*?UVFhTaT=6NkDLWqZSOF@{c}OC2#> zZ##Jis8~8)bb)NaveWJAng>cLq^ek)s^vcH;>&IbAL*;?AJrapzqHEwr=_>NhCN8> zC^r6Rsa7lvnEB+DI>0PTsPq&Pjj>mUwO9L;Mms(dzsV3qm4Mnxo zy4U@$5}qzc4N8Wy3&mW9NylP5CD^&rOlii_twsAnNPT+1!i&c)+#Rnbg2%m#Z@Hkf zuP{LLgJYa0W`citW4?Rxk4fQ*C)??rHka7j2V4SbS!S)u)Kwo#7FW%gda!YxhPDux zcS=TZ)kF$WZ%|BP^UL(Tb=t|>n{?rHy`CUH3tpy)aQ)@u(X&Ye}&qn!WwNY0jEV7rJY~`hkA1K(UX6_BJY3 z^|iJ*#Ud5D<(YPEkT~5@##v$_6ZfwesRoM{h3qRoKESGKMFSLQG&y$K;#24C5&Ic+ zwk}JgTzyRVvvnuRcD2&UZ~}}|uG^T!st2~h)4AjuxQNN2tv{!JkfW9ZuN2uyle2xh zWkUQ;ayh3)5snJq$J+%du4d0E3CiC#tO$S&D@RRMf%|na$F`5i;MQzsbcWnsrYbb* zTP->wNOXZI>@W|?_M~}jRk2gs7kUCb7e{@@VE-p!l;fv0Hnl~l<`jiW7RU`Z4$A{a zlkFP6-1ArIA2nmQ>V{x1-cHQ1Aj)HJVj_i_ZwC36Z&fo4+%g|mHhIbRy=8~%*0YuI z!1U^JhjG#g2rnkWfx+o&Lif4JnOnF>i9tNWmy*udyDm?oc2=faPrRC?o8QI(X57-I zY6&Q_OXeUbTI4o8x?LtAG_LHqbw*C8!wQ|M9l9W>}t1ditd{svjGC;?e9r-fP zmA&{viuNAswPcpt1=h5UXC&8;D{4*F;jN7|#g7nys^sz0;Aj@`gI6=P zL%1plGpi{hI$Y!3ICg@X>BL{kpKG6RMX)SkKGdm8eDXb#HtkutwuP>aSl?Tr%RjVW zAb%@}`c!!d417y;@pLo==sOz(Gp0dM4dR;yN!(t?CRo}IJ7&kR;fnG-7|V;3wVB}1 z8RcnQM6M9zdUh=v9#zrn^sRqtbm7{(+n1!c^ylcFWvEx-YH)R_JuVM&JkSp;HEGT; zJUC3+%`u?^(+m=mj)W;5$fL!;+8c8IB9+W|YDXu71x`^)B}TS=NK`8GSQOFr{28wj zJUetQMT@*R$anMw`McH3}cZJ{8(?J z2>#mfxU!D40|IB6Z*iKiJvIn-Bx-%aOjd(yb4huq4VeYdYx|K6$Dfd_jI3d7V!&1I zrM59+f9~A2QdtF;@w)pyr2Sj+aS7)G_fciVv(JpsCp6EpWez#TCJ(AvW0;=BGbG%R zPEg!UbxgedT7ujdSjFnMCCuZp=}AZJ0AL&rirXG+A+r~uZ zhb>-(_9sCbuM28Y{!rs~4onWXscrJT3LFXgk%vUN#QK`jqu%8~TNw?BE)g1Hgu``W zgKS!X&M8>VUMSJ5P1J`Us8QdugIkot|=6tyTPd@7sHf|PHg?}nr4J{`Ak|~PFAD4t5d@C z7H4x#(1o%?#^uOM&<`jS)py~4!3&K41url&u>B8L_*dJ_@ZWNCHhT8|JG|fmuBd3S z!Ma5rRTuz*)IS*;9_Yw64>CaCi@-$Bq$F3~0Awv4{_50(;B4D7U z0AnA3eN6lvHUbFd?TG~r{y@iy_Ti&fN&)-#4Vw`n00jZ(`{Z0Uiko4sPB0xC( z-tiMl1mgqVhid^gg$7xS1)!%#O5&dF2l;QT8Pr;RdxPKdxdHEfybRrZOGA!w49MD& zg8|P5>R#$iuSUy;BJ<%v1r5+^|4{Z3nZ@+AiUIlI;^O)v{F@(;jL4=u&~|}GRzV+i zP0`13j6q+)(R0E7H68PliVcI)*M=1QtUkpxqr(HBA$l=0cV*E*qNZ#GS9@iFEFFBi z%OUtSz=L0rEAPm5X?JTHfPKOHekfj4o@)eb2X71kDB+IIe)yfc08U?;O(=+2<#~ib zSN&@cd_abd9|9ROQU<(TNN*PY@~ZC+X9!TDp%X9yb#KpZULJWX3}#y=ocE3=Hxj+y_*P@J#A0 z1K54JVfN$Q@{Nr!O-sQ;WQa**c#v6SS8GE}MYtW4wQg=mkZ4 zhCksrRQ8Y{bneqJyz70dR zTaVwYy%@5uN#R6M;K*bd3!PDD2K{|)foCiXCE+FfX+<3vr97DLVQ8Q+ya^VOMjS8y zRHZYgSs548=a;UOo{#cfS5>NNe`t`iS};YWb>z{Iz4VjSX)r@Hq#r9h?acdWia}0n zuiZRP#u@0Ts7yRLkw-CP2hV58U}6TP1k7|)u*$7Xv9Hnguagg7_pXE=GbPP;)rrRO zm9YFF&whub-0`t>g}WnXtfa#iBv$lL|1E5Xhp-m>`=_DcsRPdX@v8ZL^kf=qq!qVR zbK&1hskY`%YTWKTJ~*DIr@~8AX@Bim<9DP8Nl;DoDmFFiPs7(;dK=dQGG;o~eM=@> z)Cy@f1)g=y0Yub<8%U`_s9H-DBh=1zpPVL}#(ZO^>>OA4r3Et8amYNanoP$bb*lOb zxp%%b)F|oZO#|O_c%`xp+%r!}s1ogp4%k$>jyjM@3@;8v9evN@=)EXN*Z>}&j&Da& zG#sY-YFv%&VrXCKb<)QTr!-VUyjo_3R@Eyf4&S%f1rA;GQqE-%sf>$y%(KIo3DT4` zoq%yo_HcLW@T&dKq<0E`5_wZ@F`X+%OrOU^)yX^wMYU6VuM15Q8FS(W7)3*C)nQb!Szr5$N4f->qeM!Z`MyuY#Akuv0t zr2`e7YQuJPlmYGkzVBn$BrpT-Orl*w$;f!_nM&F#<=Q*Z1Xb;Ci)U7~%sUA>@CH)g zNXo2CN_Z~SwF%3uyFJZ(T=J-?4MwTz5-!@GCLY{lifnQ!^ZW#W4eL_{=Q`;ss;66; zNEWd}kK^l!*7Hh=b09#?i)H=@D`GlrK8S(A!A`lRvf}S+J>)mnGDp?5riDWgNXm3L znYIp5Ma^_SBp2@6&t?_l-$n#Ib55V!u?_ok@+5TYF%f#m1%ZL7S6nor%&b1wPnge; zs*kzXBLLiDp4sI*Gf_Qwu+Gm)STyF68o0M|Ae`7VS^&JT$Xx9~F5XZiwjs-Q(>v3x zW5gOME8phcaC{s`{nQ_ENXJ(P7E@7n(okt1db{-J`e=Q`n+$G ziDSzfA7Z5HT`57C*5POVO!J4GBEO&_ow?7iO3cOA;K@R@u<+T}k+~o?aGNu`;EN`u zpTj>(d8`Vr{^IDH8lHx$Qj&D72J?t3p#@6?BY#8YEx);#DduRvzI zuuHisJGgXSr$3zx|H#>EyC;R0ihVSWLh#byPnURlo|nOBg39jFjV9aO?`J5SF>%{F znd-gq2R8#`XpL5m3tpxJp`LQys>2dm%Rx7EM!4~L@kjHH#Zhu$ddR5#s7NWGV6A3M zS=!PZz8l2z`7IlL^Ix=p0|J}a6&@A!LlKz84f4cEQNL}oC-U8Lz8`b z2OZlXEl0trk~~+kG^2|CrK5y|-@>-d!{Q6_?_&y9OnNEK&uT#90ZeDSiDy@Z{uE|f zhbrLjFQlTquuY1d9J7jnQf8;T3=VZa!DQY{>3?#R*>abgu)SPx5FAGynX{B$JUzpT zuNr$u{=kj2-gz+$amHs{mT6Q?6K{5U+?h`)g1+Oz5@PoUEOB-eNrK*}N&a>yhk$wy zDev#k!CbZ}EAq1I!b18foou9WoTgT|a!9D=KsK|4%Nbtqut^yx7kNm<_1_;~Xg}-G zk)Bya{BTa8Qc}gB_OjcQDe{UZP0Z$wU!zA{!LXBc=6pBi^>CgkE^!J`3KgFfoR81O z2Ad}{u}sW!K(#;q-a^loMLZr&+mcd%BO^^D>?X>of6U?&wL|mb&d3mYe_m&r@;0br z9P)-c7fM2wio*v1p7t#_|b{TqwNx+ zLY1?X+SRP)!22a7h-7hmTCpD&b<%f+1^K7o&JV%?w$bQR)BodHOlA4fP;m6>=mvq~ z&yoixe^`n{+$v$kYe zgWm5*&^$(#UpAvs8yD_A=EENN-tEm123(_!0YB5~?B!Glr2d_^T->$?o?J2r9wo4> z-{gvk{awUp(suwv(nsp~&ZzEAVTsG$KZQAV6#Ql>RJ!ZO$0Ei`Wk@5l13_NK`n)|V zbJgLnE0C)4l3kS#0|X)w*tak?jt%cC((Jn$+Bm}#5X;wm!PK~_Den_`EnmC~kgM~N z3?SaYnOOZznA&d(&Ote%Q4iC186s!G$HO7A;}*sY|9Gj9Z;_BL1C+_ue%5#^MH@nt z``t)%hl$&Jf2yC@-@10zj`}`&pW98F{U*Qy2-%wZUV?dNA~Z;HW-0Q#s#GkK{LV)pE&7B|=inL<9qdi+{%)(KQCWY} zv+YPt-ew94|2~VS#lz? zUFwg;pCFBWWkFswM__`zI9M-@V~gk~U2RL}@FczdcYD1uBLB&2jF z%h}`amcS< zUXI6soZ=~(iI9%_Cvv3qLSu7h<&vllq^)VRxJFzbdh|F21*%s>$2x%P;8V=XGwIag z-(CF}M?JJkON@83M4h$vPUjM$=hTS~RT@vMn`z7LRMyeQIkXPc1=}iY@sYYXaQbyX zNB{0Gai)h@VF2DIw%zih(Zy;-%8NAnTh1r{c0l$4l307UxtH`t<9l*;Owps`v!xg4 zJ$U!7<5bJb!V-1CN>BlMmn-c}t?Ld;g1vFFKBzebd$baw)Z}WOoqTz!1?SuswrVX% z9}9d(;9}PZ+1KIB$)>SXn9>t|L?p5Jxz^nWWt#d);s14boDfcU%-vmjY zTLvolo=_tAl;-9xyC%PicJaEq3!Q(&1cd|+Laxm|igX`(&9ObXv84aqRp{JAMb=L- z`C5d;VWYhPG-KEHw$?D@LL$v~k?;;h+AVKWZ1j0mCZJ8Q& z_0N7R#nxHyQrn%lrTZ9#h_)#!y?q<4&!G30B)QKI+{fn4>iKiJo^C&bw){4H}d z0%C0a0|y)OB(A=Q_A=3nSnuuZTNdCCwZ;i>$SDO?9NWEn2aY7GwGf)`p|y?>nWJ5O zSgIeK2D&fAQ+bSO3a7a>&s6r}YfY6;J=SveYXP;-g0!WXIkeAx=A!^K$AFWGzQr{{ z_l?P2!n94kW|PjAmEc@z&Vu!VtIsjakh145A+9|zIuhH*{KY~IA>7i0-B_!FB_J3j z+TmFxZ?ly(kXNG*7rZs+wpJmWm7Axx`R3>jB;HWs)9%mr#Kq4J6HO24!3=N_K4|%3 z^;87ag#EK`6iP8J5|)x3j5k!VbtQCJ{^@d5K7Q6CJ9m>>Pg$21o7Ct?cr1`n*_Oa9 zwb!(n+RMsy1OIF(x5v>tHi-{?E()G(26aDl*ycCY;zTdhkls+snJEt+t00&;>%RSZWz zCB4|_tH@*qH<%>qy^~~;Iz;{mOZ18WY?YA31Dn75Rd1#F@W`>0lah)vP2B4*5V>Es zO?yLT#6YLy>6P|&P&J_q8K1tc;sKnjefUY4eNnr1dRiT7XwRB}T~%r$3zdag4nPJA z?=CVts-{|cizg*!5|nH$a}bz zAfd|6vbg*kkp4nJBo5%a8*h`XK+%}E14@1_B2ccwJUDqAC7<-Z;p zvxr8wAJvN+X|)^Pv*iRWzk4poN^Li(t@N(-;szJosI>4R7dYMYo`oac^||k(6)TV` zx8|Vq`a*3fW$D(PnNRPUA;m$vNip~qa60KQ=#tV=KQ0hxl24WJP>Va)zbEX5KQ_A^ z3T)*_9Af^4Ef1e++@~$4()EJH4J7XK)ma1MA-A?cMp1zed8Sc(!ysJPJ8`i7Q}1*E za>$ZRd~m+qfdS;?|0O|y9Xm4(5j}?&*Dj14iUXXP=WwCH0+)O=hVg z8J<}8l(=vl-tw!XJqO5GVUos`;My4+>Z%&FCU1FIFhAJ3@7n$xV~Y9(17t1XDN74i z9!+3zuPmy8q0>rD^UCX;>{=1qr2UGAbfQnSLqjsY~>aB)B^-XayI#utqL2iD+4~C;}U8iB@Hjg%sM9WJ)%v!CW zWT!V_CuO_QK_eA&3aya$v73u-xO>u0rP1px)iHdUY_C%SulpdX%g5*~!y4cFrkloH z$P#9Z_1L)e4qHm|Uj|_w=0zq)mA-seso1Pi*gj;NoIc~|l$_2mlM_sE6rm5a5fZRN z?|1&U_2XYvO7dOK{Y9SOHK6Tpp713p>&PCcT&O#DN%L(i>;!a?y5l_3j~}O>?9Jd$ zw;n_xIau9YB+L9^TJ0yaJ4S?J4;5AC?K7+Ob0$J#X)bZvAFXCti8T$ot9A`riteev z*w}$=PK4E>v>F;xl#Uzc&|-Dm8#-M)H~^scrTCSPdmqqERiz8gYNoGRO}g;7Hp;O)4~^vwru=2V3EdzAYQ9zK z^%b7pyI|GP&7Eu9IR24#iX*W-&iykt6uTs{;Al3MG33&QdoQfCC})Rdwlf9^r|*@Iz$1=Djt8bZbFr_74EC1F!xR&E)PgvB(NG7uD5tPEwW+N z5D<$xWaoiaiBxAsU|xm;^MumtBHZEo{>+V1R*MH=lhm8rJC*)Ct&^l>Y6Hhns6PWW zmd68ze771Y2S_{TrmV^!lr$x9>8cQN5~{j_$0-qp=mn&gYC)K{vnp6}YtqpeBG&PL zg>7x&H+c!3hTirRdMas>$Fwx&Anaso# z^Xw|0Ck@J`=F)SD8$IaiL~{=37j&fHEBCFS$g~#LtFHHM5dk=KV`ZzC3ua(ZfT!wi~@&a2PfI zh9ljWP=TNaNC*uU(Q6@FYz?vm*Hw`WAMw(iGAwbqv*$ud`s^t^E0db{bUx3gNJrPu zP-S_YX^*||w9MP#bv5Oh;#EKupXYcS?wY4K2G1Keo>Obhd0o3|$FGuTD+|ei&l=Xt z1ysO>qrU`ST-({!m*%#_@Izav+mWvU-f-%|7` zSQC{UV{@x1nS|*1gnuM!95qiC0CJK9VAft%g5rl@O!0)9d=%OeI zxK%jfk=pp2GOamsqL-JT^*33;cpc)yVH-lQ8h&Siy>KDPf7tUj`6G;FJhHzjonTj& zf%K2g;o*F8$*OKd@pyu3S4A$atE%(F={4M0GH|33bBrr*zoow$JP>H><~?+zb?M?b zVgN1Wmj&&7!8jRspGoKH133c~)y=&O0y#uCbNB$8*r`pM=I_b~%X-&Q2)@P|j3N);&!@>ZFGlvMQEeS(e_ql~)J@P}i1*Vu~ zD!-9+D5Sc797;+*>2w$dVwFY35xGg{w-0GWC%BnsJF5`g6h*EKV~}X~Z_p#*G0ls{L=3 zYHhvl-L=;A$of151iyhha zQ4{XN`9sHv4B=-!x6C}NXxFZQ)>4V!544*dIi?Mmjjz5vWOKuyY2uTp_^bf!pn4cM$nxBc37Ayb>UI+d)5HFnr=;{c@8VvX| z7V89<#j9sEV;-lJA3}gpbZ!81v;*LD2jTbxU0(ypxw!@YA>itQ04|!{5=aL?Q41^} z!nlZ*COEk~Iss~K3FuvYpCJm^4*={VAnY6eGUE^&0Js2ZrUwF2nIT~34_S*sGkXV= z7J))QJbdP%JP)!VL?jVlXN8A@S7iiKR~1FKPyjRc1A{aGS^($<(%lM3_v0r5R+{}+ zW?Rxgv;@#>BT(zl$%0!$fM-T0&|fuxX95V))f?6xNE=8OuyzR`3u@ZWO-}Gm-}tBx zV%EPG4!m!0@^0VRSM({_0R{A5e#eq*%$yY9k@!s@W{WRKO<1pcYpQM6~F^{x1m242i*TV zcGf2^R)=hM0nz&Q8UA~Q+9YXlMJZv;_(S{ACnqT>E*}67jSe3WniP)PKQJ%>yYKCL z|F!pD)o|cn`QK8d8Q5o6m%phBfHo%($S=}^m)9TS;qRNt{9g|nOu%1F{^dK@oB+TN z|B?Op?2z5VXZX?I6Vf;4Q5-P1Lg z=MF6D*cvS0pME9XeO;&;pjOZ}&TpMMpwVk5F_OX68mIZezM1LS?-ZO<3aBR#?TP>b zbXK3)1%KLu)({>DSS4p?(67f`w^&2dAO7CerRI81ueOeU-L*XWy=&8NTP@7`;KE}Z z>hbXbXnIF`x+h_uTtD?8;JZWjZ6)da(;OmreM1l~VI5(BdW;_cwK)1QKV51Xd_UPs z_=WuNTa?PLAP_*S`+xPv*8prSe?)=mr5pU`DV7iV!$W^jI5+yFKVy&KOl(vBf^Y!X z_xkb3{bn!p0Bl?S18ZtGzo7bEO@HV< zwmS#-@11Hkf0N&x<2JE>L3J@)KTDI;YZos!P_5uvg1-$;-?l&2fWMKxDF=`A@0(3m zef!pPe`I~H*RTJ3{Nj&)Y6)4(yZ1L67@Rq2p*fx_@x@L4+vne#5y&T>2l6~9D+*O8 zx0SV+vP}VL0H2!0AZORw^L#$R-m%3LdgFaDpgib;uKiB;jEv3LN$+yKCZ0V^^Wx_9 zapOK>-CM>G{0{9z^PqmBHQR%|?08+tA6m#P_4&aEYuH1W<{vc-aCY?Vf57o{h$M)h)j zm``y_Ntrl^7$+)t{*Tx#_X|~HI5VpBs9KAcEyJ?vBs-feM{9y7H}+9b>UqFC#%LMH zf`fdB1a6dSL%IVs4-q&SCEA?R#I6a67p`KB-t1yLUNo;@Ad<%$kE;lJg%bb%7>ge_ z4jJI|pd^O3u64eS1zwN55u0Bb2l>@Sd*_Vf@1*nmat=3^J}&zDEpi(*S;;2ss$S~C z6ui>?H?5@e%r@tBCmw=--0dm69UjltVIt)JNwvfx1;{z5d=&v^d`6infeA9GkE9y5}I2ljeJLNb5=+K!=CN z{4!MQ_%v5%8MsM8y*K$sNu>18V#F%emycJWRTO3ZADK8?jF!L3qct~$ zdzexrPacN%178;lszGVIRk_yGdaHkBZqsuXBAR-+cx)B~AToMZ{7yiw*R_G#Tuy}I zTd?(Y0@n5uP&?3s*qx?!M0tG6+P`f1I{zr}(J_2Q(iLy{UicDSYhdD!$ye(}4FbVA z;0rOVAjZe)Mp@61HE>XfUVJi22P8-6v{u_VO`)4H+OW};3wl+0LxKE&$41ZlOPQwg43I&!-xpC6;iL|TN>X^N@OLUM|9=l9OPs`>+Alo>4~51lkV zkhC#bK>rvws}&}Fz>0pUwn|VXvt%c8kUh8Y5lKH#V?RHIM9{imxF=twCI0&zRml6Dca#4I8onIx&7;YtZt1=Kri?evrsL z%kCRnyc8BcH*2Y+$XwWBsQgloFVUj%n9+PBPH`neFk9(RTF6z}WvJH~ghDE7{O}M8 zY)Ys?(#*MvZ)vS22KHW_n5RHdpu2*o;|8A|ilgS0(jGdEIkJABCkTvxGL}+P;hzIj zQ^XkLrI-;HLL-{~prE*6A*f?6hRv*x&n#45HfKz@G-4L30w zI{k|uwC*6JJ_K{Q2p6D!-bL{@->F99%u6>uMaE>J(|VSO!Rka+4Ggnc6GPW&n8wzs z-nauzLkgbBC*Gex+uo0o+E%OYT_89Wq(OoU7248iw$*SyI(Kxn@CFSd0TtSG*aEzZSqhjG{7oo3Zy&4 z`MvgJcyi7+1n$$qqCr+(@nPBgIO(?331G3H#Sovg2CY!_6*L%{KXzjC+VyQ*bLJgs zxKBCYE?2+`BpkDQVO4LW#wrbtd{4kE4{(canbL3@|CCEN1MkuDN)a=!- z!^;pgVagxaT;EWtX}$cBlG|jMm+wXRHws8o1uzo1CZnRwMhjrZw9X!kK}^u_TB-E) zUVR*dNl~YatZ0Qq0yGR;1_P>7REUYu@$L}>0c6x2k_KQMQIbeo#WGGMZ(L9*WZyNy z!44|@4m+io=q{`U|pkz zy(NKTwX@RbK1bq2ybvI>@@WmVqzCD}v&NBpw1)G>kz>m2svw=~(S0T)3?c=D0sNdl z2S*~C4g3F?bnlqP3rhUQVYOv)(oJ~!I!I1Kq#oPJqNU(6*ahc$?ct>uIuy1^QHvm$ z7$dlfZRzdx)g%kw7fzGc;eW7}!f+%+;3YL;ht)8B#Cgw47atfJ3GGQ_-k#@na3r>Z zOV8kCQxy2RIeUFOIRz4it#Yr#BBd*svA0-HiCC5Y)NIo_^vig9vp6Y{`Ve8RI_UU8 z69_CS5V5>nWPwv#997bIw4<5TTW{^$DtFu&3b!hwmi+J5JHFrqmw}EX z1%2f^+@2Ya-(?x@nwJ5`CyuxxeE`SrFTKqz+$9Lf=w!ci%7yPTYkM69zFC7!l9}YV z3!2TwHNGY0_|D1CnwC-Sc=%PD{_sbI^BjkR*HERn)qd*M{bl9Uj2`$AZK5n<0uD`& zc0trK&+AJ@cu0iyRA}R1Ynl9~mUZS^G{N#oD0N0MG(d_VIBaNfOoq19 zjRz+CS=EmmxL03o335I6>hy{o-ScVdkUQ!m5kBZztek@`p=>jpHHMk4Qe}DJ^9$4s zBHEW7LeK*<5rAm&KAmnp`PWuwF$5I9(itjbzVviTI$dXB!vh{oxlEY|< zn~am0og7-hXi!@I%tep3sc}#VJ{Ef9nk6*6NCfQeh{|}Hvr#mB$#eL&p!>sYx;#4R zZKArgoq?EX@?mU4_!*4S>yaGh%UDh*j7y7PmRApA$wzlxHtWUN&x>SoN&4InTQtTM zSBoG=wJqJbM%)?2gie@p&fpc$$ypSdA2Ml(Mh5g{xW3{qbmMDEx6XZ9#G8ia@ODiK z3ohyysQfn@U$y0+Gg;2=C@w%AF3k*!4rjz#n=UR+mE%we@tI;Y-OtA~&Scbx@{8nTayMl-sM@ zr2h5i@d%piLK*;W&TLD|7m>upO=HKi`0!2WGC4bEWc_8dL0*t7(LOoG+SXhs*nj@8 z_KbnSlx@-)4l~D^cm~2arsT7%M9jhKqe`W_z|@OE*Y5{m`~B+~>~+*G5opA_-zDm% z8*a}fO=YW~xwUOxjW>+(BgU)sM`))}OdFSY_D=dv`6S^uZ(}_)^b-EQh2(m6QEU8?kW`+!2cE9c| zjippr@@duMRKhCwpes21Ec5OTek_)wom`j$A}xnyTr$A3D~$w-c8+F|3j-DB>Ctj!&%O6?bB%kr!5M2JGZ5eKv zMfWp|Hhf>T>losend-CE^+9>Bc;ji_@>s2iA1`|Ib#wx#*kZ%cupio8sL>#t`VgBj zJ~y6fDT%`e-f^7;@wY`rOxV>Z7tcKrTJxX_VSd%^@e|{<@c^u>qw`qAVpr?v^{bf2VBP&T-^0ucCVwAGG6( zj{2i(f0PG6b{1>;U?IDb{9H0G?(Y)+z z-EIwcE#9d0uMK6NVz0g0)Ali4gsgECU^DQBYo>mjlI^9D`xkDr+kF7_LCjmpx`4QG zv*G4->430gFyV4wak%w}1|&WmJ(k|$>B~e^$R#aw>Z`u^d1hJha1nsj;akemc3uZX zVA43cP-C9fXu`vC>BvDobwUNM`GuRzClQmUUI1`^$aeg_o7&&P4Cu`iFhN{_4^Ajm zBypr~Q0GU7e3Ac_TO&Tl8`PCqeZI*A1tXC1GRswZAG15w+abVz;>SG&sQl*v&d%(t zNf`X;kabx&?HzH*);8Nvy$?-GNa>zPYKW)mOzUg$g-fcJm9Z0`tbNXE6P7IR(sYYl!`AdJCMtFs<0=ef# zH)PD7>y%d(9#_XuOYp1{`Ho@oyLkF@K3*)t+)4DP;tD-pXj|)w4>REOMD6TW19eMb zrnXm|Sc9@;k>t!U6=2_|3s!@CV-o3E;KhrV5$++UVTnvJ=D$3m)JKUh2C=4Rc2EOA zhfBl4#z?up_DU)&N9j@n!TT9|g-fC$t_76BPS=KImmssHj8kAj5{CuB`(3b&8CWudDDGo5fBUb$=e3OV!6 zJq4u!qp;&g+f*+>X!Dt|X;!hVZ!o+2=Gl%*O=i1Nx@K_OEJh5X-cXKDFv&rz9!2!! z80au1E)fN1QD;za2GDObn;y46^OYghl|g^p;_+QkrI!wNr9F}3rdu#ne*y9NYGPF%nPx}+Ve6*LfIK+G6CXomItb0nE_T& zI>h$i;E{0N)u8dMvMreB^b@>TM&{DGCNqUbaKUwxVUek7<8JO*3FXOpe(^L%-Cja$ z5z$17ClbxZ(vMx{^6&PBOL5Ux>X<`5PWPufZK~8B9MOKt5EWvdv+oJvRt;RBpkBjb z5bT|=4D8FXP)N1YGRp_2f#UXpj=Z?gP$2oP8{w18!-MFAAW!Q3h&#>Ysg385F1#51 z+3^$n9n&%|cf@Kizil*0VM`NGqwxH3DZJ4ZjW@b-(L<@Mir-M+7`#?8sZ6_oKXGqW zWbmIlmcf(sz29fCNxqTr_lDr9*sLVIHQAXL^_WO`hQ(G)asaH6&{piClCohtYIb50 zW#+@;D;w{{M&)ww`nJUK+Ve>QiLHsks;m6%Y54P@OzB+fn+Tj=bp6tprqRF>0A7%! zIJ7ZQ8GOz06ysXf-h+**Vx7zkdya(u{-;fm@NBz_J2wl&KAs4Do~hIP%uw|_I4q`* zOje(@=7Hc_Er<^I!q$)}VVG%*xS$ZpL+pqZ{1@p~S%@<_B+N$2n~ZPYLQWx@xwBA$9BUH?A|tbn@hxhu{n>A zGhwB<04N%}#>2^8kKq*B3S)f{=;^dhCj6*{59L8;xn6t<5L{9$Ugu+jA-@5xYllVK z;V54eOm55H({tP#h8kWm*CXd}HvHSiEQ_is9(X}hb_Xen6w-d#P3vU#(D(sdeWDxp zSePL|NE_WuuxGB->StGa7*V!y@S|=6Qd>D6e;H+j++JYvK3*-|rN3NKxDz0vF_ZHr zTu`jdk;4)Sl?I3JExFahvI{e;M;D+^STiYL16I3q2RrUawHfi;kXfo=N5l;ivd}nC zAQrR>aw!K9XS(KhS3KgmJCv{6@Y=zK(%kzB44o5E&UAF{8|Ugtlt*=S*@GrkWF}zE zPr8hhF4i^E@3$FyM>9NDfUnn45sU1BrjsZrW#Px^M4sDN`<;JlzT}Mon3vpS!1#ZByGcPQ$p#NKcH}}*El2J zJdZxUu+g>)@@nwTJ#1m-L#xKXx-=%4%p+l(7s^3wd*J_j1h_vGFjTph81p&1 z5k)Om2K_KK1;Q$}2@ReoeCG8vmT5M#8rn2)1R}~b!;;*hDi&=ywNn$#f4r}7hB=+A9>N7bItI^p_Ne7Ty;z==F0T1BY&izo$8IKF59&$X-$!#Ju{LBoC5TG zT4)2b#0{o{EMjwvE&xMHPQfWafu=AEb|9s&{GG=a^2d-Ql!*49`%;M1&Evh=5-YKD z0O=@5L>H$9h!RPJBrj%PV)$Vyf>8BfWDB&bV$4Scy0N0 zvkkpp>^ys9l5edIFh4N@(MsYJTq6|JEgF}v+~fJg(O5#6q%6p`cksSdj!q+$^`2xT zX1*M{SMFdJ2NH)@Wk%%F2}k(Y z*AL5Jg$E0}ZDi55ZS*nG&m$4)g!c%njNpV4*+Jn$()&|#b)9SDAmV!!xqb3%7aGNC zwVN2F&k1GRh6#un%tP72n7(01rqbFmbPGy?#U^MWL7*eFY&L?-5eSN(>r^=Pu6T>l z$A`0gTpYlpb80QPpXu`)iEpc*4Wzj>%+&u%7KAI0dc zpNn1pephRYkXb%1u~)3pDIF9?GRJvi{?@0F7XkTBq!*hLLf4=a@p&`@ay^QQ#f5NEV z$W0BB$7PGPMvE$Urg$xterpt2Lrl|=`aQ%umNt!!$c5EbYGih6V6`Y*V$inSX7aEk zZE!j}>-u2y@kd1OVOJa>$5h%e@Hn^@S~3&uqC?r0w9yzO8u2bnz>VLm>5p^Xs1{_x zJGQKvgI4B5PX(xFp8W@F58M6Q3Jp~F>s_Hg4S~I;7ugq74Yvg1*JBPWiaIWt=5do&4F2EH z8DXZGzMxMpa0;-XAoOkHK5V;FqF&m^&t_0PoFChQ zt|PV{-CE7my38DL=9-5=EEddh$ynw99avGOzZSAw9_G@?rGQjn5VIOY^3-hJc&dpU zKgaMAFMFdHKT}X@+ASP%{J(k=%lCNpDt+Fy^ClQugL@OX#mlHB?(lc8S+siEpSQb4 zJ(ty$^r$@u5eEQY7Tkq60=#YL_I`E&0U zIGmx$W{uHek(a%6KjBU9D;6&82liV*Rwwbuku=c-FdMB`J>NG}IHq^K`e#G3n>%k> z1q7g>C7EY}%qkI7C&gEUSju6tT}U{7%SuM5T2igy_+*TZCHA4c^- zU%7-im~8lcc6^moa4_Z?A{Jq~i7oYWRaZspDbd(6XnKW|Juy0D`tyg0RS-&zhva9;V-J*U`Jv6L-Z zoccfL$sB9Q1@YSA%)cG=cvv4*qy@Bt6Gx6spUz`CR+!m<;SJ7TzUrsP(1Ee~pD`~( z1$};~V(J{{dg}x%#uJ zw7wJO)#{F&^LC3Ouk-mniCjW^lOuTM(ZJYg{UpQbf5X@bV@=7;A)`&OhT@r%)QpSD zY|g=nP{8aqZW@2u><9@CIqMGlls@gL;4VPdj&I( z7mP&NT2Mv`magqJzH5B~hA%SC6d@kB-GO2Uw^bu*)D~P%jx7>< zM_OAw9GZH}eeLSqKEmJ<((dXM*VHG()9lx8lMs*?&T$G<53R~BW6@afzAFg+^ zc1gp(X1DwUSuhcc5wLhew2eE`>o#`97}Rxrhj9-b+yhxz3^8D(L$~QNZN$_D$}V>e zG>+ENPvS6@OK2^lacY_F6kCke7c8L;AK+$4Ve@Oob<`jE$@QZzH*F#KXfauXL~Qt# zz)Qut_dr(&VYq9bidKnO;VsvOSDAjndHyc7F_g<6wW7tm%ppBPb}y28~{md^ARI|R*f8MpFjG_;k#^W(nf*= z@7|(y;4bEI7U)Gq$O&z5fiToB_ljLj?GQM;#rbh{Bkzil$rm4J9lhOSYj!QXFrJG5 zqPErs!t^St zxyAz~{uBr;;jnB|l*h4om^)ZEvl%n*k_D7Gr2Z~iA#JnT9`!Jln`qTK%(s~)$#K;l z`>MY6Fo;U}>UGdk6LWRDKDnD4ja(2q$<0`AR`}>jxLgoP<{f>matF#`0v2x-w%7P~@ zyJHr$3aM?Z2ZcD#QA)er+V}Y@UH3ZUx<|kRy$UYiK#ix)4nS?_Yr#kRV=ElA9s_J{Js+NCX_Boq)k4}D=?b^&VTmzmqQ`M-zC86Gpu zZwY>XZbL{DvJE?}zu6-&e2CqXOm`@}*}rnJVo7ISA!MCQUCprnsPFgLU33AXF#{Y& zXkQ2c^k3520s!0G$xd0}8?M>YzT0Ew!Tqm}Prixrak~{g-H$qbB+RxEV#_x)?DP2w zw9cc>yXF~Byxv(%(RO7KEo}7fX$BmJ6vIsRbPLy4YEYPg)$dwrebZyEIdssCxpPxi zQ$x;Gi0J4&R8(4J zfa5Q`j|#?V-Rq5dTu!f+k9PU73olRMJ9q#6vmQLP`hpFR=}nL$0Fgq1GBOdaCh0y~ z#JCv&G^h@2`bi-#M7n0rlErY<1GayXHpBekLf$o%Vmm*jSyE@6A#Jbell^l)Hoe`+ z6U^CgId*iU!D4_kp~ICT?gy4XxJBeEa)@?d6LVa@ro>?`c8;?6p&!0)CA@6G;`e`0 z($!8+QV^a3C3rH$elNd?zXf;piB7d|Vmp|SKUC8tAvmM1S?_kcI(@}H-p&{Ma`mym z-p({DgTAxr*C#{4RmTCzZTYR~@8x8UY-5S&QbOY?6Zbj7)b8?Ul*;#IHGRwa8+&;` z_d6Kc?eA11y~L&hK`*tmwu_0VayXW1q@<+f9>tPg?-Jxp`(6I-56?{_eDR68nAL%w zB=q*D3U|bMM8XgpaY!z?fRl#I%PLb`pWPdqY@yY~Uo8q=HRQ9oWo8ZvK4hMz(=MZW zJ1RHM_UdulOTx)>yqndonelIw&Hcenv9ST<%?PA``ESKP!_G_WOw&NAspZ>Fhjk^>=?&$uYQF&xprIVDZ@${{g zFXQ=%Jduzw=-UMB8hKrN^JRl^>q*uq*Bn3#5M32Fg-?!2=cB}^W=x86_jrP>2tNpJ zm}9BdUxq%!xj5HiG;p`aNQ1I1iTe-u*H0SONCyOg|LDLv8Jj!3tr>D`=^Ku^CV@!m z*5N3hGD+LX<7ml+dSErI~{!_C>U9bwqco==~8lEF|4i7GcWCQ zhU|(}I*-kl*p(r_QU1>%gQj&p8~ov?uUWi>F5}DJ+&6AChaQUFrC0Pla6;ZXc=)4P zdf_^P)ERljE+_C_n|;}`e1lEqP(ZU)ayK=r;LEmw?+li$MNoT$2+Vq{u`$^9sn9%e z9%=J(YKWM$jKMq<9+{9lY<9TOAxmi;XyGZBhl*XQoGSQ#AXHU^I>;-jtrYM#mOk8)K zsWf_kwDYoiirchlHbfZnJxO1uextyq$W2#K@_TKI3WJ6a0FQc3RX`bQwP9YDUgQ*A z+cQP+ck9L_mSS46;POD;Re4V;3)QPOEm&csfy;neEgadn-sNR1)sNRrU^FdNt79fy z+_AJ@2WS<^_&e_u{Hui6Ukr=So@}_lL*t8@T%O@S1WVgL3-rg+de`p1N$j~vJJGH*C%@4KKt!MP?6?Qq zBv6N9_{i{45l89P(A3pVIA)Yz-`Ta=^AeJnH`;Hf|2lz9YS$ZBCN{UPxV;?*_LRA3 zefQCA2uPT{CC5?@dDNU0Vhf&qGRI`&R^aBJ)&469Hzkoue;4~Qip%J- zXyxEQTuTr?50s%{Os}adB74uN&aD(w(?gk_|~&_jIbNfJead_vf4y8fA;r4 ze_h3XMWZ9?{nn>mUu)uN61fCi?!)Hy%oBk4QOkfixc-~CP%&7316vwMhpLPX|AieNqK1K*qj zQRy~X%eD(2_?*1H^=$KEgIA2r5W*W&RG}raPPDZO0lcRCLgGxa(T}{)$-DAFy_w&- z;^!0L0B|F@tFSXBZu&kyi;RD~*~V%XS?~lO+l$DYqfk=1b#(Q$^RMAT`3eT{B@f#& ztxAa?RYHY*gyMJfG$rivW?Rr=zL9~b#L^|UP~)iTC^8&7sNH6Cfa|pU1IU33lD^|G z&bNn3ci8fOF?J3?q5w-4ZQHhO+qP}nwrzL6HeTDdZQHi(d4Dkxe=&>MR76!pEoz&Y z=bq^%%0x+2x0&P&xYgtZKF&1Rk$-v)EQcYyPmv2JJFIgMPu_^;8YPmj9;=XEgxrq0 z2uDA|elc;e^=%ElYh0GzqKiR{J#)Kf@zFU zzP;Tpn3UpS-IC->;zemQ*)UG<`P*EW`Yo9kC^cwe{P0!t=zq#NL^>v3)#^q!e16OB zSN+|(kd&fbmj!b;zs%D2QxswwbRa}X-2>&w|0(C81yQnaMaSM4$wxvR=-da4g+!Ep zns%d-Qgg0IQD&uTbegm<=!Xv+-R7WV)H9uzV2#%Xq$IcVn%H>>z--{rY*I3R!NgcJZ{**4qf0{J!`Oma$ z)-JC!cC5qA#>|jC`r8q+S(JL0eB(+CE`+(BsT`5*Z3U!<9VyhYzV_uu5Yfdv{SmEs z5BO7!G_C(A5JnyJ4h-E?lnT>pcHs1NTEKJu!8kD1S9>GLB8#yDRim*P>Jgvhnm~ zke_2`r5o-AXvQU%uap_?RahS#_UcBQw78D+%0xjyjDZLbdGLR`AOPm zNV8-f6QW|9M<}ksZ;`R4a~sAe2s8vpo%az4CbFu|1g)*DUjwQk5Vk zoJ209lyG)NwrCXL6LVm&IH^(s6D?_)d>u!kA*1x8)17n(F+?GObS0?rg&sbrlf)S? za}u{e9cc2!84x|n4*lm9uF8Xd&W=m7k`90`h)5I)M-`>qY z-TSwyHyQI}R`+70KP&7xhX-rp5fMZO7`iMo6gbS6FY0}8Q*kFj+~B>wQ{?QEf5A7vr2ql%ft=axS1u^ zj%PQLF?;R`l00nKhL~hk7F8{SY51{K>>U1+wLCa#%4^nJ-TCkC8132@);2&a4QU4bP#rA(-P)ux09RGzuaj9s~b1`_`;J-sVz%l)pKgoHG<;khR z(ah0}sn`0P4L`?VI%bmI%#aB=xN|$hnCG=`JDQw;vi+{FCf}v)Y%c`v-nYL*&eYz_ zkG%^F&aMW_b*)Y=pc6fxqhK^bAGD1C9RO|XYin;DoB#si0CR&&Nze2^uJYh}yHYQ` zLwh(r-M9j90L~6r0{Ya>1aI(3t&R2A2zv)dP*2Z4%Kt#9$Q)b)Gt&zo20$&1b>ir+#EJu!h#>FWVpYXw7C6lBEfR5e4-@w?cX_T+%@83tLFW;lz-J{>*<6qaeUwaXynwA#- z%kv-OyWb-Amd1wXuTdbL=^DDdX$6qL*TJ9POe?_O#+fJqW@`1$-^x^1Mlkz`jPB6u z-q0qew10oeEZ1ny(E8zJ{IvyM>#R=YRRBG*d0zDeHZU_c{^aMnoA|R4aEoH@(DLeSW&79X4iZg6#EauqoQmP-$3XBWWE?IAuLfaf327LYoOcLc--1Ymv& z%>d3x_`R%zX9rNZreF9=fCo_dWKLlxz`W@SM_0Wr$p}Wrx)JXj!X5d!53o%vmMSlR?SotMp@bdbf%jbWWmEU4I z0BX;>5IE5z_8@VhkN?iBfB!wm@kiv((0yeG61V-LH#!CAWOQR|26A6pfqC16x|%(L zr*-b0bej*+zu*c+YLI&RH=)PMJXxzGpYAX@ZCWMAu~97E$#`b~9k{3fk$ z{3K?&tE$iZhUV;d%nY=#{e=j^^?|Jafy3m{t?K(FJbstHJ%id=-xcp$X8ZL8!KrCa z-NfhnQ3}@iJp#zm_XelH(-y-`x_4KY8?9P z3BTgEokmtSr_a>w{gW4X_wVnpzrQ6Q5N|+5s!%y?h;=9fUHab|TElDDA0EG{rtK~G|Onfq;7ST;5A5vpId zWC#)X9p}$skm^DB4y_aZzM=& zYOm56_oF8zD6~lu#n{;rn0B};$GC#q8-YQCL0fe{AQC)AN%PIhem`Qbf8CgB_6d%BkS&8jczp8jMTy{lGHfi?2!(DFmurdxVj z*L{dtFXQuD+0JEEQQjV`%T>f%Tz6$ZN&8BX-#_SVFql`Rbmh_LSrFDzy~!2bMji>LXWcZrkCFi5|2;5=Up(1($p>z zWyvzN>S3fw6qJ1@PJuzi5|sl|5mFFhA_4(oqy%!N7eD1m`?8eGf=kKs{W%=mPB-qg zrf_%2}pd57| zie08GFUss(LwgZHA0O|#m9_RPEL-&adAkbfes5L+s~{Sm(ogEqc}C$p03F0OQR49n zGBRj&=;hu!n>aS2ofx+}xk91c{ZW{{Y&N=b<(Zaq62YGzYWU-J&rBe-K&%kn;#zif zlfkVs@l=%1?Fv5X_KCCAMLAv{TIJ++1XFb4+jbY1Id#)#F~9UbHy0>57w# ztozwx;;xkXbKp#x|L1I_4Sx-cL2#SWyhC)|VT@e5wn?%+wZI}_VrNmQ9I<;u8&gXd zFus>;*QwSNt!yoF8jkVAf-c6RI`(MPJmVlS91+72tE`C7w6cw`o3Ns0=bW!5VzF0Q zb($iXA|-&a?7;7&v;*z4ewc!Z!cWMzj!VLy21}n>L8er+a~1>_?4D?cUN=l=>EuJlK?4;DzXj)2-6-Nv@wyK(*eJScUgtq3XUC-*krIkkp|_^M+=Nq?s2ut-_l zrCs!BktVa61qGVN96Wzm&x=V_^$Ofmq8vfoVC_5@$xEY_K0-$?&k&{VLwhU6d`ja1 zTzMh{05WN%;Zi!nAowK}GBi--(B7vLu1g=hT2=JrUk3?@DPu1NlmkysId-mLnf`8Tz80y|0+Qz_p z6aS`49lXgE^nP!e-!9{eHFH1;o83eX@j>^OEjZQcRmuJdXKKRjSn5ZVMzD;ILI(Aj z2hGYe26JH?8Q>R2BY=3Y^H8Vcs4{-pv0PX*Ft)|rh^cY{1I;Tb4~EJmx$qGqV zD;H40VKSA#FYSvhxN$Dlyg}hJQR!&q_2k&qir9k_)B*`bKGmZM=}ToB^sW3Mn7HyG z@DA-WzEF8WC1qKWM2$oId&$IwPH&b{%EGnnGCMf}W+e$=C9h6mTD&^Oh9%KH$}nF# zpz<0zB;94eFVQ5qsvqN1edwpW#DRa7*d=a5gyc;i!x@+b^3DZQyNK%Km&O^7@Ay~G zgiy~OI=CBUy7r#Nl}4RZD6;r8e>b=bhWmiQ@ZGYW+q{sv=ZHxKIBM44iLRge)u3CL zQ04E;FCZ1*uVjD>-^KN6R=7^JdM4xb&>l9%#V`Y)PqLw3c#an(aHGpTWP>NCDwhNv zubFEYz7EQt`Ndo=1hJ+l*jbmku~Z0Eele8#N!6h;u&KkZWy)zuKE;6ufLkTKrs&PLGnCy$V1fwbfNXI4RVZj4d*!W!+u;AT5xU znh-i)Nop15r@LZ=A$XZ2!%Z+QRtwWxg$k^`KIy z_4lMFmy9JU=;;&*PLia1Qo=pAQ4t<*C!;gVz*%!wQ7oOa-6kK4+J9&GH9;lU``3g6wK zQ=M4UWtM2x@g7kIHXjXV#`zdjB;&gF-$<<mJfQrcj$Yw#QRCFIG^j*rnXI5H>)~qGYc5&8%eRSh?4WCaD3+YU7m&IT&B-K=8Eed6AMYAxh8|@ zPPL=;y2uF6NKAKqFc09gc^T0y6Hj0$bp>sdhaE=Kval>EDU|6Cgf5!tz=O87H%;Kr<~NwK;3@DFo^O;z=qN10j54O>_#$P;M2%-T%uX(I zg4)Bg03xCO#9;QeB3VDb`l z=QW(!b!scJIJdGQCULNGO#^brvRwFv6lJK;E*B%TQ-&gZv=Zj;X58>rg*UU0fwDLr zc@ZX({?4T0gkU*ppsBQsBZ1HNeW8P5UYV|ba7UNlFWtNbq@Da42f*Yx_Nvf8HpPCo zrnsh*`$3>KD!Ux+lA|>lJ3{MiPCJ!xa(O}&>Qbfidz2dv{<-wWRZ5O-ivP!i_V@%< z=po;?3}&8Gb4cz*W*r&8^0WfEkNN#@t>VJRL3i*)O$*=?(%6K>y}?zn0l z7ChFD@6iuv-Ck8^auD(YzMziyHV`o?m>p)#2)aD4`Zk9v5f1}Trw`Hu4!iLRQD>R$ z%dt@BSi(GMB5!)Io(0b1FqYzx^r5<>KU}O7yexN3Iyb zmDJ36v7$px&6dzceravbOznj5F~m%tzMr>m8bYtP@~I&C(Y6K9aqWqS6%OJfnO;N6 z@e{26RGP>2yzZRg8{nxj*)>~{7sOon>j?ekA$qTh_!rNX1P}q_D5~WZ59_=Ycs~+Q zr2aT)asmrq2!Gx5@`TH-r;qx~F7CL>YH2+-c$$`xgni}|l@p)`V#rs{1KdHqTchzF zEn;cBM)tq_PPo--w68*}$SH}6Ej7m##O_^cI9ap$NImkB28mnKU+pa$)z`Y%G{JGH z8z008nrdGB-&SXRQ_q>g0;J{w3;qmIyop_X?oTHlq9;Fkv0FJ3_bZ^`3@OyW_%Ldx)dP==24V8TJwaZdi&1K`&KIv;D->V6-WT0PjavrravN z=Ds?Rn$#pWqSni3b-mL-2z8AXZZ_0JCrWxfy*y%yh8*Pipn&uhE1AI4C84v4Sw zYzf0P)fDpu*iDi>V4Z9B?Ia##`>lu$Z90PfOtZwD_Iwz}xxnLdK)0`{fTbr{7+ zgN^%?k~^2w5}jl>sEp&Gb(m7{!m1s4hWd5J*m^03c_AY&yCP~M*==?ya~2|Vn8}t% zdTxXvpM73&1U;9se6v{*{ur|9qKm()qU7wijo+uSS9Z`d{is602bO^i!?Wv`vhavsQd$YktL!+ z0usWsV>|S@2!UIa1We2+d|x5UGIIHiAX zn%VTU7{3)MCYtANNA4ouhpnPfxV`cZ27s7;PF}iFCWpNiClvED;`v5=!b_To!_BJ? zkX-CM>WT&oO%PtRLoZ-RnY`+4mR=*ao*FftL1lwwLF+MyO!Xv3G|)6>LdpR)2nQ*N z(Jqy7Oq(K<-w<{MGV(t9MK&yRTpl6D!-%Jc0*-C8O_%RsWu5))NAVf4AmOT1OUcd} z8L@P(VZ^v2Wb>r0C(S3LbkXhI*Pcx4`IB<$t6h7(LD=T`w$&rpPR8n&YsMb%1ILi* z!<@AcFiPt6JCzvjlDeDj~rDuVO5<7NQ=A>@`0;$O}~jIWix$oCqxHs0nvteeQc+-CYa5dtCW zfL){~H!xsdW}1<;j5}Atv;{_q<=7qHuAO)KkU1%bXMYhBBCnL|J>13|dxnqhwXYrQ zGYopX)jBFk$%|ao&jdw7w~PlWnoDH3g65nmA62p$7~Ll=DBH+A2U*amfPYz8AdEZi zvzqksJ;&ntw%8$ysdVwCpY2WRAr=<(`HhGCkY!sUl`;05v)<#P_nXpIBy-W8qKeFT?Bc}) z`0{^ClGdME_CC%E$1Bf-xfn;IcYUaA+hwT zQY#1iDlXvTJN}}EBn~M^%w${e&p+b~l9bwNZG^#wKa(hte&_$qAIe8Z5HXK?NEXX{ zQ-CW+@T|yEJWMGxjZ|Y&YoYcPOn0*rbM|d7(wzsSoAvnJ$nzU6IVfE}GNW$buGPv~ z8C{H*&DO?b0U24)FVc4F$!Ls@n#ANO>6PsgYs4FIySx&GuQ~WPz`U;!( zc+&{q-;Gtk=Ur7ZI;YaBQA>~U!ia6O`eZ~lT@X`1F`Njqeeku$jUhfQ_?(=JE8uLP z^HML4))eA;RO>LZWLR6J-YoUpPdB#3z2NX=GELHB=Ft`V%;Q4VrR<#_BFZQ0$||4n z)oQ+kXxjX#TI3PG`7C}Rivrc+{?2pjL^oG*uaa6{ZaU~I6tU(+< z{40ZA^sC?DzRo(Sos2cwUYe6G7QfrDRZ&2td2Eza<0@E4QU7Ofnnu|kjQr=rb4s3A zs|pPjKLOBN6V_Hd=d&O-nV@krYH!8RXH=TVou^n5n^)pRvUL;{_?rRfXRD zDJB5H`g9z{R7FGbmIxmm_{0;8cQfamHDH=ZXFC4W!ic24k9cQ`Y+Z^!u8Xt?nDWgw zSFxvw6k6qbW5W<-pi<682EplBp}2hm#!GV{z4l~`i@9CF{rfr-O^m0Bt1&9p>eTNo zV}wptDH4Je24yHo%P6tUrCLqwY9~7hurAo%8tv*UO0f-jvWi{@TY}mQ2Y*`d^^%)m zYS50akZ(RaQt@RYiH)j)WD6ckXl2|=I8qiB@M*r&!f~-kpFJdr@o7&9z^Sv+T@<9V zDKOa)MW4<^#+MiH492?}VW#I&2YGxPV|Yd;Y`|GT*&>iI+*Lx7-p{)+Ar_Mc+7juI zNDVhO*_zYGEk!p(WM4AU(&Q6jsIGA-qgX#z-l>(?beH#Xx(#58Q4Dk*TS-q>_67sC z0ViQ9XW%Gztnk>za^f&gyPPLq8vp@m^IY6MBFm$3=Qf|f6G-AH%YS;7?`dmL2hBLn zZn>uL+TH)LrD9xxdvKRBv;Il<5jUISgj~}Y!YpsaTWxlhd4E5xO<~KrYgk2;whpM7 z^B2dp?*0|GXH-FzE4d^43oZW86jI%ol2YAL*vPnDT4vhiQfb^}Qdt_}Rj7(GH_=MM zHHjIg-w`*uR#77_!(lI>=8(N1nnBK+?xG!FePuijJ<8)!ZhZ5czn3iuAF@-1>L?n| zaZg__WP3P1FlTE&U}zn*lC;_Hh2Gz(x-J6;>oC0DPV?A_q0{zvBBSl{=V$YD zjq1&nCuWr+7D>ZcF-!jQ7V;XwfW!X}8EVF2D2e76IXZMp;$(^SvdDnQt&pbwd`T~E z+FpONhU1oGGgz`&=_j4L{A~6?f#D z6O-`wKNkGW6SP5SDc9#;Z;LrOMm8Z|(0PInim3rq1zV(}sZDb_*(YU~9&npq+v|Ju z{0R`wuf-^f7c`JPo!yEGlEcE79_CBa_ksHKHkBp%tR(C40(>OnQ65>$)QteTGdo14tSO4Qr@9a${kuZ#b72b)&JsUX2o9UcSrqp$|*UH z0LERXRDaR)DdRIg&6)xK32MzWwVU`2z<+B#b<-OD72_N&7g~K(o68Tu5m~aSLLy#y zD^KH4Qc(G~5bwMz;tHy@71yYx*bKGTaOkpHn7Pe7P7yLdY@q)@)d_24;p|=5vo5B& ztyV@lYhYq(E^>$N)Ux`Rz{99vb5&7Omv|exdd7?wm~1~GT(NxSQpE@9z16YW_>y2#2!y|?hCW!wM}j)`9I7^LhnYZz^D;?6 zjh4zfA|(u>UxooVJBFzA<)yzX(RwaXP|6A+Pr)jk-J&TS;9;o!*SfWhLHY1O7oMaO z-PUu}`HkOrCL513e8w0xd>65uZkD8Iy(I=EEPsDk>NaNG8WmQX2Gj(TT?wJ|7(=BHpd1j zZOr)%!=;GZ)`>&h0#C7W%hmuF&wth7qc!rEaK>t^k$d*Qial{yLqVeyGY-SW(c|Al zM|KhdSi$+2O`RjV{8l#8rOxk{s*Rx7gr0V%-?&Z9oO$i*;0dy4RAo=7+;V^@j(R>L z>5vxe$^-bZ#o)NBOz2B$?$I*9NEr+H8+BW$fuDXM5`%U}@;F>W z&H|FftW{>(pV9?^lS-OJ39cP7M*z8TN`;=bqDwH z%i8WCLw-&H_23G{Pl;^q{n)ty4PA)U*hy#h4>-XmVw}$mQFp~fk7WJW-V+7e|X?=zOn1`FF7B{TH$_@GuZZq9@4zd~=UFEo^i@6q{- z5(Ik^U_+kUSQ9BY~MJ zz@sKT`OQOzo(o{vpHHa_F%X2jnjX6+F5&~Y0)*7z>?9sNDs*=x-c;tVT1YL<#unkD z42`7aHy9{&p0@kw%4}^qrSEVIo(Mc&WtnzAb^>J-q{c)P#-6~PelsnBTu9pp&o1RS+;V(6lW>$&;h^Qxx7t5WU=*}{_&;0>~$u{K5q^n@9ZCr%#PQ; ztZs@xiYaRZl$LHvj%=aUoBp`4f;-Q%D~6MYM^_Ip8|OwN2bAy5MtP*b$*SPOwGTgX z&+}EjU1f({K2XU0okk2N47sCSdi#KqZqpc8*>aZu>mkCD!*y#iX+BD<`d6;m;UoK_ z1Xf83ZC+O>B9X>PBK|P`8i%kIk9za#v#9_eX31^32e>cgH$Aj(zia3Ir^lG$}#e_sK+|53nkU#=P0kplI)F}cbpGhqNCT_pJaOy;SZ@uoq+C^Q6pK#%&O zWR`@xj!jJZMm^OmYc&JkM|_2y3>%ix))|x67<(kJlV;#Xh0bvtvw%GK83Sp6Pi~Bw`qCjY~8!ggzD-eI2zULi(Vt%Ch>Z(DOLO zmz*pK-|pA9y7^857tqtqK0W#>4NqY-y#)2NalMLJ}R^v^;5yZ|T@!HEeN zlkFM?8vsgQT0<;%5ntCVph=A@^1*lCU`RO_S$_QcU#E2KU+|TP?uf|`qQ&xfpyHL> zr20{z;gX~n4vQc&We0h}YTo9suJw|>ROhM)i%sB1V-zK7W)T|B7_6H0mtH5r-*SN( zjA!8tmHgCp7RC(Sob~heroGUb$kqIoy|&YXJZWp&N?Zud=LdX}IF0$HQ12Yd_V=K7 zVRFXI;d1!Tf;!Gr*|*@=$$+W0y)-1~o=bc&)Eg^Ugmy`+qmMh=XYS3XxBoy}s*zKX zB!K5SM~>^S+E)r4op}p;W0eRXICKzAIG!?UZtT;vkEf7@uj!*Zf4^rL4`EBBF^3D9 z6?4Ornh9QHEetIH+uCg+Bn}tN2F^X#!>ITGNBbS~vy!xc_w1mTN-Z7gY(-7q@ZKU9nA#pT*`y zdXn}1vZ@$h7l}6JHeuwC{LwiUWRah6e?gqNpn?j314`?~FEPxA)A@+J9!9QfH@;c9 zVm@u>>oWOQP-S`Mw10%aHj+xrWd@r_6&@CG;FQekNyAh`YnA6}5JtMy)N)L|G5Rbm zxrt(io>-P&Z3`6%zLdy~?OvAOZ3;(!*Y-_1td8Dh$!=&)PC37*3FqaUK5Sb62P>$y zC(MBFQL0I(pIIZ1Lb)zuI{`Rw%h|f$?ASFM#5Js?pRV(X>s8W$A%F<2pHrt}p+_@_ zJ;)8K;0@Rg!v~Y4;=Qa%uW$mBboKit#CASI@%xaP5&H8i{BO*r-8z<&eUn`j(Qke2 zlb1Tr+TXC$U&Q@Ta(yX$vC*Jug24ABDrA!ns;DDPsux)a(5>-K!UN2J54rX3P_@Br zx)nBYS;2M}=w>-x;X8hc9Xe`R%xau2`OZ`k@oEyFq2DgY@l2t99zKa8BI?Wt=C^msM+&Q>Z*-nD00{ z9>IAn?Gdx2|r@JjGA;EW~$=TxE@^M(=ZO{a)9gr%hN zy1=2YmNKNWTXOrf__tq^KVx3yocn0rTqa(Bxy>BTj0{imvecEvtM3$Rqi2*tYUQF~ zzn~zKJEqP0xs2_0MdG~*pky3^i_cmsO>uyx8V*aysXt8#WY(O*YIZJaod*X-$0z*6 z-I#+up~*$rkY9&1(3RJ>UbK9*s6ts~cQq|df@CDecd5mZgG~Q`f7Dp{F1{{5I}ffY za-Nc!(y}HKdvld}#f&XLpValE&vM1bN z3}`-7h}Ia_b)Ew^@}X?Ki)IPN7!O=Yk2tiol$7CDc>W_&Ie(VW8qhRy9fuOWQq(Y+ z42W-q@RIdt+sprJpmag9gDKtFYWwCKMBA9mnzUKY!~F0Wrh8F={AWlDXg?TU^&vxI zVc|r=sCwyA{EKnNqFG!Hk;Q7#`NmP3)potx?DH!|j((^#TmFK+Gks*x?G>6$lmqR0 zurY`t!jpx{&?XHjO?4Mfeu$sQ98e65GPuO9Qx2aiPM z?vT3^Z7yMUnpeyp{C-KT=<6O1QVm>&r%vpzZ2IF1oR_Kv}K7N;0!}k&pz5^OO%a3U}Be!#B zu}*r8!OZtW+0nJJWI`YJ_Vg`rsw1A8@?$TKkDGuZ^08;j&;|cr_DRK zR*#?hm-9!H{3mbTwc)MKV{t=#cyovVW4)$+OkoMt%k(UnXGF&VN22`YLw+Js0~M-& zUWZcqe7bZEkvA>f-&1S84}Xqe8jB1*mTjnFJGgGK5Y*Q>Num9YU}KP>0i(Ity*Zydtc;1w^9q4X>8Lbz>v*L2`@ zqoih6scNO(b(_O>(rS??-*49*Gl(@|(2`B6jK!Y=(28@C`E-%ic1wR%ur3**f?HFZ z<%&!D+E;a%CRN!W9OvthD~1c_J2-HcIR{H&jAaogdav3A3Fvl<@VT`m`7QruI&3aE z>V0W4a*k*CvK6Wk$Yio(h9~MkakH6=1(*i5A#*W2x>4^~n^}Nb;F)hN_@p@Krv=ho z2gWPdA`I$H>IRn70bW{YYt3p8HlN$Bbjg|m+Eh;W)5KgP zWyzp?wRJA^3DO+AO3xNQ6AI6Zob&x$xfK$Hc6d)q>Tr|sv^S$chjWI zGFSQ&lJt4aoe$}#LN1i>!W`#i@3c`yy+51vYz`|(e}SGesEi@LCD+>(AX7y({z1A% zmTj*6cVhJ;#DltX4Wcu{S`oRGDVG>w1{H7LvPcdU$QMw4Nv~2~l#$IH!Yu8HMgM$^ z+Y5znic&e>1xQm_75yx>Aw~-xhx%cwM~aVvrsGDazyG;I4;tAKsV;I3^#v3=a?AWj zgS$mwaFy`Bz`0e{9nh{$vaTQ!E=Y_L$};mvDq#L2JaPl;%bUF@thV??$GQxH@$#SR ziUd>i(7`{B&)7JJDiVhT0fe-6fNVkD{tm)H3?WR70Vkgjj4?dJ+*m*ho6Dr7A_p5e z@dbU)PF3X8u-(-mL?wb89*m^OMq4KQJyl0KRcMSIwUSdc=bqm$J(;9poT_e2WDp^5 zCo&ek6iR*e-k*ThL{1TTRy*ZtMEa@B>v%d=xj1!*iqoiAV|1)=RHLSrrH*9}Xl4Ow zI94P&_YDx(i&kJj9o<90i2e+jDP~_2?METtB)YaIVKMs{OV< zguZzOS2=nn`U|$}VbBUJItI^rZ3*U0QFLly{r~G>{mkMYxx}DBkQJpCIUIo@S@xp9VI$pwYemKgYby*%u z4+2g*V!s}s`HN~D1zhw;xQp&{rMZ&9-t#4>p(%I!nPUhii;YPfUlP_arm_JG^D!9w=&|vVPYQuJx-w;& z-Apo!kKkNfvm85R2kiM}x7=|_I9k#j(8maJ%<{p3FpP8;9;50ZOKAcHu#BXy&O zOH@8M3~3_UXLQdsFeiIpjS}#eWkj@EZ7uxf!5$#3^)3`5u!z?wO8CO3pG*&CTnmyx z4a<6GSw-eeBbG<$dVhkHd!P`{!U;1{AG);X>d7EMEq3(Ow~|NmB+6t3Uf+qK=(58d z7cXl0(O^IS@IJwN5A6q|7d*1_efV7N>bx7(6!!{1EqAhawt!CQtPNDaXaI884b0X0 zIyaTYam9s7|G%KkDJTeliBb^)Wo1<%;;o1y9Gx`|0 zViAJzNS-h(G8*1jire>Q70sc4W<~Hl)~MyFz#H{pO*BVKw=wn;NtDU+KRR}s3x+vv zt0j$16S|)!R6T0gV#18tnseESHvO{V`daAqm=p&j1lu;gnz*ly+IBp$E;72^6H>P1 z?Vy8x2XjT;bdBqoN9x#g^cn-9ON#9*SA{va-7`2=f}0SuEZP)3R>?WO?IQ04u_O2| zmU2c@*Q+UU{V-iyTy^Mw7qu{%fT=}gRJ%vI^X41rH^~o4oxGfI>%J-+DCnLD)c5~k zOLC4asb0@WW6Pe1{Qtw)IR$6dg$?$Nt&VNmc{{dkn;ms*bZn<%+qP}nw(U&URLwtg z@mkSBFEK{mOm8quKaE zi=Sz`ravzSZ8qW!wLY#>;<(}?UzyB9mnC7#rOJxn4eQGU6Y4)XF^g>U$L`5(H_ zaAbj(#zk_c`|lqH7m<$hvS{+P3KD26h*|P6ghCmTH3&Qi?O0{EhxT*mGbbDnHPJ6xArjCFGAM*0KiG?Pa|VbKgQ{0gNto-|$c>m9WeD5_M*(^#U>r z1d8ce3BBanjIMbUskqf9-c9LXM+g{VW!#O<4>&CLa zp?tCijz1yNM4K|?t-7b9{i^6=j)Yv9VT8DYoeigFvi!IsK9Mkp_&8+gr#Nz|aTKw@ zq+{k~rP_tvrkkJsc{w?AHcRnmjjGzi*Jxo9X@Q8;*T-cKieZx+zC~ayfx_ZD(;IOgxaGQbsC-^TW18O1j8i+9c+Cd|k%pNzLN zKEP~^g=xD)qT|7$-9gr(R@|N1fbDmMgZ)5A(+gY!c2;}BWxM{XV}p@m+Yz{q+!5HH zFj6;yC5hw66`4bQHOCt@gHM$*+s`fZNI@=#Ty$cb z#0lN=2JrIrhiBP4SL(tIPn4M*nV#rT9w828L4B;urg-}w^cODbtMa)c4yVH|;`8|) z04aFK%y@Y#WF6t^8}NV$D1H&@jnwvNGtgb0@DGS(30`WQdc~D92j>7&XZL`-b6X|+ zRL`xEb5p@+LGh~{wMaegTwTSIYoaGWH*dS7N1V}d5b3K9Pf_o?L@4K2etPByv!46#J{%X}qFv`it zUlEtQtUuZ{o(v-yc!77So4;YBtYsR}(t{3LQ%$0hv?#E^TB*3 zfKOg+ETKZxQ{;{^boa_ujPswO4-jbBj2Ry%;TY<=B`ElU&5jutL#96Zvx+0szg2^b zK67XpRpbC?JGIl3A$$sD!fFs5UdIIkH$Dg05Sl8rn%s|6olXkqvulm{5;aPC+CB=; zy*ud58SD4u=OSs>DCld40e7>h&nVx!1Z~d@MQl8s;aJlm*Q_xG4mRYvSQuJIkRr#3 z46=}AzmOb1(qUh-A~rHoi2C0tg|$e6E_KH`dY8^ZYTe_WDSqbh+3aEww;KIYcO_zJ z?TAu7rHg(9jmO5$)4nXS?*A*g{N$BeD$JT68(*5Igo@ZD6=AH}dv_b6>l+o6U86`G z>90xZuP}$)PE+C4ihh64q6S5ctj`a+@chGvIA@$@G>B5QT% zQ?9#g-1Quj6`m;JCMbjh;)5I`tVJy+MvhaE z!C1{?L+{JBl(U|DJl&gEKeg(wj>-gx^qs>fwTZ=qT8f{X=CTR^Wae4`IwmVQx*YX6-XiM z*Qe?A7Ot_u(Oa{L;Z9?QxcNb+Y@+LGqwz+rI%$@LEfF52rD55ioSzKPj9(zxmOrVi zT=Spc)oq+zb+LluM_UNM%k4UyX?)_Z7jT6k;oG;E=4~;%@Qs$wDc0m)oV7P^hX)u$Ww`4DC!1KHN{yn0tOa1hkG~LQV z8|I{-4Z!BQA>7D%WyK(G(LIrK79h1KiwnTqJb2r2c$^Ocs)wGL_GteKLPMsUS^56W zs+=HYAqyeQDF*0C0VfRFCWiSb>q<}*8>d8Nl5|0_uWix?GoI_5m{e&f_5B)2uhcuJ zXVon*Biolb(&VA^$om7*>7|TPw8UWePeEK=^S`nPl-f9b0MTh1+&q@fy2aP0YKwC_TQNwB#pmn z2l*8L{ZNqiHQ)%#XH?=Cn~Nh~?t)Js85KBM);CAmW?Fo?fjb3H)rZ?Z5`YAdkss?~ zh8NC2zcsW!6P89hP#6=dvL0PxZ(_54+6>xihjA!d<{AaOBBwbF3t8gDUarxSFT3-N z71u%Q5E(7(=a-Bzh7G3k6p3GaOO2x3NhvFRh#9r!rTD!}OF`e$9m4$r|7i_ATrHK{0kz zeW@nvagbbPOi0`r+r&S*Or^h?-xrCOnLtrB&HXk~9cv=XIsv0_K`zN&yPd0Kw8`Gx zOTt^-BWuvsy9o3K%; zT1HdJAkbhJeHva69~%mgY>6l?=(LG6urvIgQ3K5JLYVjxFA|-E^rB~8qB$2BH2ohX@JMU z#Kx)O_5=D~KRE&wk*`KZ+I9UKjpowr3z9rNRa8}?I2_a@rG90YY;40Do?w@vP)}<6 zF0t^Qy`xP=qq!?dyDA0&X{nAJ^8iG^zQE*43bNCWH(XBigTDLDzoE&>zVjLjSB!-g z16{E};bs{P@<7PQXBFnoh7V?mwdfP!hh7CtbbALvkm(1o(J-eD?kuv+YMLSp3fu#u z^FHY96ElutCqoaBocU~&%eqOOkdRkX;5jB;S$=)66NB&Ag!c9HFDBKr8m1MO+SjgtxDo*n4$9yBL(sju-?8tr zsn@Ap)TLy@&lpUkx56TZ99mP*p}CG*yrNZLe(dGZQC_lJ0l11SHC@kz3kFgh<91Lf zP$m@Gm47E+e$RR}hCI0y%APj%PSa{G1N}y1kTOI~t=n^P`4=J2-opj}0tlnS+^rL- z?Ou{wIX1n@g)46_>3@^pbxnzKAqH%Pf=T}o+ zTYJ-bsacSwXp>QFK!Wj|QoveCV9BV3e0y;p{O^}()g-#eR^kFtvH1aSi!IR69$1(q zzFy7T$~SyRtD=(LEn`X#s-`gfjp?-MemMbq7JBUYnaO~`S_<9JS|l>JXL!FNLRDu= z@lShL2xPQ|ywq0Tf(e#R05EZSRtGgM7qPhVBO}FvPh(H-;OaLJs39S=Nt^J&*93u{ z5~^6JXL*o6+zd+Y(|}|_!Hek!<4rn6LNrgcPJu84a^)ssb1`40aoSj5XR^F_E?KVw z3Oh%Y5LeaMdlsDy_G#k@ykY*ho_L_mOT+t9)P52br{@K#FlxAvElt%*E8EcPGb8a4jhUy@g4{|g)V>)j_M z*_UxHM}YUX%P*bn)(LA+=;hGxZ(S=+HLn9sOkLVeBDy7HUcwPg2GH|jbZW<9a+ zXHRVtf#1!d7rdhM#H2)5Dx!fkH~g(#(|p&*jo`nz%T<>?XODlG4K6};d5oqaw%s(Y z3%U0)UkBmNpHfo-bkB(8BKz;AylR{Sjuyh*2A^lo7N}J#yN7QC9OWFAH2de~PR@y^ zxtnvMkaI4!P#fuwupk*Dk-H#Id{J_Iiv-=`DRBdCd3z^#Nxk)!PKYQ#pcePQp0=)v89YF<>S9z2jr8~SPe@zA;-RLqPuP4~ec zvMQ3ekv}A&N$&rw?i-C~(zJDPGz}iHC@XP5pG<;4*hF6%KT;8_PJN^v2&Zy{vEO#s z)4Li?E_>}1ausCe)gF!7Wq^}|S_`(_VNHpV;3Gd*)Md@un+>Dj8Epz%M!p*WMYhx+ zY%pC@%up%V#j^1hzdV32yRWT2p-g=S@65;=*i1DYa6=!vs~|lVh;9bP6p_X7i{ZIl z?RzLgWr|yJ8!l@9{40 zQg2Fh0fN7fz>~EW%4pH>d#g$5=D(KE!@Y$|3m=Z3;I{;g=gZDs7YKkkgKZb`jhr=9CWB#j3&~J~ek0yyUG*cGDCJ62%frc+wYr+t|P5`@K8U;3W{6o}OrV ziNAHptY-X*$TPnKcxKsbC?h!Si_kQl^o>FR)i22IqF8hDG!2Pt6m6eAmA;Bl&JIjL zu^Cu@JsGFxY2d=*epfud3iFVq7odk3Gf`gkBE^3;#uY$RXVGKmI!`mQ<&^QHGlDM% z+Ob|-rtWuoc@Epu_1`(;#!#kuj!a#|w(=8^&;6Nc+6_P8J_1w7^l} zbfc4yx+4=RmXmxGw6lgh`_i@`szD9D(e=q)IEA_N;qfB^O^G4z%HAK!$chrw2}szQ za*0w>6_D>tI7)kbkgXaL%29%dil9rWjd!mU^vV|S#p9N?7W-$vvn$d547(zWCl7u0 zvH5?a+g;m4O+Y>W5~=bcA)nA%V>v=fJhu)f4Ta{Xpfcd251+#UyQN9H0>X!8Q6G&; zY$vI6)lT?Q1obK}Vtd7D(10I1eZ~3uFOiE0wJ+8SP#hwo z{Mx0XOH8f!@E?p(AclLeLhY5|M7g4i#bq4&{Rz>HovHTddN*l2bjQ z&qaLao;D8^^B=4S393{Ftg|1TBKJ+Vw%Zk-kljo88#ey)z>}9nJ5;%ivndcAQ3cmc z&QN#rR9^W+CYhAXuDxo3m|2KzBv2g=5^u4@Qzr$ZLm;t?Px~Y=K*f@c3t1JICI5DO zLpYhqYndX+FAfqO_myI#FLlgvvXVfESIE8E8qANRB_&k-S}_B)_&IsV^zHUtur~;S z8l429i>OPr*))E5{L#0G`xoCHS;J|zJu#$#vnTnVi+nJcc^6|ksIysmc+Q7Q4ML9w7EckwOn>drB zhlTSAHQ{pASJat~(@bq1Phq=mWOB2FljVzO1|_N{#*ul73MERIt!kSlCvDGueSOCa zUq81D?_XtAzxs4-O)qO}^sLB8;R`!~H->_Tqv_xjfm`6DrT3!%;3-HE0*HzF`i|Vf zXQJTOdO?cvR9@GOVU_=y8ni8mBd1qoJ01rI6AT96!ahl%4Bm*V@NC5R0ELnV_ zUjh{k0T`APn1=|cL@@NPADf+$ZW*XSTgS`#0%-J*J?Q9%aLStRoQU>PK^ z*y9{Reicw4pg>M!-W(7jvXUeV3C9We+1d~03xcL*?Me3dk@;=mGtILDA~yv4VhjQZ zLE?L+cLDa6FV_zI^_+0KFxsP3|AvxB(IjsBFkFBLR|pVNdN9jyOwk_#C`{@8RO&2o zSuuHeH&s;P9z9F5ihjv$Fn)QgAEPmm6uX<$CYCH)&IzPW_3+*k#n4!?dFi+kIkCj) z$J}9*{uXZ=ow@vs%RvGKC|*9qbXk7AwsSphZNl`>Zb*NPq_+Zb44m6wmemZMm1C)T!R-;mi|6gHtvEejbd1Zvn3nDjH}7iL9LL>FsD= z6mUc+CO0++d+^_Gpa=5KZP)`}JrD1cyPW`SEL|UaK-25%=QW+KAr?vR;=BCI61woD z%!G_{Be{>#*X6#u?a{)9^THgUDEc4@9*t8octU9X~=hF`M-YT zpyB*fGv?0`kdMU-BEAe!ST}Yd^CE3&f&vdQFP8=mOl+TUU%q<&m5JZkcbw%P)qCI9 zVGTUGy3HSX{GeZi{9_2$XP>Nps?6kJy;Z^36$B!=v|IQ`J@Am3wRx*RMp-_nJO^p}$1 z3hWlT@#RrwL?({Th!0``;UYrr!Uj&>#0LieLN0G{=A7l^29Odqe~H{;fRl?4AX(y% zwO(l+4?xr=&4&mAaQ1@Rd&&~{$5#*=5dID~2BPqxADealhN%LcW9v(V2PpvKE9ham zr;iLGu<0wTNrpe$C^+zeP7Eg?`R|3@-M_B|U%^lw&bG8~vNdygCCT1c>&VUDhDJYw|>rt?GD0h~5 zvw5}pZlmq>4zXg=+NO-R#&k9JCAGA}j-}K_3&(faJ>l!8lHj_Lh&|HM+TfW$W8pm? zlg$5ZfN12X1&b%BC%yhb*`OMYe&{vn@-{)E#6{m3QG2MxMH}F@?9bVM% znaw47o6rHUF*!BeOAB?p`790DA%L;1o~(Hn$`(H@!^Cx2Um}ACgm&)LY{EP3|nr3tU#6kg3YC++vas1dX9-7-+26t36eD))Wdzq3K}YUhsjV!BUGuW4Dn|9N0@_!4*fWAN z&xpn61|SFgi#_jpLQ4FyfLjljt#p?nT!lDM>GW2$;ixV>H}9jwwJ^dgufNhd2<$EU zx9nL?D6;K=z{0IH++UL&qtpDB7C+~SWJQ|AnQ5qMu-xROX=;~(8KXA7dup7LQV=Z= zlTeVqcPrMguYRf8=OEj<)5z`IHDmS0ZnP&G7=H9VpdNN_bFrqGk*nIAU{R;YTYvpQ zzz~~u@gDwXn%4@IVa$w?ZyUG1<`br{jM>Wzir8p$K>yB7HM6issPLicDj+7}kplBc zCD3b&!Jwwup4^g&v6tp~CTW?6mz$?*;AiG@&2PD5nI_M?)6{;8g)|m4=G}qEzA9fv z6iDyZj+{tS%;s_Kvl0wOmN)9Eeb4hS9zkbf@0ME*DM-sN2jnN0*x{*&>sexIGeWds zV4`)h$dB;r=1W^q--9(~HA61WHz)7iE^^CS*MWq}{T#u%JR85_?OgFZ?r722EM2x1 zf*J(@RXsup+B;!MaAXURBQxaS#3gy78E)R6zlOK6X=e65eN2Vm_D53bu(Rh9$}bLY zNo;?MGCE&dLIZMJW&VmuOIRWi(yOdy*W($XLFxMJ>T$Yp_FPGPhI;5u1Wo^jvSU*v zOEQY_R$+;i_SE70sa%Cp{U~$)YBI^Y%cab+>|vlf`uo-{WdOy3upx$2K~$iC@&H=&=l~LaiB~s#E#otXSnFa!S8fttcw)JTV|S~AM0+uydJ*!S~b{3 z?spo4;T>&AZfpvrdKWTDlefK98HQ1tqn+pdW0gwW%{e1db~iBdqhp~7ca*!=DVUi{ zoqnxrzIB$<$HDEuNq3;$+|ohgMX+n&6XO-hov}@e2;Ez~Iko9=!y&c|7M+1{Hd{LS z7A6@7lbpti25-F6CJubm(SB(UU5+NbwGp;be~pV@=;ujXt1o)_z(7xN>eNF`md6;x z_HqfCvvbpT%~pJ6aJo+zR99QRhYR%n)H(N&KDMxGU=;Tgb2BGA$#tYZT~p`dbdkd} z2JHdcRc7AQ5n~MEIp&ta{`(hV>iV#RloRirUQ1%7#p!w1gdg6J*JFbFQ{$}iztKdb zGmP%vh4D~U>?d-KvRm;z)sjZA@=zVR$4S2-b1X+OQPbfcZiKtqX0|X}_z$ ze>G)8LOk`<<)&J!JxkPYe*;_0I*;C`q^g+OEYDIrIQO?r>v`2WG{R^9n)scqn}Wya z-L(O;vxj9=-Dj5Hu=Oaw_o@&*m@c0Cpw-stJ)3y_2Do=)!q%ms>yO+@FVTe!Zuq#h z4u`dfj-kZXiB4{AC`)C+(FJhtA03lI*O7i==@HGT?hf%Qjgc)HhRXmueX$q57|U(bYh9q2CQN*%*OW!zDAUoaGgXT%|cnQL{sGMG;+ zpHa<((J>Cm(YUT8vA7D8qp((=i!z;;P{Ij>J~jnrS&stSwa)+^m>VOGWmrxJRhmM}lK z*Dusp3sF7J%PIDD6tY(1y3LKXI=|?z|Jo*;Ln0@*O=aPR6{vIH>ArOWDPyzxITKuV z;TCmxkbsHLE%$?ajen}`R{p%qSn33c9ReJSxNKDSRXkjh67JP+! zX!p`){flp&RJkEZ0Jp z#z4bVXS5+9o2^Q~vqoYs>~ZLTM{Ya)IcMq#?}Z)z35QDf+GR5{43N9hdw5B}$^5JI zEAVL#P4jx1^2PcCm2;;HTrf?_tGjlO+d5%r@ui%G zN%PBWbq&Aad>d)7sDIFPA(NMFJY$x8(lH8|us2)%Z_19Uap+SXT63Kg?=OT48%`Od z1q1p+3cZDseP>*Qg%EGIfw?(^W`Y>gHBZcL!&eU$FUxPMs?)%WzX4@D$(qwB6bCoW zgY8Z{Yq-+pwa*cOcOn`%8+dJMb?TGp&WG8tF)K(Ro7-aA%A86;14$RXC^~#ur5M)`QsL55*Xqz)*%x$aH_};RH?UDI<4c(IEo`cH zaB3n#;z5ZOS;bKL6`0D7Z9G1N4;s(2eo8o<>3!n!9+WMCFPK9Prc&zoqI;8=uZdtv zMo6_X8_UP@TOie$LJ)QUc}?>pcc7-zvz@ZE<~%)+E);vmk$|^Z*R!E68=KfRhOO7? zm&69y=JIY=!s}X4`L^l1L6nO@AFtRF@Aa<=r0CV644MAK4!JGfqF*>9)O1E8(@Hg2 z`n(=cruj0KDc8uC9w{N(Av;}K6z}p@uhS4sJa9Ptf3cK3<3h+E9fijCJ=J)9v{Gw$ z<(?sA7%JRSLof}!P2rt^-6E}v4mBg;*CsTX)5kmk5h>hl{PgrO^fTrRhBo=q6rjp4 zROLIFx%$05ys-^g_W-CW-m)$~yXXker)cNU#0C9(ohefOOm*`#xk2!W=(m_k1QQ1? zIdP3+QvISUqYm=M4cEM`UJ-vzTDs@g$xs{2A)E(7=~{8-Sbb6EYqL}VGq7_b7x}K7X6_Gs^_Tf z`(nq>#rkr_oDj{}X2P+Nz&~XbhbM0l;?8qb`7aCje2co+k0r6Ak^gofe4}(%As-R+ zhqOm^&SlLI!K&q>Rq)_!ymfb{>+hyO14_dVEN6_5|H76wB(%`45>;YokUf1KZmxOI zo@fMzcI5QmJz)1=Y4BIoJf$Sst8G|&(*Eh*(XL)QEI$4KW7+sa^D}*FdAo_*Rb9|+ z-^*+w?VI|E9EJn68pc#`Hh#|!7amd{c#z#frVz&l&!C%kSt~#@zYCC7l=>>%S|NjB zAk!)ydVbfC0+A{c{jrLUf73NkUECI%&@_D6|2OyTlWmkF7z}@cLM+5?#5|LG@@Xts zU4Dnc8Pdrc&%?dca_W~IcC8vKxo44ZBNUAx8lOPF^OA|4+sptm#~wWUdoYzew@CY6 zU6OH~!d$Gsg&bYBuEo@eM*Mc5rCzgN1CklkGhmOsO`AD2Osj@6kERL&Gi<9dlT%N+Q(E=e6xMSGG~;%?r{X>!k15V;}yu-8{hkr2LR=$=^6Rh=G_#0CiUGSiDA zcFi@p&QP+4qUG5zWGaPxA5}J}S%doeKC^*_-h&`9BO`pcslD0HLBkK{1DkuxJSAr) z=9b!fnAf_FBchj=OwZ)iB2!yY#l;}a>0aeIR8Gii=`7bg{iXJkYerpi{_)D0_N-iI zwQS5Jw^s>t>ju;)-yzsg@#$fr(cW}dimAnl?eOThR&6x!T|2QQe=X}lfBc%SVAg=V z9g-Rpm5*4GSMTpK)g4El)(amrI*b;{K2|I0$N~MVIhzlk7loWJvT#C<#gH!=#>|Q}0nds$oBu3FB0@PE z_5+1IPvp8&>;btGRgd$z^I3OWYun>1qkfw2{GvX)f4neSaG&^U3ObfaLPQ19pu{!@ z?gu(LL}++u!tGs|0g3|8j{voxJrouIDmb1&s6C|L0Kh0OkBCLj4|Zr3Kcb<27!2It zkFS7VEh<{H2yrdII1+UT9i|>?q_wS$rfn}P!XTSAREHCr1R2o53u+MIBm_`-c$jSH z!2y6E)Sw7}`HLCk$^kx)Ipid;1fXDqbACe$`q4we*}qYO^e|a)-Py@<#qopAR6)~y zX{FF(1c08D2_`N)_8|MEje&*20>XpAoY<<@XWcR;*l|Jn^S-vO_yFJf2jHKKb+3$X z)#1+Xls|~U`~mi4@JKa+E5x%VNMBE~a5fPjJReZO{H|ZkPV~^Ol}JSPm$^iM=$cM5 zepd%jVMS;^KUm1a54@NjP$y=4a0~>do}8Q$UrhzHxzW$>@pt`T3<8hKfFEmDYrt7w zA~HGr(_p`I(%WUVb)n2E`nP~|qOVs>U2wctyhnNdy|tKg!XV=rxvOvPJC7)SFv1g@ zQ=VCN^tWrkSK{If6Fgp66ByQBb!VW_?l*|<*qg!u|MGoxif=Ux;H_H+Gkln26L6GA z;+q|EvVFZha`&w+dlE!;dcufb&{#fP}S!L3q%_g^BWq9`eL(p0tdse7Z50?$&rFsz_y| zT6zDpKIpca`gQ4j5IjUgrPk(2(kethtRcU3i?;TfIFuH+b;dvA;BHj3Dx#QbPQG8d1s7e+(9D6$@XN6 zT-JynzWI4;AvA2lzI)(Dw&MZfTJdS#?F_t-RKO7|w*kQeR^hAZl>suoml0t>75s zPz=MO34|_V_OBlvq*9M`x!0-j0W&yL@WE2XzCdSh`b?UvMee)B37xP?do#A#a*AQs z>1sl{BLB8$Ry*8-&miuR2Rveso@)V^BN=hOux;y>QJT?b8n}9V&JJuWjBB#KD|K~y ztlJDtMRttow73LzQrt@T<3_tkUtlf$WKA4|=x=^x$8!m@ScE9v_s~J9JTwDP#$nZy8mN9N_=s5fDj=Wf@gBbN2rYsHPCpR2QeDt#M3mKK}WY+m) z;1YWdG)ix^rKa`LNOwI?MLKwot`#T9yFalA!w9JKPb-iz4GfxO?|j$|>Z*1TH^E z%&qf10cJCs(~eay$thu&f3WudYe(-V6Ap)(2SPkQIkCyVcCW#cENzdV#Ub5M*YZ@( zPoedFP2oE4HGdTdsMTyP+Gz@QL9=qDNa8fMShTYTQQ2euPv;gW&Js5q($s#R~1-=NlajoQ2DdO^Br;|%L zX!SRa!J=3Bu+DKI1&~P&v+&Swo1sgM$!MWfJ(fULtsKSG6If?BIO}CEC}f)OAh++m z&L8r=R|ZEg*x)cP%F3D{(f*2ijj^H1Yd_#E$I#Aajc4R!hUf~cJ))z^Dzs_xCJs)) zxz(9s$eIdSOEl#b2@CWLpAM6a*GtADx`9{{9b{>og(a?<>vLs%Vx=uCPLK%1C*XLx zXy=9VMY~*-?PYrsq}<{0V05~vs>=|r>dWlgSGaRc3bfUk5-^L)yukaaYXIjU>`Wm3 z85Hz$81urJerLqTPV-kxMsnH5QNCrV<9hY3$IZsNyUXhvIG)`wLmlL9}+AKNdv9j&Jxgf+PXippb4nU zS-2##rZkkR{M~OWp&XjCvSeK-olHLeB`ewB%ikl@%HFf^$<&5-*|!yDcMqL#I=HQj z?%!_>S3O~g!bCP+nk>uY`a;scXSR&(lXW;)5%!o6- z2`}l@HEAX#96ufkJy+rl$GwbK7iV6iDsO!P^OU#;M;|Vm-a@QWMiI`L0jR7syDj?C zTCYyYQV=vezq$KsC7S$o?gt?jKpyG~Z4=#B<<+g?gLqXn!oDy|kVXs=xiK7AeohKz{xTF4wu zj*R51g$y#YY#-?LV{Fmrr}NQC79&4I!||iS>feLBEVu4jfTsr0>f8K46Stq4hHdjY z)P!YB4iL}dnD=#ouvv&Iy9I4q5Bd*DG2n#Vb2N4Ebh4BiXr3f$CQlcFgvo3w`?Bzw zN~xt{KcDA`l*fXVQVT2AVbAxH7T$KNpWfaHbSz;Jf@IFh-h0FnHV4^TZ~1R3ppKEk z3Al$Jy~>YV!(hS-PN|(jv)fuLUX9Bv>U;_jnh<+qpj?Sej#Zv>%MF?Smd>;&O=}S4 zS_JH{e6%jmf*exOQ9g!91?MY>33D%t5AG}z{=tL`N-H5_)RV?iNolzn=^OMlh2a^^lJ#cZ#LwlMQAq6xsXPwK3Tt)-8p=BZ*7t##!=Eq0$!Y zGvGI+#$&oGbj_xEvz}fX*eaQJH&d(fM*#=H8H(gx-r1w6>7z-}+*2o-4^rzWf-a(1 zWGL$`-*Sm&+)+o2p$EMRK_0ts{CTfXt^=cPU@K!W3Z|C>872s0y|te1>2gUO1QeGz zpOll&vRXy9nOSzQ3XGqYCv zmBbx^wTE%cJ-_J^^aZYWORs5NAf3q>Ww*!+5nm0r5=qb%x0EyZ?>hJRGJ2rVxG0yXj@Y1$@7 zbCJ6ZGhSKG*nK%SjEj=wL`mmVX&Q<_w1x_i5zJSQ&Wb|L9sNE0B^pWlJhk|$?Pc2g z_$ve=0M89$We6miNs)Vv&&8y3M@rgmvTvEwjPGoQcr2zd+3|(l;>{Febn4JIe&gdhWXGFatZa%(^?#npB z6Cce%?&Oenyz5Tymz>iGjgu+~@6d&0fbrJU+8HT&?jC%w8tH>4XE%f<>obdt;D(!J z=DIS{-&?HQdO(v6==_{TXLeX|9zgCbR3<*Qp`R8ZP>|^iPeCzVtm1^)iVA}>BSpl{+ z6u@@X2Oa{+3q;Yrp#=oE+N5UF#?`InRd!TNJ$$W2RxMjxQqN4gsoA&;qx2qa&asbW zZ{Mtxh%nqWP1^_qzb9$E8<(~nQ?pS(NUH?my#*hy-xoU5AbQ}PqO+>e0z#Pk-k}VX zJ=*!*R9AnS#-uSz6_5DokbO;-(z`0XyL}E1!DkR!s=Yy?P7T`T_PvnpLV2;0ScPfx zIysV%L1IX;&+^ded&U?GC=Mhbilf+Esq$E7lx#kz-^c8VMwJ7#ffk4)(OksGTNbD> z`3lrCZIoJEe~xCUeOTCBZOb&$-((qFHb3H*=d&w*oMz8D7K@>PE~|0wfMbI4R}Idv zct9kXBKT@w*8EaEjX2G_cp_u9yX4^eSu6?Uj^l|hy_U-Mt!&$^Wl5g%aO%ChWeD5V z)Vw1b>9O&l{^(SX)^yQf$}w)QpNHHtHFrdB>l@K;f%>#OwbK{$%ByC4J#p$ko#cE5 zBnbwF_AKT*tc87y_h>>iwC|EA$zC5>dZCdLJI)ID###CiiKPM+DvEK&(nqhmUn4^y zp-4CTL$GW<(!kCdq(a~t%oreItFlV-w2ME(nMuvOza{udahrgNu`vU-k-9# z(#NE2lf;W)FPh`gDXH7fK|l4UJ#+4)m3u*LF85mNSRv?a$))kq?=QriKzt7RFxz|9 zqn;jC-&dPCbpsD>T{D(I-H)Eb_IaW34i}sm#MxDDZU3E$rJ~WZoL8 z**iqwxvDVVhvPTW%5EJCrb`=@-ZZ2;kiV-WyGMKn9tW2tOg8h}wsz8Q<*M3oGI87C zY$%#LV7An}EiE{pJW-H`CZpSMrW7Z!reK!NJ-pms1_L`OQ~Ta{SRt!$9iB`ra=9xt z-0NB2k}gD_VR=b1&X)xZsu`@F6OOLOjkI!0m#_3`W7b&AHt(8K$WfbjGIjH)1dLHK%SJ18lm%)*Sh)73a&k8(jN_9kQbc_A55L_ z>H(WY+LiZIhxFDPdR?5m4GTpQh;7rT>)HqLx7Ptax7Ayf6pP|$qO&ZFo%A2*B&4cA zQ6+^7XC@VYJK5hYeRXKIiDT-^lJgfR5n#VB+%S^H1(6U_V?sn1Fh|!hk#O+^yzNx4 z2idNM&21mhgPI1j*{e0_oFHxyV~ed13H_TBepc5oN4b&a97W)wuuhXI`@QRL~uSVd-BxdO*3LqsP4yD2G3@0((Ji- zF@d?oOge*N7hHj?U&5$9&It0?r(KryCwNJBOr$< zDv#>EIaBk+X{B)-%Z)5{OO4HysQp#OC@GFia7E2!6pPp8g($*2q>I|L;_*Es+Jqwy z9TR=4hZrs05NK)`w;?Q%$2ZqcSqPQ;@VPf`SvLan2#@5awCu*72am3`E_xw1SjN6< z>z{FWqv+lJWeRHG4D{PQ@Qa5a>8Z_OW-wb$OthaV5m9e|M2P2+zxX7+Y+NwB#k`M| z(@>p*S4lB;fJ^EqHD3{zY+1L?#o(Es9bS>nJ1U2ymBOn=gdv7d#8f+;x@?$^f@CPm z_gd|iP-(0EV~M$CZz&$pVA=ylmh?`Bipft}v8)Dk6JSX!WZXe_{?e(9t~2``9gu+~ zs>I$jJ8ht|;pT1RZZsbJj69`tx@h#o_x<%>hay0#a}12eH1$wG( zgSNEU8Sc_Wx4+@>fFhJ2J@2C&8h7-iUp8mR@-@Zh%D?HU2^4&0fYmLj_W5brN6Z__^x8XZx!SQ)TdSK>cdn4KGb;KpZU##41wEUI zHpGEL{^`>lsx(YJL0Q#UwC&(-f$w3EQ0qeHf9=6uZG`n^e_=7(_{oe~tzC3l|3KEo zj6PO2;knT#W#pgYgS55KJpeyA;8@OmHKxx4^a47SmebT=jb#S!XTEDhdhu9Tp&d{0 zAifD5|67hg5m2dVn5HpSU_tw>5_s%E11?-#my5GTqfs}!D&3H2B7%w2&ES1~BJKt9 zO;c}Hc!CF}UF>xo%d_%_Y5JBqrm(Dk9?Unb-c2h3sR&17VJ|T1JrEUlFt2Zv9p@t; zIp}j`t(dP32}#P`r{X##8km%o&sfPB~?owy$P!;=qR zTWja$#U1%dUs@JhnkV)?YvSZiPHqIhB+#M7Oaj`HSpAk}SNU7;SdP6vdhGAtb<96{ zwum=E0zF7IWSs$j9U4q0n5w%XVoR5l7T-;0W^roxC$>nTu#%b}w?xb|q@tkhWVD?% z2Gg$Aw+uR+eU@d!QUKhOTY}33*&M%{JZj>pB%#{c4hB!H`*eSycTKfFW6N`o)cntW z^3$wV?Az7$4^rvLn_0NLkSP{3bX4z0Pt_b`t$N9#&4y49QFUgVQdw?JNngEseb@Wi z^eDZ4Nal0UyFlZ?Sl+|MZ@}IIvCV&BP?rD1pzQw_gEF%N+5RUh`~P-inK{^i?Ejw~ zS(|oaC)>$64xDwDtCc33^`=U6^FcW^>-B%nTD6n+7oFXoKF7TKk*~#VWgZWz>gwvQ z(?AOBxR!v<^0L4A*r@oZyri50qB^QcVR3ONJrdKP!eSJA)@BD*hX#yR2UbG}Gfb=y zB`HAAloXJO$VeF`695X7IHNf&oU}Ti5N5GE3E-?vs!YpGYwp(;P#Msk6h`j1yt%16 zvpE>GwHlTEl`ThOW(H7~X7y`Ls>Bu$5mc0x(gPKsCa#8zWvb_NT0h1dbytbGs5R+*cTar}3y&?H5V8bb(0}E|-15`VV*aL; zXH^!ZUG{x(adu&SkJ0MC;CCc7H?ul4d(OTx`?kNEu1Nd2vhMMjjq(k1xV_IzHBwG% z2{Zd4|Knqw&dhGlz{=DPMB(>mh&-wJ{I}xAdWD6_V>bL7WAe8dn&0Vn(_y4eW+e~E z&&Y>wDU=~!-tVM`uj;=wH37w(_^hOqe$hdhC_Mvxy|6nbyAPlG_OcrpnUfc~-?DG~ zwI9u&*Cs5i_iU{Gn)<()c43<2Y+&f0QE4;E0mZ55%qsbshM;|AYq zt?GlL_kR7^2y92|?HfsLb`%`ptO4Aq8Q~PL%i6u}^c1BvH|487>SMm;NdL4j%EL{p zaZv4HEsnC=8c0e7Sw@o+!0I>`nnU4agK!SI^AjlXwJ?2cuZF)lbNK?JGhe~1+&QIU zY4z~bEgTqboBB{N4CvIp(nfkt_^m+M(T+<8WVX5Vgp;7d0_)=Z_ zdbjA@4d`S}zJqm0aZQKB4GsnGiNj2F02EDtPk(t$BPtP5NVWYqLTcj!^}nz-26pr3 zz_8ZrDemtE&hxK5&ive5>0LDJou9(F&7_?~V(_Q~4A7njyjIQAnf1i=7c}P$)F-^X zjlixVf1xOSTW6NP1~ox~I@pUCujadJuN6C+5b4t{e`Pd)2z}1;Dqnv(0Sg4y^K6_m zUyKq`o_>drAXe7lb5UlL4=V}#M)i#1Uh9y*xJc(~PG%AMjT?yRJiy8%X~W7q zs-F>97w&Yib+4y(_Rl-XBc!6!-VUS(Eq@?2;rqQBr|)`(7~Le5KUY!(t2E626+?{b zZ}czVwv#l&-g{nYv) zWw8_u@0u#e+Tyg?DRtfdcCo%}D_v^)1U#_`4absvV(AmT7}~0P{KhN?URlY>}b*#P--) zj+^jBzKj>Rl#+)UALvCCFYFn&l*D6Ir(jot_HO+mw?TaHY5;fdQvMqyz2F-0B|$^Z z+}HsI;pm3C9>nY`OwYX`;*06!^_9gyxjb_hUbe33RZ>HEaB038bROJ^d?1Vt5icH| z8s%mB2Mp1{b1aJY60WYEqH)y#5*pRW33+mbyu62Pz4IauSnxmwxT5b$M8b^kd8vxz zSQ#xK20a@!H!$tpv`g@bJggD<^ znL1P+_bLn3;e&WLyZ6^;2YN+eVjd+qP})MDC1?9qU>2zMfOR;m$&=vw6qo;CKI-9JR5f5e`8njn!I)hf1c!-7hm? zF{{C;Q8nqL*z&SgZMD)=U-P2^7~d12MH#a8^*{_#GLXi1%0!!vjn%-37)%QmlJ7q% zVqVU!EV(~&4!=v&ta2=YQ2jb!U!!uAK41UWaofy#Xh*2ZgVGe%eMrAL=st#SzIM4vS0_8 zkj?#=KWt_*w^DJr#5_z_t|Fq3l&WXI{8JSDJ!MG_zOMO(NTjL2#(fFKuj?1vI1z<# zV|f3ve2v0DQ`1J@U0?hru2MTSh+Xcx#gE`mgdv&)zcOcF)|am$bkEW*ms(%O)xk=l zj6vsUuGIt>&wV&R`;thLxibhJgX9xuFEp}2+w<7fZgAlk73M-3!U*8Ge_-cT`+eMT zay#|rhpAX@shA@$$G;}~5@aznLpRj6^Pc^Tbt#6yr9lw;6q)t@R@+5!-ITt82Ah*{ zm&xl#GAV+GO!TKb^>Zdaq+ii3yQR#>1^`o(e2n^e=gbm6onr5ZJAo-3Kh;BbrMz$LoO)0mqH1ztIuY!}l zk^F88HR}<94a<3_y)Zbak?401mWu(6**DSP?G2bJT$f5yB2T~w@|Zj6yw4#rl!32bE_0m4aRa0 zw40LcqeO?qm?A~J6c#EBg~geLJD7tz)-?DKLP92dn|qRNibxX3+eYtnM))V%p6kUO zPt|;kcIz%&=b=l1HtnT8R3D9Ket0l`O0Q1rQvVy78P|6n^gB7CC-Wz%(M?G{Q}6r| zwwE!XQvgd>v3)h;i?nqmxX92!<{yILHll>h(R8Nhk~Us)q6^G&i6(KE&mvp7etuFF z@_?>7UKb>WTy?piyX=LhVBuv<_o@&HQnziSR?z2%fnxbvJxX@vG~p;x=nZMtH;7^e z6L3(Vb7mO)i}o~0^389O$5maz$_qNsJIrRM7U`q$TP1E@;3N+8TkU&GpsJ~ zyh4X%BtB)_s>2iuT_BIg>+rM{=}+8R-6j$2YvMsV%-YV~pEF24p#+GJBDD0aeP|=) zf3-yHozt7oh&cjRcLN!$tK`^W>1^s@-3js0xBN$SoQL)zbo^2?=wx}LaSg2ZrobMN z^@DStcE0i~xb3<{%unIzckc3Cwfn9=p*;Ex?rA|33nA(7HU`)u60d3LI2G#%m|}k! zpMQC6@c5=Z7m-w`(-;z^!_S}@i_!G;y1u^&7Nn-}BEc#gl*ZL+*f)|{WgMvl^kc|M z{i)16A-5-7@yw7Xzvop=h25Net2M$WU?Y;QG^h)L+k=Y^6EO*p`?7lN#wfW+B#^S?2IKz-Xm|9$$|jNj`V&501sErb3{Ss%xdT zu)i{6(ozUEWqnE8U{S`aCZ2od8(u!8>MiZdGpBx;ZXgxipa5Ino7f%;1$WM^=}KlX z&iU`WXId#kpARB6NS9R~5tJo;O23SR4m*#EuG?3B7l7g7KK@wKtl~v!pF^rw5Zt-f zaB>s^Lc%g$*8)FSDKQ)<7^ZEVuFYd2;P6Zx6n0@MOERmdAUq4|FD7_3$8{NNDQlac zNJpC?Z$u_8iZ#83uD=1b-K?!ifgUL8VJ-&jc|z$1XNrxWk|)nZ8G#ztzc1k(p>_f}&;H)#f6kMy9#|Jp1u8(W8BJJj*aLqXZ^i zwIWNC@ch83|J#F?{{{Vy)+7iH2;Tay#<-uiy;J%wx|w5OlY7bwCCi1!B-Lo?81rKv zrP$r#afzJpl-?kNfpZRY0$w%35i}Sf^Cw0e4-7Ruo=S60BI(vs@s>gIqO-**?aVi9 zBPbX4;kY`)V}6c|Bx>P1Grc6BpU(?G|IUD(oz7Ro4l%fPL#VInr`Zsdg-ID6);p1u z+$4etfP?I}ZzSwmYSf*+T?d!OY4hx(;Y3 zjR+6L@VnG>Nhq8NXVwHOyti}Cd&?{2++LE&_LLt!CL9M~Aak#T_#a+fFtp-8M*Zht zMzyT0I0UMicL3>f^Vps=wo*$vEM64i2H5BiPD1Y@If-~#YfGYymg;mwZXuq&H*2~L zL>78!aB3Y=L`v{6lab%Z`v!6HkKkqk`Y@AXEfl#$ZNmDWXb0}_T1AbOUeiZ5bot z?~h>@iKo4lWr1nvHza2_Y%bfC&>-!~uGqS|@k%Eh>2k>H5~Evnu6dd3EnMy%2S=7W z+8>zVz4GaWjAp}sj$PkXCsE%ZVxolh?gc(j{u_Rk1rcpQ#-EZfk(xtxfGR3Wxg9wz zB4Osck?NG%cW)a;qCQcpkF+NxJ{MZVrx-@J2TtIhwcg8oB%FMAhv$8e_6NsC0+NAH>`YP*$2A7s@;>*$x)yEm9Sn0YN2w5G$_ z2k$eB^6ACFt(^6h8j@dDqV{mZa(KUXqczNHNLkCi1O*;F32G-UeGZ@B#h~%Qb z&Y0}u$M?u}aq*c}#m__6v|he0qxp}-H}}-Sr+3vspK3owO4cs!EXhc@KBNy|z%v~Z z(Ib`Bf@&lQ4<@4lpX~NpkX#~)O0)6U5_p5$BUZ7PWNp|`F)@(-eK(W{jMnjX@mZL7 zM*L=T90t@SWIvJOV46=ScY*!?Mq(+mN^fh4vA1FZBz94yIWJgOz|xD#6#d}fvtCTO z?y=^w+RUisQFgd0FJg7dY|`3fD1XU^xqiGwOHtFo>sE076# zHW^9CA}9C9(Vn~du+ea+G^Kpn+C_HBv?p$^chUq|lR_?vhuM?@rFWF)NjLCc3WUPd z$oPqa(gJ#Yyo+OtO&hU_x9NTeriHHl@DTp+B7BF`B>vMK+q^bfb-Mk#tQCLguwjFQ zoj=Yfk{%UJa$>XqDEsXQM_7V0mZYQbE+ixzL!rYL`h12n{U+0pCq{<5KC|q$$Yoo| zpl&M9+~jK-Na>|aR1X*83~JuS6F(ei)L(Ve=Z?%TRTPWk7nL;B_ri?!$&KuP#||0CL(`WaMi+TIdAm((Axo$ z>gTITbi|E_|U^GP>dd8<$B2fhQsME{v8`GgaAJY7NRj56S%I6IMY=(5QN9f~6@ zI-pSA&)dohV?1PXATQlts?f6{SFg;P{f-#$iTh-U(!x;NYliBX_tt`yjeYzuG zNhk#4(H_VnpNH^khTjwiSb7~%xuKCF*7xJE2`dHt7#bI4_Y+ld)Pr#5aJJX$(Cc*f z0Ib#j`($p@Tx?q#-E%0X4Ia67TsbU6?)j%#yura$wr!+-3gk6vsX$4grUvyP9Jm=r zNLyKYXnkp_iSc+!eY%dZ?V++U?S}FpWW+%Lv|unM18!-e8h7+>*iu_;Is0Bs z#Y3;A)-R`7(VChU1hX?R#hkyt9t{4dP7xHr>;%VuY!#GHu^TZd1n`nYb)D8l*TYU*AOy zJjDR4W4fq-<5wUw6^rBaRZow70OH<>(Mwd@0ULIkXWIuE4a{QW=`0SKyZ%9Iev7IN z1DKuUFjoMBV30KSq9}ZfPc%uW=*9cIL7gna%38jDR0 z=~>>h}sMF|3B7?IM(z}v3OsTs`) zuS*`okr`%Zmn@=qHsaT!I?WrcCVjCV@AKA$Hnf(ZD{4kCGf^r%(P1H|^wgNiqw<&m zd4xUNmsuSWW^N9qs*h|5dQs<)!h?}o_H&J2Y>f+amKRA^AzGxi5E7B^1s(Ry)bHD8 z$WD3!7?{&-GxUySpJ8r9i`FUAqk3VIzJ;a;8G73zh_~gq3E~z33kFHZQPKLGdX6Vc zFRF<-f?9RV*c78p^eySPfo%b}*XPe^mEdM*xXej~mI2U(LUL8C`Rfj`2=F>p6PxZh z4=u!nqn&Q#@!z`C$2emUuslO=ldUVqGz+8jB7FgmZ6)DD{mo4W!<^mna&A3L&)XVW z2pAo9lla{??y?lA2)ZKxNY~=oGAr{z3#73cX4i7;XY(&sv0Q8PKtU2@YPFMq-l|Agv4HuL? znSxPM_mE=L1ha%F0YCqk8vPRB zjSyL?4*VeL4?XWnreIbtco(sG=C5x+6A6N(wT11Y5be~r6U$t-+B~qDnkD~mw!|MG z^F^oNYp;om?oyc6sBaS5A`=g9Ye_p~e`;KhvGH;yuaYngsXu%>BAD~HTZ{qT-(MJz zp)30CXXUoelakKk%(?4@MF$h7B(q6T-*m?A;%wD;?{_2S_zGNhl* zO|)deV=4K>BI9IlC@MV5{@rX)2GK$iV#L>@jzDL)&Eu~+YMLH=ICbCbetLC*`^Dy5 zDLM8a`p!)zphs|;8ZUkEIj|wBIBETR&AHs>>rLV|LEn&&RSs2L6?KcLo*-XA3hlnE z4FI@8=lF;3*V64vKUtm^WKj9`Q^*#(MyLv<(}Txql%)7OMBvs4IV4D)PIE~7=VDr7+}(wgN2n|!Run2+4erG>u=j40%~njT8j@R_frKRK zD_eUuntK$))S*ks%0Q1iDa`knH0K_E`2!x_pcx)Noa%Dqbl-uqk)PhrR~*2NV^Dps z0a?ii+ZXLWlS2}rGMZ^eajaxu?(cz79TV?q$uswB4K1r4>%BBd|)s5$CrHiUBq#;N*kCSfD~X2{q|JKdtuWud9L_wZt3m1n;ZIobo}JsLB* z@HCri5Dq{7?#uZjh##W>I%gEVFwG`4To|PgyKUBZex6fmiOR0ivh4J|o<{ONUv+P3 zeG%bv`tcs?qRx!(>S%3h5BlmARSRzsH?markBb$!P2XxIXv*j8aB9oW1y7C=6!5F! zich`lc)g;ZAs3@33rM(J0_TP)v>Ly7?fP@9pg_k*7vL;SA@8q8&+xV_sRYUJbmIib zm^hCmf_@B(AZOo8G_GKuq=KnP1!8|SnIc5++C=J4i5r@3Vc*|u?VI+GH{X^9gSJ?< zgV(Q6N`Pb81j7A4FCM+URZk7uzZY8wOu+_0@eP}R4pT@4lvX4z9xp>i?_Tw2m6<$s zGD7r<=kQyN3TqLuuFi4e zhd_j!2SVn0pCI@%~8OyuT3?u9-k_K6b&g?r; zhF}#{a)nGW54%&E$b`eJ^efq# zV8j_N&pU~MYnIogvT=A~?soqWjZ+rV4N(l;piQX}l0cn?$2-j?a@IgUAmz3I1V-3m z?liM!Q63BSxU=if1~;a4Tx9$9eWwYDYwV+1X+=tU)rah7`Tj=O8Ye-#Pe7(_us-zQ zH_&~RKQB8Cz>cOCHF+TD*#FA+@u1Lu#7jachY9LHGC=wKILkw5qr9FKo4HX*?2BUq z0{POp2EZjU)2f=*;=A)Zf^hvkp7nsB>z4glF#fcVv?N@YwF0_n71Cgc6xm<)i$CP!zdh# zvrCeb4-EHdq4tG{IQK@3O{-l1fMs?-V^QvWjo7K~1BOtEeKTI#PV5wg{_={wDS+ct zw!tF`33~~F`3MCEeBsM*3o8bnNUJXwz+dNwYZT~Vv`R>Gq9zU4K1vq4{tjUl4QtAH z02Tn4ULG<_fxRFDA+!8xC3VWBm~xs-yu$)hBy?LH1}Io+{mqE-jy@ffWg)JIf5j!< zdw>+pOqpgNj}xT8?R@GNQ+QfRdDflsaZx#p%X87lv{%XG|`Z-0~O*_w_{fNU; zV3=RTe+$3p60NTtz>r$LQwQ8Iqccf*Lec-GJ@4E9gO~Q)PQCP*!SY>ovv4aJH2n1_ z@8j|O%Q{>FJw@nJk+^q$2wdaQ4@a^&w6&A(%5v5at9AR)TT`qbo_(<`ZZ3s)*XG;P zs*4SS90&0vtZHK;!c-Fy4_yY`g77ON6O@dw7b+;Jde-Ql_LqO7dAbv0>cu zBHipN#?xl~n$L)zU2Z>3SkQr8spO*SnrDuc z(CD`iP>u#JrF_Zv{fLU&<8d3IQILkajXl@@`h2&~ z&yX-=@3vhh=d9|$A3ywuFh`Os|J=#_`lofe#~W8Ji4{v{R|olX@cHElE%7;0C@E4) z(BWa|Pe6kg{`>WQVUyZ_cq;K4*8NbRk>}qUTZ)#EKVyL-`|?X-bo{q{=cQ=5Zu-^G z@G7(l^))EL|HATz;kgrw#Z&jspCj<@)ML5Wam;YhZS8Pt_2Yyngs#3f^wf(5GOKNjz!F^tIu< zwM)=!`4j&y#VC)DY{{cob;blyX?Y)oNZcfNDn?bpt3u({tOH1!j549{7ZGz$-0B|5 zaZL%;Tn`V$;A?5_yIGY1+COS)R`e|UiwLnzia=(%*T0FIkOQ&Y&06${UHKvL$u#Sn zlBeJz9-Wp=f@7uCj%dZqheQex>8C}K#3pE0N`E%Ub7;|>#gapaMBc`MZA?$2_#SVf z{KVewhH}(XSym5QA40r30<~;(A%dFPu)<(Y_4c5ORh4zZ%{83nm`--wMH-deL$dsr zu-v`NGUC)cUa+0|muO8_-uB81B4aJxt+Qz$%htxW0-6bU*gL%+mGDlSrv{2lH#|!% zZNg61wwYep4xYCoCEgztWx-_uJiEXkAt53}a_u65_=*Li7F< zeq?fzLA#R|@Z69$KgAe1Zs%KwgIeAHZAP;}7;#t>lQ!SXYfvo!o7QfaPT|7=-Wd`A$u(;(K|x~X^Jn#3AGK3iYh}M?I<)H@8gx&UICh1=`l=#3$+D%_ zX;(>d@#p|RNAGqBrWXX|%T;mbw-BUDoYw+%AErL8 zfb9#Bpo8EZ?-}`gG3#Lw!`2f-n7ZQbJ>*N==n$!S4nwKFaXE+pgAIWKBa0W(K3Z}6 z0IhOjG6KOr*cf|+t#>yH&I#XysgGqiolUE=>P=3kyS^T9xC?EoeJG72Eb=MgBS1}P zr!`d7p+{MC)I^#bj;u}?rguhJ zKrH|LNThWqC?73ne@m@p;n*BJXb*F6hPxiSlcmfxT4DIhFvEm9%w2jW{Bw5u&PlB+ zKNTdskf_8N%;X)GbKrJh)H}t-Yp0+h8%+a`S1+JY2{Q0uoEwe@lVG8eN-Ca*q3UMN z+ASuUl2>7lFq28{q$d?EhTaRw6(eQJuo%a2f51(-SS>XB>g<-R&StpW?t9KCFp zp1vvgvt_H7+rQBr}KoloaF30Uy2~$jcFQ zWw!)j!I#!>9^JS#Z@D2691*six~x1n=RM_`=Hh6@(Eb}lL`*P2Pd9qrER#t8()+fb zyt+7|E}MVBpSN6pT>gLca4U2U3jwhS~ot@ErBmisS=h--X7=< zt5+mw7sazn*kzxMYGrW(yFq1G5nNz&|Of$sTf@=D-RIC)_w1%zCRuD`Y|8#4ayO zm+`V+UZL8*!=80qsJ2cUBB3akB_NskPY=Oxw`Z8yP4)&?ZwvDRGZP%5P~>*kC8Hpy z`+7Lg7JEbK)=W$jmZ8w%Zj@v%2mfIQF?a9J@T8P&-2{52V0z?LH>x_L1<8H7u{Gqx zxqPYjMTj+#z_rVOiQA4M?FdOB(kb&R9d1-|5o0uvzVrA_DP&V}8#WNHY@C%1oywO-e-2P>i1XaiSKZM zYC`Yq8{UZ(fe3fr<9`XqKB+1jIv4gdy+{|evE-*S{k~ESNO(Fk9OOAg*cQj(`7FEq zJ~uOTVg{`w*q!fc+s2yu2sYlkRq3F7f$TP3H;vWwbFDSn{#E$){RXRZanhN@tCkjv zJ=oJ-8w%5DK9G49x4f5G1|w*tI}m76e&ZREMzk)_F{_QXuJF`wmK2AWEQhFT3UxX) zf1<5ou^Bn)e!6+>WfV@>+VssJoufR|*-cvSI}l?f^sgF|EAlt**XHOtFW5fIj&F;RMPdz{UzFZ52 z+q&vK4@{1$>bj=S$YBz{GHwLODE7rN1W6gJ<$C-jJAm!*BlEBjO#}aaJDIJ0osQLf zvhRR+9rrJE*bZsVF#*es4V0hsgkj%~fh`cKaj`^-pF}^Osqe+Gl2A~g zavXUoGwF^hf`9v=Ny#?N0Lyh4I7q*(F!?O=#WHT#7|!`Y6G}Am<;e^Sw0-ZJmD^kp zAwz8!ux~K_XGSu9^=W_MHWkk-kKstUdjNcl%uQhven`8asE+Nh+;ef4TIIYCPEKJ{ z3;mxZaEledPA~0VX&mdWpZ4>U{)=MH8z$8ljXz}iQWuQrl?lw=D*K<_hTRwXFv-8e zi_p$idTj#YbBL~Gu_D=L#9fxv#b5wP0U?Ho51x(hBl4c~nBia(a@k~`?&8?*k8DPX}12i5bsa8>MNNDnHP3-7SObczXHy?mEJYs>lVt^3lahP`*oW_ zFt?ZL4~(S%%X1MxMka$TYVk|mRlbPU&4p;A5KDu|aEuUQxvU2ctZ zIxE(q?^1*k4*QhuPC=|KHn|*XI+aZ8+oHWSjw7^R63N?75$W~-3eYIBXrP%gPgmai zVuddJi~c;?%=+lTV&zt!Il1Du}7*6 z#JoBgZpc2NKWga+J2?cQ39!U5%c5ZUNxl(g|M=oGZuP?WIkaF%S+{7rvI zO3^W=V@&W$D1jH+Y+0%Ky?OKNzXOYY)+dGj#hLU?L}=~aumgH(O3-(ixuWUd@Jdpf zypSlrm}xS*l0U>ueQetRG~qKD=agilhC2Ojn#=AbgeY^mqSmO2Jc#bR(n1^z--iU- zb{+1?4gAc~mCHxcz(HGWGXmh9$iui92#R`yo-*YIFLH2@;&t6(e+yBRQgJq9Re(?U z=&5rXZ+b$%-(Y5m9T*p0J{gUhyLgZxy8IKKv-$ zkL#iwu#6Z^ZvRG1ITt=KHB{TBT4E3La8lRuF`En+Qv72Ws+Sz&;@id-vNO@-(sOPQv8<{ z_m^`$qHykWmgV0jEvpfotVuysZ!r^Uc(wQcFgb%@H_2wRhe6hGQkW;j#jLvx|16RT z+;@J%71kFTIAIeMU?wNWcA>-SAufGA$5O2;JKCs)EI*x~0_t@1VWuzphlXDHAju^2 zNtPhj5A?*u&hU6b-o{DR6n#eO9`oi;Fj=+*c?ZeqJ!{SuCEQJpGV7C!!MKRHho2vTOrxL7uG%Zym9us9hk0M z^FeF7++;RK9J_`vJCS5&tA*H4U1Gh)E<|V~hJ2W-{sQ0l*R}_mtv6ROgWUA~KWa+S z128`cK36X#rITs8#@o%{js05^yoy64YDs(fU?fsynyN+6;xYL~0hE|R7f z$+ulDkZSbdZ%v--`j=w{YJ?>Rk2aJ3Bg5ET5+D+?1@U}(s;3BBT_I>+lmlZ1`r|?7G*xa6Qf9k(thPPQ36;Xw1K)@Hl}VY1 zgHumA)m~6l`K7GWyk=b5L%O{{m@nbLGC8mBFjWpyMk#DC!k@DcUUdt->Z4|UhML({ zTe9sPk+UM{c1qe;QIz+02ga)MtpkpaT<$y8XR3CdO}cdC-`g2yHKML*>?*27&cy23 z1{3g)j<1D0oR(|Al>XMA@`lWsDt|XnpWTJ8Nq5Bc&c4qJD%OUB0l57@A5Ja&JG8Ss z#uPv(Hr|2qf8n{XYdAKY{UTwWmQ}TuKn{H~f;P(l*fHS#xJ-!Caw28O?PyRxKB^4u zb|oN_vpIBAUGqIyH_|--Xx^kWT?IttPMTQVA~=#2I*O&%${PxTBQsSf0pmLlPRDDq3h4oKJX&HBOLRA!bf%HMw&1y@h`a8Q zEFkNaVkvM%o1)861z~Mz#6dO2H6VS-kdiF9`>)KP3Z^D!@Jje&K-%Z#~=Whl6DP+AqbOLzSY$ZFEw*=Y$& zD#PV`7{5~497=^LzqwUuFJoU_zs1DCu8Q?fZ(}h!(7$;L;hbR4el2f6oECVtDW~f5 z(Xsq^Y?;L}^3Fd{GUv5{OU}x6cn->}LrJ{3tpnd~2LI}<)05+CU-I@{zX$C$lnTdI z(Ahe@vh~M|7c;_2fz`x0(vm~Ty}OQeWPzfkX4LmubVrYFQ_uN%5Wy3?u&wVr(&r1T zo)pnw@TeERWML{c!&!Bf{6`Ecb?I;B@wY=&H9AQlP(d;oVqif&yU3YFnnKKi2qg}c z{r{DG04&pNYFITBPC7^#1+C$EC6=Fd>i8i_<-c}j!b{emX}nhkPLcwcs_=`xt+v_x zLNb;JG3``=ZLK?YorumzszQ0Ou?-q~C!esW6-Z2Db)_@|)~^%wbc{#wH~Ld9f-SJZ zA8{LYU!f@i5@9*~Jgz56fi)0zIJ#EwD)>b+4jkr3XTdQfA-sT^7+1=AN|x+X=U$$^ zjF$v21#p>im*p#5q~+khRmw5+b;N^`;7zn|m$LX9X)jZbLrUtK_;y|j^sZ=ifpbPX z@cRO?R*Z6%fQetkb9+8_0`*h9F`AK)9$7}~rF*l?66x^Jj4@1$%g@xdL+0vAu7a~d zUvN+GzoDK@bTF%7h_NdwSK|9ssYx5-6Q9NgV2Gq!XN5A1Xviq%Q9-3Gu$lH?in@>@ zLs&X|Wxe5>SQ8ZUN>2XEzl-|emNwEz{dl{6BpJm&ra%a-(upgrK)qe^lTigN0XwpP z!JaZ&w>eOv@Q&+;&5bYD3i8TGcdJX23aEr94}@Va4G$STKq z+TrCQMeB1=iF+)D>2B>mK(0?^zHt6kekA-IR!_F7PhA>3l;#Q(dsariO7A85v3sh= zqontl(J+-}1MQOOUY1#Q)Sn@n#s)D0>RqkKD3nQpSFWnacrXX@fTi*`WR*pM`<>|( zi(njB0_;sNh2r)=H;XBfXM0lINy3tXfi8pc$oU+b_87czTbWAHJ`V-DT3%D31s9!~|P!ebPQ#7n!y|@`vYv67Bngg4TW{tllMwKH(T6%Zp-f zQpn>{%CF2Mr(&T_ps(Y_T859g8yzGx3f(lGX_%eIx4SCx;3iiGag<&{lLtgPWc_+~@*@#4Q$3KB4pbKuO^Z}|%d6eGLPYEE=>gxD>pqyN7xb5rB)Ysntx;Q>UmY^FB~sYx*)E}|79TSEcr=d112`pA z3h+nbFyI?L0*<>ryWypUZE2@>Tc&$T? zXLDw$cTFSo#vQ}IKVQx$GPMHC3E!~A_4;$Ojw(50MhOW-Xw(>(z$F9Bk=jLU!A7Y<*ubmgV~+usL8F0h zuo$gQXS{+9OTsqutgrDvCK_lo+7PGa!npZc2L~=o1eUAanLIPHt>WOXeUv?_QM^|NVJ<%aqA2*HR6E^V6QQaOk_oW6;(Q4pq* zmZI_b`Tp&7Mk{Gw3bW5Xe^I2FOGQP&hq=ETY{L8Oa0wWF8BU2^w}6m$BPAv=2n9g; zn9^5G9Ah1Pq5sM$(9N~{iar)5SBeF@H7#GlXx8-P-%T97*NmDnEQ<{r5s_plAUF=3 z4k&?cZVuA;ydn?7KNuG`x^R%IoeP_`K8*?~)I;Q;$3+n#&9 z4_VP~>5~Z^I`+D~HM1Dhj3OHK75h{~Z z)j>$U1MdzJb7U5Ux@5X~$Rs+C2S8_Iy_gBHBa%apJ#74S3R3Xk`B?iAN{f)(W5D^k zL0I84>sZmxlu*ahXG{&kXH4z%$kHzrA$J{Wq>?}~m$!oKul4j?rSoRXfXQG!r9V$t zR8f>ha@=V}QugPZTk@)Ncjb6+(sxIX|Yf5~VgO(8A4s zB+=CA95bzuNIRl~$5fvd5UvV|YkKZ!fv!BLGU}X=1Kg#A-B<@|Rt?o`9VU+i} ztz;XA)!@YI-v|sA zcDJrlCW8m>m(}mPxCH{OG9ja>GAi{cDXwx+c6m;1sc6(v&lA_Ip}wQV zb3H-P)hL8UKkJR!onKI;`UI)6Eln8(BL)a5l}lrl(pZza>Ht`0l+>v&K`%8AOYmI# zSI?z80^%x~Ne!zT&=RE}RufDD>pU(I)vSe0Ni(uFvF@a>K_+M;ts_A-HLDg1r_x44 zCE=uQWQWlta#7(417QrTK&WIIHF0PN3iyA5(h3{p)dqsYSkxl&z;s>mML!kX1dLyIhL1!bPQNk5T}f<|GB%!z@7X*}4(if9ki$)td}RYD-Gh}By*#iNlY<@vS^gAskY|B{J@?N@U1Dv!CPWMuh@|9-AuQu@ zrF&%@070w|fJxcK0r4pke$ilHJ!T*gF{sGH7xT?xMn01~ON@u%pQHGstfdjj^0ihE zzzS~!4${tT2m0UfR>xxP_Jd>q`BR2s1@^>XA$11DE5waTW+9O_hpm8U0dQ0qA>40q zBOsP0iaMRkkr9Y_q}3^w!_6nkKSI(nb$05n>wS!v=_ezN$Bt1n`6o|sCk!YlV6(Rs zU@@Nm{oH{(7_sy5)L^W1Nq4uu6(HAL&P8AT0PO_j)b;ADxEOmV5k!zAb>z{WHVb-w z269%MEnRK=|OE`=fUZaL90GfhlFfLx$t-`K>1m zI`m-u(8b;D7&;y~*f3(vjZk^`JVx>p(4j}y_(wK8a#uVtvhT$C<;=-Luza?5c<062 z`JO1+RqC>fP$VR%2ErMCc=87*cAtHI;)ZU2h(aIbUhf5-Dp2?Lb!{(0rN9)W1ZSQ* zU+2G8s;@C@d>J7xL`vLk3r4X}AR~3_d$*i6hfQI|RWr%0fLkZnZ}j!cdLZo^J5X&= z0K5&AJc|t#`}0sMXNytY>yc=yLlO1aOF$6J#vUwbDQc7-NR&70WkRf{R%G~+#!{5e z!_bC>5<(ulIYXVq;*aJFp^Lo`7(<(x@`%h6frv6^dnZ#0` zAC}xEFc9bF9&X}I1D1(i7*Nu8EI5xX#AjHD?IQ@zH5`ODkHf?+=p`Mj3cXO=4|mue z))~0!5-Av~k4W}K3OleiQ$*P03UNuNsOY1LUWa6|sktYUJI~+4S@^Y_EJO>P2ET-C&DNhPkwbv?(NM(cquQb|(f8iyL0j5@kcg zU4rf=dU!=Mr>R$3TZ2e;EeyEWY1^kxCLg{j?EjjmRSbOR!9l8y(<-UAXKaJbn&24y zk0e5&Q5nJ$3M}oio4Nxz*tI9yNVm*n$Y_Fz2#SnSPST*szq`Z5+}fC!<8hizeF}RH z2XLKnHqxXYr2c#MTXl*KQxLjlNfrJm>kuVYytb%X7+Ew3XYa&`Y%G*EQEK z4+|FCuBRemCxfTS9j?Um7GoNm$B|4x*_x=uvgG$asMjonA+Fev*pem4r_s$8o2r&U zUIV&+$q?nPqS)=o9SRulS>u~k=jj@xc-W#)@(!k?Pl*V#%UM8Xl*RyLAH1VxoSYqb zqcs%Pw5Il#4HYWAz=O?02WSn~Smpi)Hf%ESv`&i}wY3!?m;(EHYLlPiJkf1?_5F7>u z7+`RBclUvT!Cgaehv30UkOT?tP6!Yjf(8Z~AcH4BaNGISySw$)w_nw6)vbHG`#z`p z^k3cm^r`dodL?enOO+ueeS1o|_^F+L&C#UQM07SXk-KWv8o2QYRw484Pz;M(?&*eB zS`|a(y896_kZwxqCh4*mx$6LA_VCw<%iMNC$0yN|H`HQZk!u*e&{HqL!R&f#kFP1L zGziMYZF-3mnxbxdfumd3JDZuPT9k%pU$5bOxd2}nVbU9Xu~0- zA*05K3_=!H-e29-+_&PcmnszzjJ}iING@Fcc&!-IIR7MLuud@CLa(Wy7wM3|RqVim zr|czbI|!z7U}7KtW|bbs);F+Gy^zBe*d5QIrC_ewxFz~H2Bo?@%!}BOul7#d@=hzf zS1!Pk)+sMaaSyBSv>zeE<0i!w#3jsbBY(QXwej+5%mXK^9j!z?OR9M&i<|l^s48us z0o!~4m{EiYKe>Osr{`Sg%US!(D8pf++Lb8=QT-+Lf84z${P9YNOPMIoDE34a6}&C&L~Ug&odj$L7pDgGzWd%Mwlze6 zNH+J>$`efH55q`#$&mr?<-}}}dYmusjj)yV$J-ZZ=J2Vjwdzj0qWoH(e;O}ZLNt?~0!l_q!Ki4C zsaMz|+Mr*Lq&Jlf9d?w;iY{Idg7hoFFv*_>j`-F(coak1G_=LaT)&pZ7i89 z|Mm0V$8(t)XF2jt;u}VZ6O8!WjQ#tSLM84kfbzP2`w7G85s&8kPj?|JsVvVGAmbXk z-A&_O%5W`~b)0OzI6(mHsyth*b64$lR{eB_(g{m*4nTF9nUD#ft9L`I4R&zTZ(pys zF8#Tkio&)m&i7M5DNATGl=yv#`V5&eq02hau{3LMI|EgfU=@~ubEq~-WvxFN$_0&? zh{fm2(3L zTa+)ML`;B(c%DU^MD;#o6@34m$)D%r)%>wa`#E*#oACmgZn5Bdet20RKi?Goq_Enx zc+T)_<Hp@b3?xrhV%0!!gqfkUr`2+i`VY*9ssWE|a)qhpW{>-w{PdIe zljA#zlI*A912))|;wI}>W_Et|0q{nI`f~l-S^OJuWY;I(o zMatdzPYZll8;Xb?axI_}V;~Vf9Eh97X@A4jeL5R zpB`IbkUg|@P^v=AyzF-#DA&U>N!Km(MyewJZ{N=mro3%Ih$9(E(B2#;>RsT|U2LXg zQF0BcwylBf&s%8*Nbq*LplxiP0g>dJ8j2W#QE`QEy{|@GxP5tYcSC1x38WD{DeFC7 zhGEXA;h6eqb{4L1Eyll=V5ytA3Mz}q0s8aXNBKLATCV= z)Y(UqdHdhi(3?U5XOZ9woEl_P3F`#vv4i(QgXvFKm4i7F(x$bo#r# z{+&Kf!|v&N{ahp2qHAy5Te7)Nrbja1Dk@dEDgE27veFlC`{^=j2I}|X=2pI}QKt>l zFc4MYLMi9SrD$Q&Q2$S6Rg4KdcTi>Y)AwpYneWA~*u`7c>oK}=pSaXG{n^^;+eamD zBw6_C8Jha8hlt6z!Ci^&T_~iTL&Ps7na#-niF+~$%=8Lr(?~pOe(HxAnDnn}FER6k z>OqUR=Y3rTbErl`iNx<#T$>SH^`r4a3Kze-?Kb~HDHNKeXp^lAd_30r1@1IyCx}yj z_2_hYWoNi@v>3dB1l^rai_K!(H8r_cTH5sJocygb=wMW4R%Gg*&@W;6rE!y~T|HPQ zzeMK0$nl~FA}$9wg2v3nW+wmJ-t5(<6M&Te*p3wkR23u zi@&-3d)T8+pC>vHSW9QdI1pHTobtrEHx&o&ebbyB9H_d0dsA=ZX7Tp+ zCpUM9*lV*|ai}XTu@c1=P^MBM=ThP$Ubv6=*UM&U6XfyT@Xx<_Q7`(ZhmzAjF<(CH z`!a*e*F_SnKV0OV!)__~fG>iM2vFdM<--XLD3ZYIcwJAt}Z+6kDb;h8dYnk z%UW6ty;itXqk}a?D9rGDT55yslc%6AJ|I_F6C2mMRS~kFtP8u^w5~qj(PXy?gYVC1 zF~pnrvsJF;_Jf&mnXazL^V}v~g}1FQ|EQ`wp5d4Dd8iOwud%$)ke~)@8I(O2%9;IU z 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 Whdy25@(Mv9d>~vVCOHjx-2VXc-zba# diff --git a/bootstrap/crop.data.csv b/bootstrap/crop.data.csv new file mode 100644 index 0000000..546b84f --- /dev/null +++ b/bootstrap/crop.data.csv @@ -0,0 +1,97 @@ +"density","block","fertilizer","yield" +"1","1","1",177.228692278688 +"2","2","1",177.550041265426 +"1","3","1",176.408461852371 +"2","4","1",177.703625478918 +"1","1","1",177.125486343584 +"2","2","1",176.778342481435 +"1","3","1",176.746301895632 +"2","4","1",177.061164221059 +"1","1","1",176.274949297277 +"2","2","1",177.967202929576 +"1","3","1",176.601299834494 +"2","4","1",177.030542802918 +"1","1","1",177.479507160588 +"2","2","1",176.874129801452 +"1","3","1",176.114388315927 +"2","4","1",176.008394511531 +"1","1","1",176.108312589654 +"2","2","1",178.35744091425 +"1","3","1",177.262445084271 +"2","4","1",176.918844938972 +"1","1","1",176.239015775225 +"2","2","1",176.573069754873 +"1","3","1",176.039297939843 +"2","4","1",176.817922165499 +"1","1","1",176.160586502816 +"2","2","1",177.226424131397 +"1","3","1",175.938533030004 +"2","4","1",177.16493668281 +"1","1","1",175.360839598647 +"2","2","1",177.276995681026 +"1","3","1",175.945443795425 +"2","4","1",175.882779618556 +"1","1","2",176.479340919814 +"2","2","2",176.0443421205 +"1","3","2",177.412461749009 +"2","4","2",177.360818239535 +"1","1","2",177.385499180836 +"2","2","2",176.975807696393 +"1","3","2",177.379778689577 +"2","4","2",177.99799506429 +"1","1","2",176.434862565867 +"2","2","2",176.933265092142 +"1","3","2",175.983480169992 +"2","4","2",177.034092659355 +"1","1","2",176.436762368181 +"2","2","2",176.06774497035 +"1","3","2",177.121048632786 +"2","4","2",177.197721367386 +"1","1","2",176.60372408049 +"2","2","2",177.208171431058 +"1","3","2",177.148828595107 +"2","4","2",176.819076695268 +"1","1","2",176.999066949946 +"2","2","2",178.134604582348 +"1","3","2",176.429156002757 +"2","4","2",176.668322935082 +"1","1","2",176.895866859859 +"2","2","2",177.779492860266 +"1","3","2",176.414495002246 +"2","4","2",176.878897743394 +"1","1","2",177.580683078112 +"2","2","2",176.957268920193 +"1","3","2",175.747545582883 +"2","4","2",177.352595079015 +"1","1","3",177.104186398865 +"2","2","3",178.079635168278 +"1","3","3",176.903422145535 +"2","4","3",177.540284161493 +"1","1","3",177.03270969652 +"2","2","3",178.28604192157 +"1","3","3",176.405410230471 +"2","4","3",176.430830126686 +"1","1","3",177.396330635021 +"2","2","3",176.92557577835 +"1","3","3",177.055045778695 +"2","4","3",177.344163946335 +"1","1","3",177.128367531761 +"2","2","3",177.168302204533 +"1","3","3",176.353940642858 +"2","4","3",179.060899036915 +"1","1","3",176.300517050366 +"2","2","3",177.59335237605 +"1","3","3",177.115245241837 +"2","4","3",177.794457435485 +"1","1","3",177.004038102495 +"2","2","3",178.036858366448 +"1","3","3",177.701366283038 +"2","4","3",177.632808263613 +"1","1","3",177.652274608017 +"2","2","3",177.100417857738 +"1","3","3",177.187967031073 +"2","4","3",177.405291855943 +"1","1","3",178.14164435679 +"2","2","3",177.710612540335 +"1","3","3",177.687264356834 +"2","4","3",177.118175977614 diff --git a/bootstrap/stat_resampling.Rmd b/bootstrap/stat_resampling.Rmd index ccfd13c..7b53a4f 100644 --- a/bootstrap/stat_resampling.Rmd +++ b/bootstrap/stat_resampling.Rmd @@ -19,13 +19,13 @@ library(magrittr) library(resampledata) ``` -Refs +References + [Chihara, Hesterberg - Mathematical Statistics with Resampling and R 2ed (2018)](https://sites.google.com/site/chiharahesterberg/home), caps 1--4 + [Cobb - The Intr Stats Course, A Ptolemaic Curriculum (2007)](https://escholarship.org/uc/item/6hb3k0nz) -We will some of the resampling with the [two buckets model](http://www.di.fc.ul.pt/~jpn/r/bootstrap/buckets.html): +We will do some of the resampling with the [two buckets model](http://www.di.fc.ul.pt/~jpn/r/bootstrap/buckets.html): ```{r} # multiplier == 0 represents infinite population (ie, no replacement) @@ -55,8 +55,8 @@ compute.p.value <- function(results, observed.effect, precision=3) { list(mc.p.value=round((r+1)/(n+1), precision), r=r, n=n) } -present_results <- function(results, observed.effect, label="", breaks=50) { - lst <- compute.p.value(results, observed.effect) +present_results <- function(results, observed.effect, label="", breaks=50, precision=3) { + lst <- compute.p.value(results, observed.effect, precision=precision) hist(results, breaks=breaks, prob=T, main=label, sub=paste0("MC p-value for H0: ", lst$mc.p.value), @@ -431,3 +431,83 @@ f.test <- observed.data %>% as.matrix %>% friedman.test f.test$p.value ``` +# Replacing One-Way ANOVA + +One-way ANOVA estimates how a quantitative dependent variable changes according to the levels of one of its categorical independent variables. + +```{r} +# data set from https://www.scribbr.com/statistics/anova-in-r/ +crop.data <- read.csv("crop.data.csv", header = TRUE, + colClasses = c("factor", "factor", "factor", "numeric")) + +summary(crop.data) +``` + +In this data set we have three categorical independent variables that might or not be significant to the value of its yield. + +The next code will sample the categorical variable while keeping the original values of yield to compute the F statistic (check previous section). We do it lots of time and keep all permuted effects in order to compare with the observed effect. + +```{r} +f.stat <- function(means, vars) { + var(means) / mean(vars) +} + +# assume data frame has two columns, the first is the independent variable +# the second is the dependent variable +anova.test <- function(df, size=2500) { + + vals <- sort(unique(df[,1])) + + permuted.effects <- replicate(size, + { + permuted.data <- data.frame( x = sample(df[,1]), + y = df[,2]) + means <- sapply(vals, function(i) permuted.data[permuted.data$x==i,2] %>% mean) + vars <- sapply(vals, function(i) permuted.data[permuted.data$x==i,2] %>% var) + f.stat(means, vars) + }) + + # observed effect + means <- sapply(vals, function(i) df[df[,1]==i,2] %>% mean) + vars <- sapply(vals, function(i) df[df[,1]==i,2] %>% var) + observed.effect <- f.stat(means, vars) + + list(permuted.effects = permuted.effects, + observed.effect = observed.effect) +} +``` + +Let's check the significance of fertilizer: + +```{r} +df <- crop.data[,c(3,4)] # select fertilizer and yield +results <- anova.test(df, 15000) +present_results(results$permuted.effects, results$observed.effect, precision=5) +``` + +Comparing with the classical test: + +```{r} +one.way <- aov(yield ~ fertilizer, data = crop.data) + +summary(one.way) +``` + +Let's try with the independent variable block: + +```{r} +df <- crop.data[,c(2,4)] # select density and yield +results <- anova.test(df,15000) +present_results(results$permuted.effects, results$observed.effect, precision=5) +``` + + +And the result from the classical test: + +```{r} +one.way <- aov(yield ~ block, data = crop.data) + +summary(one.way) +``` + +The results of both methods are similar. \ No newline at end of file diff --git a/bootstrap/stat_resampling.html b/bootstrap/stat_resampling.html index 703cf5f..830e35a 100644 --- a/bootstrap/stat_resampling.html +++ b/bootstrap/stat_resampling.html @@ -1,11 +1,10 @@ - + - @@ -331,6 +330,7 @@ border: none; display: inline-block; border-radius: 4px; + background-color: transparent; } .tabset-dropdown > .nav-tabs.nav-tabs-open > li { @@ -380,17 +380,18 @@

16/11/2019

  • Bootstrap and Confidence Intervals
  • Replacing Friedman Rank Sum Test
  • +
  • Replacing One-Way ANOVA
  • library(magrittr)
     library(resampledata)
    -

    Refs

    +

    References

    -

    We will some of the resampling with the two buckets model:

    +

    We will do some of the resampling with the two buckets model:

    # multiplier == 0 represents infinite population (ie, no replacement)
     make.bucket1 <- function(universe, multiplier=1) {
       if (multiplier>0)
    @@ -418,8 +419,8 @@ 

    16/11/2019

    list(mc.p.value=round((r+1)/(n+1), precision), r=r, n=n) } -present_results <- function(results, observed.effect, label="", breaks=50) { - lst <- compute.p.value(results, observed.effect) +present_results <- function(results, observed.effect, label="", breaks=50, precision=3) { + lst <- compute.p.value(results, observed.effect, precision=precision) hist(results, breaks=breaks, prob=T, main=label, sub=paste0("MC p-value for H0: ", lst$mc.p.value), @@ -477,7 +478,7 @@

    One-sided permutation test

    results <- bucket2(1e4) present_results(results, observed.effect, "Difference of Means", breaks=40)
    -

    +

    Since the p-value is 0.001 it is evidence that supports the alternative hypothesis, that there is a significant difference of means between the genres in this study.

    If these people were selected inside a bar, then we cannot say anything about the population, since the group is not a random sample.

    We can easily use any other statistic. The next eg uses just the mean of male drinking:

    @@ -491,7 +492,7 @@

    One-sided permutation test

    results <- bucket2(1e4) present_results(results, mean(group.M), "Difference of Means", breaks=30) -

    +

    We could choose statistics, like the median or the trimmed mean, to achieve more robust results, if large outliers are in the sample.

    - - - - - - - - - - - - - -

    Ref:

    - -
    -

    The caret package (short for Classification And REgression Training) is a set of functions that attempt to streamline the process for creating predictive models. The package contains tools for: data splitting pre-processing feature selection model tuning using resampling variable importance estimation as well as other functionality. ref

    -
    -
    # to install package with all dependencies:
    -# install.packages("caret", dependencies = c("Depends", "Suggests"))
    -library(caret)
    -

    The next functions help prepare the dataset for learning.

    -
    # calls caret::preProcess
    -caret_preprocess <- function(df, ...) {
    -  predict(preProcess(df, ...), df)
    -}
    -
    -# pre: to perform classification
    -# pre: assumes dependent variable is the last column
    -# convert factors with a one hot encoding (make dummy vars with 0/1s)
    -#  “fullrank=T†create only (n-1) columns for a factor with n different levels
    -caret_oneHotEncoding <- function(df) {
    -  dmy <- dummyVars(" ~ .", data=df, fullRank=TRUE)
    -  res <- data.frame(predict(dmy, newdata = df))
    -  res[,ncol(res)] <- as.factor(res[,ncol(res)]) # make dependent variable a factor
    -  names(res)[ncol(res)] <- names(df)[ncol(df)]  # and keep its original name
    -  res
    -}
    -
    -# pre: assumes dependent variable is the last column
    -caret_featureSelection <- function(train, test, n.pred) {
    -  if (missing(n.pred)) n.pred=ncol(train)-1  # use all as predictors
    -  control <- rfeControl(functions = rfFuncs,
    -                        method = "repeatedcv",
    -                        repeats = 3,
    -                        verbose = FALSE)
    -  
    -  dependent.col <- ncol(train)
    -  predictors    <- names(train)[-dependent.col]
    -  rfe.profile   <- rfe(train[,predictors], train[,dependent.col], rfeControl = control)
    -  rfe.profile$variables$var[1:n.pred]  # return the best predictors
    -}
    -

    Now we are ready to read and preprocess the dataset:

    -
    library(dplyr)
    -
    -raw.data <- read.csv("train_u6lujuX_CVtuZ9i.csv", stringsAsFactors = T)
    -glimpse(raw.data) 
    -
    ## Observations: 614
    -## Variables: 13
    -## $ Loan_ID           <fctr> LP001002, LP001003, LP001005, LP001006, LP0...
    -## $ Gender            <fctr> Male, Male, Male, Male, Male, Male, Male, M...
    -## $ Married           <fctr> No, Yes, Yes, Yes, No, Yes, Yes, Yes, Yes, ...
    -## $ Dependents        <fctr> 0, 1, 0, 0, 0, 2, 0, 3+, 2, 1, 2, 2, 2, 0, ...
    -## $ Education         <fctr> Graduate, Graduate, Graduate, Not Graduate,...
    -## $ Self_Employed     <fctr> No, No, Yes, No, No, Yes, No, No, No, No, N...
    -## $ ApplicantIncome   <int> 5849, 4583, 3000, 2583, 6000, 5417, 2333, 30...
    -## $ CoapplicantIncome <dbl> 0, 1508, 0, 2358, 0, 4196, 1516, 2504, 1526,...
    -## $ LoanAmount        <int> NA, 128, 66, 120, 141, 267, 95, 158, 168, 34...
    -## $ Loan_Amount_Term  <int> 360, 360, 360, 360, 360, 360, 360, 360, 360,...
    -## $ Credit_History    <int> 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,...
    -## $ Property_Area     <fctr> Urban, Rural, Urban, Urban, Urban, Urban, U...
    -## $ Loan_Status       <fctr> Y, N, Y, Y, Y, Y, Y, N, Y, N, Y, Y, Y, N, Y...
    -
    dependentVar <- names(raw.data)[ncol(raw.data)]  # must be the last column
    -
    -# process data
    -raw.data %>% 
    -  dplyr::select(-Loan_ID) %>%                          # assumption: irrelevant data
    -  caret_preprocess(method = c("knnImpute", "center", "scale")) %>% 
    -  caret_oneHotEncoding -> my.data
    -glimpse(my.data)
    -
    ## Observations: 614
    -## Variables: 19
    -## $ Gender.Female           <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
    -## $ Gender.Male             <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...
    -## $ Married.No              <dbl> 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,...
    -## $ Married.Yes             <dbl> 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,...
    -## $ Dependents.0            <dbl> 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,...
    -## $ Dependents.1            <dbl> 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,...
    -## $ Dependents.2            <dbl> 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1,...
    -## $ Dependents.3.           <dbl> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,...
    -## $ Education.Not.Graduate  <dbl> 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,...
    -## $ Self_Employed.No        <dbl> 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1,...
    -## $ Self_Employed.Yes       <dbl> 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,...
    -## $ ApplicantIncome         <dbl> 0.072931360, -0.134302453, -0.39342656...
    -## $ CoapplicantIncome       <dbl> -0.55403561, -0.03870000, -0.55403561,...
    -## $ LoanAmount              <dbl> 0.01621546, -0.21512721, -0.93953353, ...
    -## $ Loan_Amount_Term        <dbl> 0.276411, 0.276411, 0.276411, 0.276411...
    -## $ Credit_History          <dbl> 0.4324768, 0.4324768, 0.4324768, 0.432...
    -## $ Property_Area.Semiurban <dbl> 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,...
    -## $ Property_Area.Urban     <dbl> 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1,...
    -## $ Loan_Status             <fctr> 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1...
    -

    Next we partition the dataset into training and testing sets:

    -
    set.seed(123)
    -inTrain <- createDataPartition(my.data[,ncol(my.data)], p=0.75, list=FALSE)  # train gets 75%
    -train   <- my.data[ inTrain,]
    -test    <- my.data[-inTrain,]
    -

    We can optionally perform feature selection:

    -
    predictors <- caret_featureSelection(train, test, n.pred=5)
    -predictors
    -
    ## [1] "Credit_History"          "Loan_Amount_Term"       
    -## [3] "ApplicantIncome"         "CoapplicantIncome"      
    -## [5] "Property_Area.Semiurban"
    -

    And can choose some of the many models available on caret to perform classification:

    -
    model_gbm  <- train(train[,predictors], train[,dependentVar], method='gbm' , verbose=F) # Boosted Regression
    -model_rf   <- train(train[,predictors], train[,dependentVar], method='rf'  , verbose=F) # Random Forest
    -model_nnet <- train(train[,predictors], train[,dependentVar], method='nnet', verbose=F) # Neural Nets
    -model_svm  <- train(train[,predictors], train[,dependentVar], method='svmRadial' , verbose=F) # Support Vector Machines
    -

    We can check variable importance:

    -
    par(mfrow=c(2,2))
    -plot(varImp(object=model_gbm),   main="GBM - Variable Importance")
    -

    -
    plot(varImp(object=model_rf),    main="RF  - Variable Importance")
    -

    -
    plot(varImp(object=model_nnet),  main="GBM - Variable Importance")
    -

    -
    plot(varImp(object=model_svm),   main="SVM - Variable Importance")
    -

    -
    par(mfrow=c(1,1))
    -

    and make predictions:

    -
    library(pROC)
    -
    -predictions <- predict.train(object=model_gbm, test[,predictors], type="raw")
    -confusionMatrix(predictions, test[,dependentVar])$table
    -
    ##           Reference
    -## Prediction   0   1
    -##          0  23   1
    -##          1  25 104
    -
    roc(as.integer(test[,dependentVar]), as.integer(predictions))$auc
    -
    ## Area under the curve: 0.7348
    -

    Caret also allows for parameter tuning:

    -
    modelLookup(model='gbm') # which parameters can be tuned?
    -
    ##   model         parameter                   label forReg forClass
    -## 1   gbm           n.trees   # Boosting Iterations   TRUE     TRUE
    -## 2   gbm interaction.depth          Max Tree Depth   TRUE     TRUE
    -## 3   gbm         shrinkage               Shrinkage   TRUE     TRUE
    -## 4   gbm    n.minobsinnode Min. Terminal Node Size   TRUE     TRUE
    -##   probModel
    -## 1      TRUE
    -## 2      TRUE
    -## 3      TRUE
    -## 4      TRUE
    -
    # making a grid of values
    -grid <- expand.grid(n.trees           = c(10,20),
    -                    shrinkage         = c(0.01,0.05,0.5),
    -                    n.minobsinnode    = c(3,5,10),
    -                    interaction.depth = c(1,5,10))
    -
    -# let's use, say, 5-Fold cross-validation repeated 3 times
    -fitControl <- trainControl(method = "repeatedcv", 
    -                           number = 5, 
    -                           repeats = 3)
    -
    -# tune the model
    -model_gbm2 <- train(train[,predictors], train[,dependentVar], method='gbm',
    -                   # "RMSE" or "Rsquared" for regression; 
    -                   # "Accuracy" or "Kappa" for classification
    -                   metric= "Accuracy", 
    -                   trControl=fitControl,
    -                   tuneGrid=grid,
    -                   verbose=FALSE)
    -
    -model_gbm2$results %>% 
    -  dplyr::arrange(desc(Accuracy)) %>% 
    -  head(6)
    -
    ##   shrinkage interaction.depth n.minobsinnode n.trees  Accuracy     Kappa
    -## 1      0.05                 1              3      10 0.8047626 0.4653741
    -## 2      0.05                 1              5      10 0.8047626 0.4653741
    -## 3      0.05                 1             10      10 0.8047626 0.4653741
    -## 4      0.05                 5             10      10 0.8047626 0.4653741
    -## 5      0.05                10             10      10 0.8047626 0.4653741
    -## 6      0.05                 1              3      20 0.8047626 0.4653741
    -##   AccuracySD    KappaSD
    -## 1  0.0228608 0.07111885
    -## 2  0.0228608 0.07111885
    -## 3  0.0228608 0.07111885
    -## 4  0.0228608 0.07111885
    -## 5  0.0228608 0.07111885
    -## 6  0.0228608 0.07111885
    -
    plot(model_gbm2)
    -

    -
    model_gbm2$bestTune
    -
    ##    n.trees interaction.depth shrinkage n.minobsinnode
    -## 19      10                 1      0.05              3
    -
    predictions <- predict.train(object=model_gbm2, test[,predictors], type="raw")
    -confusionMatrix(predictions, test[,dependentVar])$table
    -
    ##           Reference
    -## Prediction   0   1
    -##          0  22   1
    -##          1  26 104
    -
    roc(as.integer(test[,dependentVar]), as.integer(predictions))$auc
    -
    ## Area under the curve: 0.7244
    -

    To compare different models:

    -
    resamps <- resamples(list(GBM = model_gbm,
    -                          RF  = model_rf,
    -                          NN  = model_nnet,
    -                          SVM = model_svm))
    -resamps
    -
    ## 
    -## Call:
    -## resamples.default(x = list(GBM = model_gbm, RF = model_rf, NN
    -##  = model_nnet, SVM = model_svm))
    -## 
    -## Models: GBM, RF, NN, SVM 
    -## Number of resamples: 25 
    -## Performance metrics: Accuracy, Kappa 
    -## Time estimates for: everything, final model fit
    -
    summary(resamps)
    -
    ## 
    -## Call:
    -## summary.resamples(object = resamps)
    -## 
    -## Models: GBM, RF, NN, SVM 
    -## Number of resamples: 25 
    -## 
    -## Accuracy 
    -##       Min. 1st Qu. Median   Mean 3rd Qu.   Max. NA's
    -## GBM 0.7588  0.7840 0.7955 0.7969  0.8098 0.8383    0
    -## RF  0.7396  0.7818 0.7919 0.7935  0.8110 0.8409    0
    -## NN  0.7471  0.7844 0.8023 0.8001  0.8171 0.8494    0
    -## SVM 0.7011  0.7378 0.7722 0.7637  0.7892 0.8160    0
    -## 
    -## Kappa 
    -##       Min. 1st Qu. Median   Mean 3rd Qu.   Max. NA's
    -## GBM 0.3509  0.4216 0.4476 0.4508  0.4757 0.5873    0
    -## RF  0.3124  0.4404 0.4880 0.4721  0.5148 0.5739    0
    -## NN  0.2706  0.4531 0.4769 0.4634  0.4962 0.5461    0
    -## SVM 0.2437  0.2970 0.3764 0.3536  0.3995 0.4550    0
    -
    bwplot(resamps, layout = c(2, 1))
    -

    -
    dotplot(resamps, metric = "Kappa")
    -

    -
    xyplot(resamps, what = "BlandAltman")
    -

    -
    splom(resamps)
    -

    -
    -

    Ensemble Learning

    -

    A company package caretEmsemble deals with ensembles of models, and a vignette can be read here. Check also How to Build an Ensemble Of Machine Learning Algorithms in R.

    -
    library(caretEnsemble)
    -
    -control <- trainControl(method="repeatedcv", number=10, repeats=3, classProbs=TRUE)
    -models.names <- c('gbm', 'rf', 'nnet', 'svmRadial')
    -
    -# necessary to prevent invalid R variables names in caretList
    -for (f in names(my.data)) 
    -  if (class(my.data[[f]])=="factor") {
    -    levels <- unique(c(my.data[[f]]))
    -    my.data[[f]] <- factor(my.data[[f]], labels=make.names(levels))
    -  }
    -
    -models <- caretList(Loan_Status ~ ., 
    -                    data=my.data[,c(predictors[-2],dependentVar)],
    -                    trControl=control, 
    -                    methodList=models.names,
    -                    verbose=FALSE)
    -

    Let’s see some comparisons:

    -
    results <- resamples(models)
    -summary(results)
    -
    ## 
    -## Call:
    -## summary.resamples(object = results)
    -## 
    -## Models: gbm, rf, nnet, svmRadial 
    -## Number of resamples: 30 
    -## 
    -## Accuracy 
    -##             Min. 1st Qu. Median   Mean 3rd Qu.   Max. NA's
    -## gbm       0.7377  0.7774 0.8033 0.8067  0.8387 0.8689    0
    -## rf        0.7541  0.7714 0.7903 0.8002  0.8226 0.8548    0
    -## nnet      0.7541  0.7774 0.8033 0.8051  0.8361 0.8689    0
    -## svmRadial 0.7258  0.7774 0.8033 0.8013  0.8197 0.8548    0
    -## 
    -## Kappa 
    -##             Min. 1st Qu. Median   Mean 3rd Qu.   Max. NA's
    -## gbm       0.2945  0.4009 0.4641 0.4773  0.5663 0.6544    0
    -## rf        0.2945  0.3959 0.4532 0.4651  0.5342 0.6174    0
    -## nnet      0.2945  0.4115 0.4641 0.4723  0.5534 0.6544    0
    -## svmRadial 0.2670  0.3801 0.4670 0.4563  0.5169 0.6235    0
    -
    dotplot(results)
    -

    -

    The models should have low correlation so that the ensemble works best:

    -
    modelCor(results)
    -
    ##                 gbm        rf      nnet svmRadial
    -## gbm       1.0000000 0.8705049 0.9310803 0.7941055
    -## rf        0.8705049 1.0000000 0.8533515 0.7818630
    -## nnet      0.9310803 0.8533515 1.0000000 0.7887679
    -## svmRadial 0.7941055 0.7818630 0.7887679 1.0000000
    -

    We see that there is high correlation, so the ensemble results will have little benefits.

    -

    Function caretStack find a linear combination of several models:

    -
    stack.glm <- caretStack(models, method="glm", metric="Accuracy", trControl=control)
    -print(stack.glm)
    -
    ## A glm ensemble of 2 base models: gbm, rf, nnet, svmRadial
    -## 
    -## Ensemble results:
    -## Generalized Linear Model 
    -## 
    -## 1842 samples
    -##    4 predictor
    -##    2 classes: 'X2', 'X1' 
    -## 
    -## No pre-processing
    -## Resampling: Cross-Validated (10 fold, repeated 3 times) 
    -## Summary of sample sizes: 1657, 1658, 1659, 1658, 1659, 1658, ... 
    -## Resampling results:
    -## 
    -##   Accuracy   Kappa    
    -##   0.8036486  0.4705906
    -## 
    -## 
    -

    We see that the results were, unsurprisingly, not that better…

    -

    Let’s try a random forest to ensemble the models:

    -
    stack.rf <- caretStack(models, method="rf", metric="Accuracy", trControl=control)
    -print(stack.rf)
    -
    ## A rf ensemble of 2 base models: gbm, rf, nnet, svmRadial
    -## 
    -## Ensemble results:
    -## Random Forest 
    -## 
    -## 1842 samples
    -##    4 predictor
    -##    2 classes: 'X2', 'X1' 
    -## 
    -## No pre-processing
    -## Resampling: Cross-Validated (10 fold, repeated 3 times) 
    -## Summary of sample sizes: 1658, 1657, 1659, 1658, 1657, 1658, ... 
    -## Resampling results across tuning parameters:
    -## 
    -##   mtry  Accuracy   Kappa    
    -##   2     0.8002355  0.4873520
    -##   3     0.7991484  0.4855304
    -##   4     0.7962508  0.4799460
    -## 
    -## Accuracy was used to select the optimal model using  the largest value.
    -## The final value used for the model was mtry = 2.
    -

    To predict we need also to rename the dependent variable:

    -
    predictions <- ifelse(predict(object=stack.glm, test[,predictors]) ==
    -                          levels(my.data$Loan_Status)[[1]], "0" , "1")
    -confusionMatrix(predictions, test[,dependentVar])$table
    -
    ##           Reference
    -## Prediction   0   1
    -##          0  26 104
    -##          1  22   1
    -
    roc(as.integer(test[,dependentVar]), as.integer(predictions))$auc
    -
    ## Area under the curve: 0.2756
    -
    - - - - - - - - - - - - - diff --git a/caret/train_u6lujuX_CVtuZ9i.csv b/caret/train_u6lujuX_CVtuZ9i.csv deleted file mode 100644 index 899be49..0000000 --- a/caret/train_u6lujuX_CVtuZ9i.csv +++ /dev/null @@ -1,615 +0,0 @@ -Loan_ID,Gender,Married,Dependents,Education,Self_Employed,ApplicantIncome,CoapplicantIncome,LoanAmount,Loan_Amount_Term,Credit_History,Property_Area,Loan_Status -LP001002,Male,No,0,Graduate,No,5849,0,,360,1,Urban,Y -LP001003,Male,Yes,1,Graduate,No,4583,1508,128,360,1,Rural,N -LP001005,Male,Yes,0,Graduate,Yes,3000,0,66,360,1,Urban,Y -LP001006,Male,Yes,0,Not Graduate,No,2583,2358,120,360,1,Urban,Y -LP001008,Male,No,0,Graduate,No,6000,0,141,360,1,Urban,Y -LP001011,Male,Yes,2,Graduate,Yes,5417,4196,267,360,1,Urban,Y -LP001013,Male,Yes,0,Not Graduate,No,2333,1516,95,360,1,Urban,Y -LP001014,Male,Yes,3+,Graduate,No,3036,2504,158,360,0,Semiurban,N -LP001018,Male,Yes,2,Graduate,No,4006,1526,168,360,1,Urban,Y -LP001020,Male,Yes,1,Graduate,No,12841,10968,349,360,1,Semiurban,N -LP001024,Male,Yes,2,Graduate,No,3200,700,70,360,1,Urban,Y -LP001027,Male,Yes,2,Graduate,,2500,1840,109,360,1,Urban,Y -LP001028,Male,Yes,2,Graduate,No,3073,8106,200,360,1,Urban,Y -LP001029,Male,No,0,Graduate,No,1853,2840,114,360,1,Rural,N -LP001030,Male,Yes,2,Graduate,No,1299,1086,17,120,1,Urban,Y -LP001032,Male,No,0,Graduate,No,4950,0,125,360,1,Urban,Y -LP001034,Male,No,1,Not Graduate,No,3596,0,100,240,,Urban,Y -LP001036,Female,No,0,Graduate,No,3510,0,76,360,0,Urban,N -LP001038,Male,Yes,0,Not Graduate,No,4887,0,133,360,1,Rural,N -LP001041,Male,Yes,0,Graduate,,2600,3500,115,,1,Urban,Y -LP001043,Male,Yes,0,Not Graduate,No,7660,0,104,360,0,Urban,N -LP001046,Male,Yes,1,Graduate,No,5955,5625,315,360,1,Urban,Y -LP001047,Male,Yes,0,Not Graduate,No,2600,1911,116,360,0,Semiurban,N -LP001050,,Yes,2,Not Graduate,No,3365,1917,112,360,0,Rural,N -LP001052,Male,Yes,1,Graduate,,3717,2925,151,360,,Semiurban,N -LP001066,Male,Yes,0,Graduate,Yes,9560,0,191,360,1,Semiurban,Y -LP001068,Male,Yes,0,Graduate,No,2799,2253,122,360,1,Semiurban,Y -LP001073,Male,Yes,2,Not Graduate,No,4226,1040,110,360,1,Urban,Y -LP001086,Male,No,0,Not Graduate,No,1442,0,35,360,1,Urban,N -LP001087,Female,No,2,Graduate,,3750,2083,120,360,1,Semiurban,Y -LP001091,Male,Yes,1,Graduate,,4166,3369,201,360,,Urban,N -LP001095,Male,No,0,Graduate,No,3167,0,74,360,1,Urban,N -LP001097,Male,No,1,Graduate,Yes,4692,0,106,360,1,Rural,N -LP001098,Male,Yes,0,Graduate,No,3500,1667,114,360,1,Semiurban,Y -LP001100,Male,No,3+,Graduate,No,12500,3000,320,360,1,Rural,N -LP001106,Male,Yes,0,Graduate,No,2275,2067,,360,1,Urban,Y -LP001109,Male,Yes,0,Graduate,No,1828,1330,100,,0,Urban,N -LP001112,Female,Yes,0,Graduate,No,3667,1459,144,360,1,Semiurban,Y -LP001114,Male,No,0,Graduate,No,4166,7210,184,360,1,Urban,Y -LP001116,Male,No,0,Not Graduate,No,3748,1668,110,360,1,Semiurban,Y -LP001119,Male,No,0,Graduate,No,3600,0,80,360,1,Urban,N -LP001120,Male,No,0,Graduate,No,1800,1213,47,360,1,Urban,Y -LP001123,Male,Yes,0,Graduate,No,2400,0,75,360,,Urban,Y -LP001131,Male,Yes,0,Graduate,No,3941,2336,134,360,1,Semiurban,Y -LP001136,Male,Yes,0,Not Graduate,Yes,4695,0,96,,1,Urban,Y -LP001137,Female,No,0,Graduate,No,3410,0,88,,1,Urban,Y -LP001138,Male,Yes,1,Graduate,No,5649,0,44,360,1,Urban,Y -LP001144,Male,Yes,0,Graduate,No,5821,0,144,360,1,Urban,Y -LP001146,Female,Yes,0,Graduate,No,2645,3440,120,360,0,Urban,N -LP001151,Female,No,0,Graduate,No,4000,2275,144,360,1,Semiurban,Y -LP001155,Female,Yes,0,Not Graduate,No,1928,1644,100,360,1,Semiurban,Y -LP001157,Female,No,0,Graduate,No,3086,0,120,360,1,Semiurban,Y -LP001164,Female,No,0,Graduate,No,4230,0,112,360,1,Semiurban,N -LP001179,Male,Yes,2,Graduate,No,4616,0,134,360,1,Urban,N -LP001186,Female,Yes,1,Graduate,Yes,11500,0,286,360,0,Urban,N -LP001194,Male,Yes,2,Graduate,No,2708,1167,97,360,1,Semiurban,Y -LP001195,Male,Yes,0,Graduate,No,2132,1591,96,360,1,Semiurban,Y -LP001197,Male,Yes,0,Graduate,No,3366,2200,135,360,1,Rural,N -LP001198,Male,Yes,1,Graduate,No,8080,2250,180,360,1,Urban,Y -LP001199,Male,Yes,2,Not Graduate,No,3357,2859,144,360,1,Urban,Y -LP001205,Male,Yes,0,Graduate,No,2500,3796,120,360,1,Urban,Y -LP001206,Male,Yes,3+,Graduate,No,3029,0,99,360,1,Urban,Y -LP001207,Male,Yes,0,Not Graduate,Yes,2609,3449,165,180,0,Rural,N -LP001213,Male,Yes,1,Graduate,No,4945,0,,360,0,Rural,N -LP001222,Female,No,0,Graduate,No,4166,0,116,360,0,Semiurban,N -LP001225,Male,Yes,0,Graduate,No,5726,4595,258,360,1,Semiurban,N -LP001228,Male,No,0,Not Graduate,No,3200,2254,126,180,0,Urban,N -LP001233,Male,Yes,1,Graduate,No,10750,0,312,360,1,Urban,Y -LP001238,Male,Yes,3+,Not Graduate,Yes,7100,0,125,60,1,Urban,Y -LP001241,Female,No,0,Graduate,No,4300,0,136,360,0,Semiurban,N -LP001243,Male,Yes,0,Graduate,No,3208,3066,172,360,1,Urban,Y -LP001245,Male,Yes,2,Not Graduate,Yes,1875,1875,97,360,1,Semiurban,Y -LP001248,Male,No,0,Graduate,No,3500,0,81,300,1,Semiurban,Y -LP001250,Male,Yes,3+,Not Graduate,No,4755,0,95,,0,Semiurban,N -LP001253,Male,Yes,3+,Graduate,Yes,5266,1774,187,360,1,Semiurban,Y -LP001255,Male,No,0,Graduate,No,3750,0,113,480,1,Urban,N -LP001256,Male,No,0,Graduate,No,3750,4750,176,360,1,Urban,N -LP001259,Male,Yes,1,Graduate,Yes,1000,3022,110,360,1,Urban,N -LP001263,Male,Yes,3+,Graduate,No,3167,4000,180,300,0,Semiurban,N -LP001264,Male,Yes,3+,Not Graduate,Yes,3333,2166,130,360,,Semiurban,Y -LP001265,Female,No,0,Graduate,No,3846,0,111,360,1,Semiurban,Y -LP001266,Male,Yes,1,Graduate,Yes,2395,0,,360,1,Semiurban,Y -LP001267,Female,Yes,2,Graduate,No,1378,1881,167,360,1,Urban,N -LP001273,Male,Yes,0,Graduate,No,6000,2250,265,360,,Semiurban,N -LP001275,Male,Yes,1,Graduate,No,3988,0,50,240,1,Urban,Y -LP001279,Male,No,0,Graduate,No,2366,2531,136,360,1,Semiurban,Y -LP001280,Male,Yes,2,Not Graduate,No,3333,2000,99,360,,Semiurban,Y -LP001282,Male,Yes,0,Graduate,No,2500,2118,104,360,1,Semiurban,Y -LP001289,Male,No,0,Graduate,No,8566,0,210,360,1,Urban,Y -LP001310,Male,Yes,0,Graduate,No,5695,4167,175,360,1,Semiurban,Y -LP001316,Male,Yes,0,Graduate,No,2958,2900,131,360,1,Semiurban,Y -LP001318,Male,Yes,2,Graduate,No,6250,5654,188,180,1,Semiurban,Y -LP001319,Male,Yes,2,Not Graduate,No,3273,1820,81,360,1,Urban,Y -LP001322,Male,No,0,Graduate,No,4133,0,122,360,1,Semiurban,Y -LP001325,Male,No,0,Not Graduate,No,3620,0,25,120,1,Semiurban,Y -LP001326,Male,No,0,Graduate,,6782,0,,360,,Urban,N -LP001327,Female,Yes,0,Graduate,No,2484,2302,137,360,1,Semiurban,Y -LP001333,Male,Yes,0,Graduate,No,1977,997,50,360,1,Semiurban,Y -LP001334,Male,Yes,0,Not Graduate,No,4188,0,115,180,1,Semiurban,Y -LP001343,Male,Yes,0,Graduate,No,1759,3541,131,360,1,Semiurban,Y -LP001345,Male,Yes,2,Not Graduate,No,4288,3263,133,180,1,Urban,Y -LP001349,Male,No,0,Graduate,No,4843,3806,151,360,1,Semiurban,Y -LP001350,Male,Yes,,Graduate,No,13650,0,,360,1,Urban,Y -LP001356,Male,Yes,0,Graduate,No,4652,3583,,360,1,Semiurban,Y -LP001357,Male,,,Graduate,No,3816,754,160,360,1,Urban,Y -LP001367,Male,Yes,1,Graduate,No,3052,1030,100,360,1,Urban,Y -LP001369,Male,Yes,2,Graduate,No,11417,1126,225,360,1,Urban,Y -LP001370,Male,No,0,Not Graduate,,7333,0,120,360,1,Rural,N -LP001379,Male,Yes,2,Graduate,No,3800,3600,216,360,0,Urban,N -LP001384,Male,Yes,3+,Not Graduate,No,2071,754,94,480,1,Semiurban,Y -LP001385,Male,No,0,Graduate,No,5316,0,136,360,1,Urban,Y -LP001387,Female,Yes,0,Graduate,,2929,2333,139,360,1,Semiurban,Y -LP001391,Male,Yes,0,Not Graduate,No,3572,4114,152,,0,Rural,N -LP001392,Female,No,1,Graduate,Yes,7451,0,,360,1,Semiurban,Y -LP001398,Male,No,0,Graduate,,5050,0,118,360,1,Semiurban,Y -LP001401,Male,Yes,1,Graduate,No,14583,0,185,180,1,Rural,Y -LP001404,Female,Yes,0,Graduate,No,3167,2283,154,360,1,Semiurban,Y -LP001405,Male,Yes,1,Graduate,No,2214,1398,85,360,,Urban,Y -LP001421,Male,Yes,0,Graduate,No,5568,2142,175,360,1,Rural,N -LP001422,Female,No,0,Graduate,No,10408,0,259,360,1,Urban,Y -LP001426,Male,Yes,,Graduate,No,5667,2667,180,360,1,Rural,Y -LP001430,Female,No,0,Graduate,No,4166,0,44,360,1,Semiurban,Y -LP001431,Female,No,0,Graduate,No,2137,8980,137,360,0,Semiurban,Y -LP001432,Male,Yes,2,Graduate,No,2957,0,81,360,1,Semiurban,Y -LP001439,Male,Yes,0,Not Graduate,No,4300,2014,194,360,1,Rural,Y -LP001443,Female,No,0,Graduate,No,3692,0,93,360,,Rural,Y -LP001448,,Yes,3+,Graduate,No,23803,0,370,360,1,Rural,Y -LP001449,Male,No,0,Graduate,No,3865,1640,,360,1,Rural,Y -LP001451,Male,Yes,1,Graduate,Yes,10513,3850,160,180,0,Urban,N -LP001465,Male,Yes,0,Graduate,No,6080,2569,182,360,,Rural,N -LP001469,Male,No,0,Graduate,Yes,20166,0,650,480,,Urban,Y -LP001473,Male,No,0,Graduate,No,2014,1929,74,360,1,Urban,Y -LP001478,Male,No,0,Graduate,No,2718,0,70,360,1,Semiurban,Y -LP001482,Male,Yes,0,Graduate,Yes,3459,0,25,120,1,Semiurban,Y -LP001487,Male,No,0,Graduate,No,4895,0,102,360,1,Semiurban,Y -LP001488,Male,Yes,3+,Graduate,No,4000,7750,290,360,1,Semiurban,N -LP001489,Female,Yes,0,Graduate,No,4583,0,84,360,1,Rural,N -LP001491,Male,Yes,2,Graduate,Yes,3316,3500,88,360,1,Urban,Y -LP001492,Male,No,0,Graduate,No,14999,0,242,360,0,Semiurban,N -LP001493,Male,Yes,2,Not Graduate,No,4200,1430,129,360,1,Rural,N -LP001497,Male,Yes,2,Graduate,No,5042,2083,185,360,1,Rural,N -LP001498,Male,No,0,Graduate,No,5417,0,168,360,1,Urban,Y -LP001504,Male,No,0,Graduate,Yes,6950,0,175,180,1,Semiurban,Y -LP001507,Male,Yes,0,Graduate,No,2698,2034,122,360,1,Semiurban,Y -LP001508,Male,Yes,2,Graduate,No,11757,0,187,180,1,Urban,Y -LP001514,Female,Yes,0,Graduate,No,2330,4486,100,360,1,Semiurban,Y -LP001516,Female,Yes,2,Graduate,No,14866,0,70,360,1,Urban,Y -LP001518,Male,Yes,1,Graduate,No,1538,1425,30,360,1,Urban,Y -LP001519,Female,No,0,Graduate,No,10000,1666,225,360,1,Rural,N -LP001520,Male,Yes,0,Graduate,No,4860,830,125,360,1,Semiurban,Y -LP001528,Male,No,0,Graduate,No,6277,0,118,360,0,Rural,N -LP001529,Male,Yes,0,Graduate,Yes,2577,3750,152,360,1,Rural,Y -LP001531,Male,No,0,Graduate,No,9166,0,244,360,1,Urban,N -LP001532,Male,Yes,2,Not Graduate,No,2281,0,113,360,1,Rural,N -LP001535,Male,No,0,Graduate,No,3254,0,50,360,1,Urban,Y -LP001536,Male,Yes,3+,Graduate,No,39999,0,600,180,0,Semiurban,Y -LP001541,Male,Yes,1,Graduate,No,6000,0,160,360,,Rural,Y -LP001543,Male,Yes,1,Graduate,No,9538,0,187,360,1,Urban,Y -LP001546,Male,No,0,Graduate,,2980,2083,120,360,1,Rural,Y -LP001552,Male,Yes,0,Graduate,No,4583,5625,255,360,1,Semiurban,Y -LP001560,Male,Yes,0,Not Graduate,No,1863,1041,98,360,1,Semiurban,Y -LP001562,Male,Yes,0,Graduate,No,7933,0,275,360,1,Urban,N -LP001565,Male,Yes,1,Graduate,No,3089,1280,121,360,0,Semiurban,N -LP001570,Male,Yes,2,Graduate,No,4167,1447,158,360,1,Rural,Y -LP001572,Male,Yes,0,Graduate,No,9323,0,75,180,1,Urban,Y -LP001574,Male,Yes,0,Graduate,No,3707,3166,182,,1,Rural,Y -LP001577,Female,Yes,0,Graduate,No,4583,0,112,360,1,Rural,N -LP001578,Male,Yes,0,Graduate,No,2439,3333,129,360,1,Rural,Y -LP001579,Male,No,0,Graduate,No,2237,0,63,480,0,Semiurban,N -LP001580,Male,Yes,2,Graduate,No,8000,0,200,360,1,Semiurban,Y -LP001581,Male,Yes,0,Not Graduate,,1820,1769,95,360,1,Rural,Y -LP001585,,Yes,3+,Graduate,No,51763,0,700,300,1,Urban,Y -LP001586,Male,Yes,3+,Not Graduate,No,3522,0,81,180,1,Rural,N -LP001594,Male,Yes,0,Graduate,No,5708,5625,187,360,1,Semiurban,Y -LP001603,Male,Yes,0,Not Graduate,Yes,4344,736,87,360,1,Semiurban,N -LP001606,Male,Yes,0,Graduate,No,3497,1964,116,360,1,Rural,Y -LP001608,Male,Yes,2,Graduate,No,2045,1619,101,360,1,Rural,Y -LP001610,Male,Yes,3+,Graduate,No,5516,11300,495,360,0,Semiurban,N -LP001616,Male,Yes,1,Graduate,No,3750,0,116,360,1,Semiurban,Y -LP001630,Male,No,0,Not Graduate,No,2333,1451,102,480,0,Urban,N -LP001633,Male,Yes,1,Graduate,No,6400,7250,180,360,0,Urban,N -LP001634,Male,No,0,Graduate,No,1916,5063,67,360,,Rural,N -LP001636,Male,Yes,0,Graduate,No,4600,0,73,180,1,Semiurban,Y -LP001637,Male,Yes,1,Graduate,No,33846,0,260,360,1,Semiurban,N -LP001639,Female,Yes,0,Graduate,No,3625,0,108,360,1,Semiurban,Y -LP001640,Male,Yes,0,Graduate,Yes,39147,4750,120,360,1,Semiurban,Y -LP001641,Male,Yes,1,Graduate,Yes,2178,0,66,300,0,Rural,N -LP001643,Male,Yes,0,Graduate,No,2383,2138,58,360,,Rural,Y -LP001644,,Yes,0,Graduate,Yes,674,5296,168,360,1,Rural,Y -LP001647,Male,Yes,0,Graduate,No,9328,0,188,180,1,Rural,Y -LP001653,Male,No,0,Not Graduate,No,4885,0,48,360,1,Rural,Y -LP001656,Male,No,0,Graduate,No,12000,0,164,360,1,Semiurban,N -LP001657,Male,Yes,0,Not Graduate,No,6033,0,160,360,1,Urban,N -LP001658,Male,No,0,Graduate,No,3858,0,76,360,1,Semiurban,Y -LP001664,Male,No,0,Graduate,No,4191,0,120,360,1,Rural,Y -LP001665,Male,Yes,1,Graduate,No,3125,2583,170,360,1,Semiurban,N -LP001666,Male,No,0,Graduate,No,8333,3750,187,360,1,Rural,Y -LP001669,Female,No,0,Not Graduate,No,1907,2365,120,,1,Urban,Y -LP001671,Female,Yes,0,Graduate,No,3416,2816,113,360,,Semiurban,Y -LP001673,Male,No,0,Graduate,Yes,11000,0,83,360,1,Urban,N -LP001674,Male,Yes,1,Not Graduate,No,2600,2500,90,360,1,Semiurban,Y -LP001677,Male,No,2,Graduate,No,4923,0,166,360,0,Semiurban,Y -LP001682,Male,Yes,3+,Not Graduate,No,3992,0,,180,1,Urban,N -LP001688,Male,Yes,1,Not Graduate,No,3500,1083,135,360,1,Urban,Y -LP001691,Male,Yes,2,Not Graduate,No,3917,0,124,360,1,Semiurban,Y -LP001692,Female,No,0,Not Graduate,No,4408,0,120,360,1,Semiurban,Y -LP001693,Female,No,0,Graduate,No,3244,0,80,360,1,Urban,Y -LP001698,Male,No,0,Not Graduate,No,3975,2531,55,360,1,Rural,Y -LP001699,Male,No,0,Graduate,No,2479,0,59,360,1,Urban,Y -LP001702,Male,No,0,Graduate,No,3418,0,127,360,1,Semiurban,N -LP001708,Female,No,0,Graduate,No,10000,0,214,360,1,Semiurban,N -LP001711,Male,Yes,3+,Graduate,No,3430,1250,128,360,0,Semiurban,N -LP001713,Male,Yes,1,Graduate,Yes,7787,0,240,360,1,Urban,Y -LP001715,Male,Yes,3+,Not Graduate,Yes,5703,0,130,360,1,Rural,Y -LP001716,Male,Yes,0,Graduate,No,3173,3021,137,360,1,Urban,Y -LP001720,Male,Yes,3+,Not Graduate,No,3850,983,100,360,1,Semiurban,Y -LP001722,Male,Yes,0,Graduate,No,150,1800,135,360,1,Rural,N -LP001726,Male,Yes,0,Graduate,No,3727,1775,131,360,1,Semiurban,Y -LP001732,Male,Yes,2,Graduate,,5000,0,72,360,0,Semiurban,N -LP001734,Female,Yes,2,Graduate,No,4283,2383,127,360,,Semiurban,Y -LP001736,Male,Yes,0,Graduate,No,2221,0,60,360,0,Urban,N -LP001743,Male,Yes,2,Graduate,No,4009,1717,116,360,1,Semiurban,Y -LP001744,Male,No,0,Graduate,No,2971,2791,144,360,1,Semiurban,Y -LP001749,Male,Yes,0,Graduate,No,7578,1010,175,,1,Semiurban,Y -LP001750,Male,Yes,0,Graduate,No,6250,0,128,360,1,Semiurban,Y -LP001751,Male,Yes,0,Graduate,No,3250,0,170,360,1,Rural,N -LP001754,Male,Yes,,Not Graduate,Yes,4735,0,138,360,1,Urban,N -LP001758,Male,Yes,2,Graduate,No,6250,1695,210,360,1,Semiurban,Y -LP001760,Male,,,Graduate,No,4758,0,158,480,1,Semiurban,Y -LP001761,Male,No,0,Graduate,Yes,6400,0,200,360,1,Rural,Y -LP001765,Male,Yes,1,Graduate,No,2491,2054,104,360,1,Semiurban,Y -LP001768,Male,Yes,0,Graduate,,3716,0,42,180,1,Rural,Y -LP001770,Male,No,0,Not Graduate,No,3189,2598,120,,1,Rural,Y -LP001776,Female,No,0,Graduate,No,8333,0,280,360,1,Semiurban,Y -LP001778,Male,Yes,1,Graduate,No,3155,1779,140,360,1,Semiurban,Y -LP001784,Male,Yes,1,Graduate,No,5500,1260,170,360,1,Rural,Y -LP001786,Male,Yes,0,Graduate,,5746,0,255,360,,Urban,N -LP001788,Female,No,0,Graduate,Yes,3463,0,122,360,,Urban,Y -LP001790,Female,No,1,Graduate,No,3812,0,112,360,1,Rural,Y -LP001792,Male,Yes,1,Graduate,No,3315,0,96,360,1,Semiurban,Y -LP001798,Male,Yes,2,Graduate,No,5819,5000,120,360,1,Rural,Y -LP001800,Male,Yes,1,Not Graduate,No,2510,1983,140,180,1,Urban,N -LP001806,Male,No,0,Graduate,No,2965,5701,155,60,1,Urban,Y -LP001807,Male,Yes,2,Graduate,Yes,6250,1300,108,360,1,Rural,Y -LP001811,Male,Yes,0,Not Graduate,No,3406,4417,123,360,1,Semiurban,Y -LP001813,Male,No,0,Graduate,Yes,6050,4333,120,180,1,Urban,N -LP001814,Male,Yes,2,Graduate,No,9703,0,112,360,1,Urban,Y -LP001819,Male,Yes,1,Not Graduate,No,6608,0,137,180,1,Urban,Y -LP001824,Male,Yes,1,Graduate,No,2882,1843,123,480,1,Semiurban,Y -LP001825,Male,Yes,0,Graduate,No,1809,1868,90,360,1,Urban,Y -LP001835,Male,Yes,0,Not Graduate,No,1668,3890,201,360,0,Semiurban,N -LP001836,Female,No,2,Graduate,No,3427,0,138,360,1,Urban,N -LP001841,Male,No,0,Not Graduate,Yes,2583,2167,104,360,1,Rural,Y -LP001843,Male,Yes,1,Not Graduate,No,2661,7101,279,180,1,Semiurban,Y -LP001844,Male,No,0,Graduate,Yes,16250,0,192,360,0,Urban,N -LP001846,Female,No,3+,Graduate,No,3083,0,255,360,1,Rural,Y -LP001849,Male,No,0,Not Graduate,No,6045,0,115,360,0,Rural,N -LP001854,Male,Yes,3+,Graduate,No,5250,0,94,360,1,Urban,N -LP001859,Male,Yes,0,Graduate,No,14683,2100,304,360,1,Rural,N -LP001864,Male,Yes,3+,Not Graduate,No,4931,0,128,360,,Semiurban,N -LP001865,Male,Yes,1,Graduate,No,6083,4250,330,360,,Urban,Y -LP001868,Male,No,0,Graduate,No,2060,2209,134,360,1,Semiurban,Y -LP001870,Female,No,1,Graduate,No,3481,0,155,36,1,Semiurban,N -LP001871,Female,No,0,Graduate,No,7200,0,120,360,1,Rural,Y -LP001872,Male,No,0,Graduate,Yes,5166,0,128,360,1,Semiurban,Y -LP001875,Male,No,0,Graduate,No,4095,3447,151,360,1,Rural,Y -LP001877,Male,Yes,2,Graduate,No,4708,1387,150,360,1,Semiurban,Y -LP001882,Male,Yes,3+,Graduate,No,4333,1811,160,360,0,Urban,Y -LP001883,Female,No,0,Graduate,,3418,0,135,360,1,Rural,N -LP001884,Female,No,1,Graduate,No,2876,1560,90,360,1,Urban,Y -LP001888,Female,No,0,Graduate,No,3237,0,30,360,1,Urban,Y -LP001891,Male,Yes,0,Graduate,No,11146,0,136,360,1,Urban,Y -LP001892,Male,No,0,Graduate,No,2833,1857,126,360,1,Rural,Y -LP001894,Male,Yes,0,Graduate,No,2620,2223,150,360,1,Semiurban,Y -LP001896,Male,Yes,2,Graduate,No,3900,0,90,360,1,Semiurban,Y -LP001900,Male,Yes,1,Graduate,No,2750,1842,115,360,1,Semiurban,Y -LP001903,Male,Yes,0,Graduate,No,3993,3274,207,360,1,Semiurban,Y -LP001904,Male,Yes,0,Graduate,No,3103,1300,80,360,1,Urban,Y -LP001907,Male,Yes,0,Graduate,No,14583,0,436,360,1,Semiurban,Y -LP001908,Female,Yes,0,Not Graduate,No,4100,0,124,360,,Rural,Y -LP001910,Male,No,1,Not Graduate,Yes,4053,2426,158,360,0,Urban,N -LP001914,Male,Yes,0,Graduate,No,3927,800,112,360,1,Semiurban,Y -LP001915,Male,Yes,2,Graduate,No,2301,985.7999878,78,180,1,Urban,Y -LP001917,Female,No,0,Graduate,No,1811,1666,54,360,1,Urban,Y -LP001922,Male,Yes,0,Graduate,No,20667,0,,360,1,Rural,N -LP001924,Male,No,0,Graduate,No,3158,3053,89,360,1,Rural,Y -LP001925,Female,No,0,Graduate,Yes,2600,1717,99,300,1,Semiurban,N -LP001926,Male,Yes,0,Graduate,No,3704,2000,120,360,1,Rural,Y -LP001931,Female,No,0,Graduate,No,4124,0,115,360,1,Semiurban,Y -LP001935,Male,No,0,Graduate,No,9508,0,187,360,1,Rural,Y -LP001936,Male,Yes,0,Graduate,No,3075,2416,139,360,1,Rural,Y -LP001938,Male,Yes,2,Graduate,No,4400,0,127,360,0,Semiurban,N -LP001940,Male,Yes,2,Graduate,No,3153,1560,134,360,1,Urban,Y -LP001945,Female,No,,Graduate,No,5417,0,143,480,0,Urban,N -LP001947,Male,Yes,0,Graduate,No,2383,3334,172,360,1,Semiurban,Y -LP001949,Male,Yes,3+,Graduate,,4416,1250,110,360,1,Urban,Y -LP001953,Male,Yes,1,Graduate,No,6875,0,200,360,1,Semiurban,Y -LP001954,Female,Yes,1,Graduate,No,4666,0,135,360,1,Urban,Y -LP001955,Female,No,0,Graduate,No,5000,2541,151,480,1,Rural,N -LP001963,Male,Yes,1,Graduate,No,2014,2925,113,360,1,Urban,N -LP001964,Male,Yes,0,Not Graduate,No,1800,2934,93,360,0,Urban,N -LP001972,Male,Yes,,Not Graduate,No,2875,1750,105,360,1,Semiurban,Y -LP001974,Female,No,0,Graduate,No,5000,0,132,360,1,Rural,Y -LP001977,Male,Yes,1,Graduate,No,1625,1803,96,360,1,Urban,Y -LP001978,Male,No,0,Graduate,No,4000,2500,140,360,1,Rural,Y -LP001990,Male,No,0,Not Graduate,No,2000,0,,360,1,Urban,N -LP001993,Female,No,0,Graduate,No,3762,1666,135,360,1,Rural,Y -LP001994,Female,No,0,Graduate,No,2400,1863,104,360,0,Urban,N -LP001996,Male,No,0,Graduate,No,20233,0,480,360,1,Rural,N -LP001998,Male,Yes,2,Not Graduate,No,7667,0,185,360,,Rural,Y -LP002002,Female,No,0,Graduate,No,2917,0,84,360,1,Semiurban,Y -LP002004,Male,No,0,Not Graduate,No,2927,2405,111,360,1,Semiurban,Y -LP002006,Female,No,0,Graduate,No,2507,0,56,360,1,Rural,Y -LP002008,Male,Yes,2,Graduate,Yes,5746,0,144,84,,Rural,Y -LP002024,,Yes,0,Graduate,No,2473,1843,159,360,1,Rural,N -LP002031,Male,Yes,1,Not Graduate,No,3399,1640,111,180,1,Urban,Y -LP002035,Male,Yes,2,Graduate,No,3717,0,120,360,1,Semiurban,Y -LP002036,Male,Yes,0,Graduate,No,2058,2134,88,360,,Urban,Y -LP002043,Female,No,1,Graduate,No,3541,0,112,360,,Semiurban,Y -LP002050,Male,Yes,1,Graduate,Yes,10000,0,155,360,1,Rural,N -LP002051,Male,Yes,0,Graduate,No,2400,2167,115,360,1,Semiurban,Y -LP002053,Male,Yes,3+,Graduate,No,4342,189,124,360,1,Semiurban,Y -LP002054,Male,Yes,2,Not Graduate,No,3601,1590,,360,1,Rural,Y -LP002055,Female,No,0,Graduate,No,3166,2985,132,360,,Rural,Y -LP002065,Male,Yes,3+,Graduate,No,15000,0,300,360,1,Rural,Y -LP002067,Male,Yes,1,Graduate,Yes,8666,4983,376,360,0,Rural,N -LP002068,Male,No,0,Graduate,No,4917,0,130,360,0,Rural,Y -LP002082,Male,Yes,0,Graduate,Yes,5818,2160,184,360,1,Semiurban,Y -LP002086,Female,Yes,0,Graduate,No,4333,2451,110,360,1,Urban,N -LP002087,Female,No,0,Graduate,No,2500,0,67,360,1,Urban,Y -LP002097,Male,No,1,Graduate,No,4384,1793,117,360,1,Urban,Y -LP002098,Male,No,0,Graduate,No,2935,0,98,360,1,Semiurban,Y -LP002100,Male,No,,Graduate,No,2833,0,71,360,1,Urban,Y -LP002101,Male,Yes,0,Graduate,,63337,0,490,180,1,Urban,Y -LP002103,,Yes,1,Graduate,Yes,9833,1833,182,180,1,Urban,Y -LP002106,Male,Yes,,Graduate,Yes,5503,4490,70,,1,Semiurban,Y -LP002110,Male,Yes,1,Graduate,,5250,688,160,360,1,Rural,Y -LP002112,Male,Yes,2,Graduate,Yes,2500,4600,176,360,1,Rural,Y -LP002113,Female,No,3+,Not Graduate,No,1830,0,,360,0,Urban,N -LP002114,Female,No,0,Graduate,No,4160,0,71,360,1,Semiurban,Y -LP002115,Male,Yes,3+,Not Graduate,No,2647,1587,173,360,1,Rural,N -LP002116,Female,No,0,Graduate,No,2378,0,46,360,1,Rural,N -LP002119,Male,Yes,1,Not Graduate,No,4554,1229,158,360,1,Urban,Y -LP002126,Male,Yes,3+,Not Graduate,No,3173,0,74,360,1,Semiurban,Y -LP002128,Male,Yes,2,Graduate,,2583,2330,125,360,1,Rural,Y -LP002129,Male,Yes,0,Graduate,No,2499,2458,160,360,1,Semiurban,Y -LP002130,Male,Yes,,Not Graduate,No,3523,3230,152,360,0,Rural,N -LP002131,Male,Yes,2,Not Graduate,No,3083,2168,126,360,1,Urban,Y -LP002137,Male,Yes,0,Graduate,No,6333,4583,259,360,,Semiurban,Y -LP002138,Male,Yes,0,Graduate,No,2625,6250,187,360,1,Rural,Y -LP002139,Male,Yes,0,Graduate,No,9083,0,228,360,1,Semiurban,Y -LP002140,Male,No,0,Graduate,No,8750,4167,308,360,1,Rural,N -LP002141,Male,Yes,3+,Graduate,No,2666,2083,95,360,1,Rural,Y -LP002142,Female,Yes,0,Graduate,Yes,5500,0,105,360,0,Rural,N -LP002143,Female,Yes,0,Graduate,No,2423,505,130,360,1,Semiurban,Y -LP002144,Female,No,,Graduate,No,3813,0,116,180,1,Urban,Y -LP002149,Male,Yes,2,Graduate,No,8333,3167,165,360,1,Rural,Y -LP002151,Male,Yes,1,Graduate,No,3875,0,67,360,1,Urban,N -LP002158,Male,Yes,0,Not Graduate,No,3000,1666,100,480,0,Urban,N -LP002160,Male,Yes,3+,Graduate,No,5167,3167,200,360,1,Semiurban,Y -LP002161,Female,No,1,Graduate,No,4723,0,81,360,1,Semiurban,N -LP002170,Male,Yes,2,Graduate,No,5000,3667,236,360,1,Semiurban,Y -LP002175,Male,Yes,0,Graduate,No,4750,2333,130,360,1,Urban,Y -LP002178,Male,Yes,0,Graduate,No,3013,3033,95,300,,Urban,Y -LP002180,Male,No,0,Graduate,Yes,6822,0,141,360,1,Rural,Y -LP002181,Male,No,0,Not Graduate,No,6216,0,133,360,1,Rural,N -LP002187,Male,No,0,Graduate,No,2500,0,96,480,1,Semiurban,N -LP002188,Male,No,0,Graduate,No,5124,0,124,,0,Rural,N -LP002190,Male,Yes,1,Graduate,No,6325,0,175,360,1,Semiurban,Y -LP002191,Male,Yes,0,Graduate,No,19730,5266,570,360,1,Rural,N -LP002194,Female,No,0,Graduate,Yes,15759,0,55,360,1,Semiurban,Y -LP002197,Male,Yes,2,Graduate,No,5185,0,155,360,1,Semiurban,Y -LP002201,Male,Yes,2,Graduate,Yes,9323,7873,380,300,1,Rural,Y -LP002205,Male,No,1,Graduate,No,3062,1987,111,180,0,Urban,N -LP002209,Female,No,0,Graduate,,2764,1459,110,360,1,Urban,Y -LP002211,Male,Yes,0,Graduate,No,4817,923,120,180,1,Urban,Y -LP002219,Male,Yes,3+,Graduate,No,8750,4996,130,360,1,Rural,Y -LP002223,Male,Yes,0,Graduate,No,4310,0,130,360,,Semiurban,Y -LP002224,Male,No,0,Graduate,No,3069,0,71,480,1,Urban,N -LP002225,Male,Yes,2,Graduate,No,5391,0,130,360,1,Urban,Y -LP002226,Male,Yes,0,Graduate,,3333,2500,128,360,1,Semiurban,Y -LP002229,Male,No,0,Graduate,No,5941,4232,296,360,1,Semiurban,Y -LP002231,Female,No,0,Graduate,No,6000,0,156,360,1,Urban,Y -LP002234,Male,No,0,Graduate,Yes,7167,0,128,360,1,Urban,Y -LP002236,Male,Yes,2,Graduate,No,4566,0,100,360,1,Urban,N -LP002237,Male,No,1,Graduate,,3667,0,113,180,1,Urban,Y -LP002239,Male,No,0,Not Graduate,No,2346,1600,132,360,1,Semiurban,Y -LP002243,Male,Yes,0,Not Graduate,No,3010,3136,,360,0,Urban,N -LP002244,Male,Yes,0,Graduate,No,2333,2417,136,360,1,Urban,Y -LP002250,Male,Yes,0,Graduate,No,5488,0,125,360,1,Rural,Y -LP002255,Male,No,3+,Graduate,No,9167,0,185,360,1,Rural,Y -LP002262,Male,Yes,3+,Graduate,No,9504,0,275,360,1,Rural,Y -LP002263,Male,Yes,0,Graduate,No,2583,2115,120,360,,Urban,Y -LP002265,Male,Yes,2,Not Graduate,No,1993,1625,113,180,1,Semiurban,Y -LP002266,Male,Yes,2,Graduate,No,3100,1400,113,360,1,Urban,Y -LP002272,Male,Yes,2,Graduate,No,3276,484,135,360,,Semiurban,Y -LP002277,Female,No,0,Graduate,No,3180,0,71,360,0,Urban,N -LP002281,Male,Yes,0,Graduate,No,3033,1459,95,360,1,Urban,Y -LP002284,Male,No,0,Not Graduate,No,3902,1666,109,360,1,Rural,Y -LP002287,Female,No,0,Graduate,No,1500,1800,103,360,0,Semiurban,N -LP002288,Male,Yes,2,Not Graduate,No,2889,0,45,180,0,Urban,N -LP002296,Male,No,0,Not Graduate,No,2755,0,65,300,1,Rural,N -LP002297,Male,No,0,Graduate,No,2500,20000,103,360,1,Semiurban,Y -LP002300,Female,No,0,Not Graduate,No,1963,0,53,360,1,Semiurban,Y -LP002301,Female,No,0,Graduate,Yes,7441,0,194,360,1,Rural,N -LP002305,Female,No,0,Graduate,No,4547,0,115,360,1,Semiurban,Y -LP002308,Male,Yes,0,Not Graduate,No,2167,2400,115,360,1,Urban,Y -LP002314,Female,No,0,Not Graduate,No,2213,0,66,360,1,Rural,Y -LP002315,Male,Yes,1,Graduate,No,8300,0,152,300,0,Semiurban,N -LP002317,Male,Yes,3+,Graduate,No,81000,0,360,360,0,Rural,N -LP002318,Female,No,1,Not Graduate,Yes,3867,0,62,360,1,Semiurban,N -LP002319,Male,Yes,0,Graduate,,6256,0,160,360,,Urban,Y -LP002328,Male,Yes,0,Not Graduate,No,6096,0,218,360,0,Rural,N -LP002332,Male,Yes,0,Not Graduate,No,2253,2033,110,360,1,Rural,Y -LP002335,Female,Yes,0,Not Graduate,No,2149,3237,178,360,0,Semiurban,N -LP002337,Female,No,0,Graduate,No,2995,0,60,360,1,Urban,Y -LP002341,Female,No,1,Graduate,No,2600,0,160,360,1,Urban,N -LP002342,Male,Yes,2,Graduate,Yes,1600,20000,239,360,1,Urban,N -LP002345,Male,Yes,0,Graduate,No,1025,2773,112,360,1,Rural,Y -LP002347,Male,Yes,0,Graduate,No,3246,1417,138,360,1,Semiurban,Y -LP002348,Male,Yes,0,Graduate,No,5829,0,138,360,1,Rural,Y -LP002357,Female,No,0,Not Graduate,No,2720,0,80,,0,Urban,N -LP002361,Male,Yes,0,Graduate,No,1820,1719,100,360,1,Urban,Y -LP002362,Male,Yes,1,Graduate,No,7250,1667,110,,0,Urban,N -LP002364,Male,Yes,0,Graduate,No,14880,0,96,360,1,Semiurban,Y -LP002366,Male,Yes,0,Graduate,No,2666,4300,121,360,1,Rural,Y -LP002367,Female,No,1,Not Graduate,No,4606,0,81,360,1,Rural,N -LP002368,Male,Yes,2,Graduate,No,5935,0,133,360,1,Semiurban,Y -LP002369,Male,Yes,0,Graduate,No,2920,16.12000084,87,360,1,Rural,Y -LP002370,Male,No,0,Not Graduate,No,2717,0,60,180,1,Urban,Y -LP002377,Female,No,1,Graduate,Yes,8624,0,150,360,1,Semiurban,Y -LP002379,Male,No,0,Graduate,No,6500,0,105,360,0,Rural,N -LP002386,Male,No,0,Graduate,,12876,0,405,360,1,Semiurban,Y -LP002387,Male,Yes,0,Graduate,No,2425,2340,143,360,1,Semiurban,Y -LP002390,Male,No,0,Graduate,No,3750,0,100,360,1,Urban,Y -LP002393,Female,,,Graduate,No,10047,0,,240,1,Semiurban,Y -LP002398,Male,No,0,Graduate,No,1926,1851,50,360,1,Semiurban,Y -LP002401,Male,Yes,0,Graduate,No,2213,1125,,360,1,Urban,Y -LP002403,Male,No,0,Graduate,Yes,10416,0,187,360,0,Urban,N -LP002407,Female,Yes,0,Not Graduate,Yes,7142,0,138,360,1,Rural,Y -LP002408,Male,No,0,Graduate,No,3660,5064,187,360,1,Semiurban,Y -LP002409,Male,Yes,0,Graduate,No,7901,1833,180,360,1,Rural,Y -LP002418,Male,No,3+,Not Graduate,No,4707,1993,148,360,1,Semiurban,Y -LP002422,Male,No,1,Graduate,No,37719,0,152,360,1,Semiurban,Y -LP002424,Male,Yes,0,Graduate,No,7333,8333,175,300,,Rural,Y -LP002429,Male,Yes,1,Graduate,Yes,3466,1210,130,360,1,Rural,Y -LP002434,Male,Yes,2,Not Graduate,No,4652,0,110,360,1,Rural,Y -LP002435,Male,Yes,0,Graduate,,3539,1376,55,360,1,Rural,N -LP002443,Male,Yes,2,Graduate,No,3340,1710,150,360,0,Rural,N -LP002444,Male,No,1,Not Graduate,Yes,2769,1542,190,360,,Semiurban,N -LP002446,Male,Yes,2,Not Graduate,No,2309,1255,125,360,0,Rural,N -LP002447,Male,Yes,2,Not Graduate,No,1958,1456,60,300,,Urban,Y -LP002448,Male,Yes,0,Graduate,No,3948,1733,149,360,0,Rural,N -LP002449,Male,Yes,0,Graduate,No,2483,2466,90,180,0,Rural,Y -LP002453,Male,No,0,Graduate,Yes,7085,0,84,360,1,Semiurban,Y -LP002455,Male,Yes,2,Graduate,No,3859,0,96,360,1,Semiurban,Y -LP002459,Male,Yes,0,Graduate,No,4301,0,118,360,1,Urban,Y -LP002467,Male,Yes,0,Graduate,No,3708,2569,173,360,1,Urban,N -LP002472,Male,No,2,Graduate,No,4354,0,136,360,1,Rural,Y -LP002473,Male,Yes,0,Graduate,No,8334,0,160,360,1,Semiurban,N -LP002478,,Yes,0,Graduate,Yes,2083,4083,160,360,,Semiurban,Y -LP002484,Male,Yes,3+,Graduate,No,7740,0,128,180,1,Urban,Y -LP002487,Male,Yes,0,Graduate,No,3015,2188,153,360,1,Rural,Y -LP002489,Female,No,1,Not Graduate,,5191,0,132,360,1,Semiurban,Y -LP002493,Male,No,0,Graduate,No,4166,0,98,360,0,Semiurban,N -LP002494,Male,No,0,Graduate,No,6000,0,140,360,1,Rural,Y -LP002500,Male,Yes,3+,Not Graduate,No,2947,1664,70,180,0,Urban,N -LP002501,,Yes,0,Graduate,No,16692,0,110,360,1,Semiurban,Y -LP002502,Female,Yes,2,Not Graduate,,210,2917,98,360,1,Semiurban,Y -LP002505,Male,Yes,0,Graduate,No,4333,2451,110,360,1,Urban,N -LP002515,Male,Yes,1,Graduate,Yes,3450,2079,162,360,1,Semiurban,Y -LP002517,Male,Yes,1,Not Graduate,No,2653,1500,113,180,0,Rural,N -LP002519,Male,Yes,3+,Graduate,No,4691,0,100,360,1,Semiurban,Y -LP002522,Female,No,0,Graduate,Yes,2500,0,93,360,,Urban,Y -LP002524,Male,No,2,Graduate,No,5532,4648,162,360,1,Rural,Y -LP002527,Male,Yes,2,Graduate,Yes,16525,1014,150,360,1,Rural,Y -LP002529,Male,Yes,2,Graduate,No,6700,1750,230,300,1,Semiurban,Y -LP002530,,Yes,2,Graduate,No,2873,1872,132,360,0,Semiurban,N -LP002531,Male,Yes,1,Graduate,Yes,16667,2250,86,360,1,Semiurban,Y -LP002533,Male,Yes,2,Graduate,No,2947,1603,,360,1,Urban,N -LP002534,Female,No,0,Not Graduate,No,4350,0,154,360,1,Rural,Y -LP002536,Male,Yes,3+,Not Graduate,No,3095,0,113,360,1,Rural,Y -LP002537,Male,Yes,0,Graduate,No,2083,3150,128,360,1,Semiurban,Y -LP002541,Male,Yes,0,Graduate,No,10833,0,234,360,1,Semiurban,Y -LP002543,Male,Yes,2,Graduate,No,8333,0,246,360,1,Semiurban,Y -LP002544,Male,Yes,1,Not Graduate,No,1958,2436,131,360,1,Rural,Y -LP002545,Male,No,2,Graduate,No,3547,0,80,360,0,Rural,N -LP002547,Male,Yes,1,Graduate,No,18333,0,500,360,1,Urban,N -LP002555,Male,Yes,2,Graduate,Yes,4583,2083,160,360,1,Semiurban,Y -LP002556,Male,No,0,Graduate,No,2435,0,75,360,1,Urban,N -LP002560,Male,No,0,Not Graduate,No,2699,2785,96,360,,Semiurban,Y -LP002562,Male,Yes,1,Not Graduate,No,5333,1131,186,360,,Urban,Y -LP002571,Male,No,0,Not Graduate,No,3691,0,110,360,1,Rural,Y -LP002582,Female,No,0,Not Graduate,Yes,17263,0,225,360,1,Semiurban,Y -LP002585,Male,Yes,0,Graduate,No,3597,2157,119,360,0,Rural,N -LP002586,Female,Yes,1,Graduate,No,3326,913,105,84,1,Semiurban,Y -LP002587,Male,Yes,0,Not Graduate,No,2600,1700,107,360,1,Rural,Y -LP002588,Male,Yes,0,Graduate,No,4625,2857,111,12,,Urban,Y -LP002600,Male,Yes,1,Graduate,Yes,2895,0,95,360,1,Semiurban,Y -LP002602,Male,No,0,Graduate,No,6283,4416,209,360,0,Rural,N -LP002603,Female,No,0,Graduate,No,645,3683,113,480,1,Rural,Y -LP002606,Female,No,0,Graduate,No,3159,0,100,360,1,Semiurban,Y -LP002615,Male,Yes,2,Graduate,No,4865,5624,208,360,1,Semiurban,Y -LP002618,Male,Yes,1,Not Graduate,No,4050,5302,138,360,,Rural,N -LP002619,Male,Yes,0,Not Graduate,No,3814,1483,124,300,1,Semiurban,Y -LP002622,Male,Yes,2,Graduate,No,3510,4416,243,360,1,Rural,Y -LP002624,Male,Yes,0,Graduate,No,20833,6667,480,360,,Urban,Y -LP002625,,No,0,Graduate,No,3583,0,96,360,1,Urban,N -LP002626,Male,Yes,0,Graduate,Yes,2479,3013,188,360,1,Urban,Y -LP002634,Female,No,1,Graduate,No,13262,0,40,360,1,Urban,Y -LP002637,Male,No,0,Not Graduate,No,3598,1287,100,360,1,Rural,N -LP002640,Male,Yes,1,Graduate,No,6065,2004,250,360,1,Semiurban,Y -LP002643,Male,Yes,2,Graduate,No,3283,2035,148,360,1,Urban,Y -LP002648,Male,Yes,0,Graduate,No,2130,6666,70,180,1,Semiurban,N -LP002652,Male,No,0,Graduate,No,5815,3666,311,360,1,Rural,N -LP002659,Male,Yes,3+,Graduate,No,3466,3428,150,360,1,Rural,Y -LP002670,Female,Yes,2,Graduate,No,2031,1632,113,480,1,Semiurban,Y -LP002682,Male,Yes,,Not Graduate,No,3074,1800,123,360,0,Semiurban,N -LP002683,Male,No,0,Graduate,No,4683,1915,185,360,1,Semiurban,N -LP002684,Female,No,0,Not Graduate,No,3400,0,95,360,1,Rural,N -LP002689,Male,Yes,2,Not Graduate,No,2192,1742,45,360,1,Semiurban,Y -LP002690,Male,No,0,Graduate,No,2500,0,55,360,1,Semiurban,Y -LP002692,Male,Yes,3+,Graduate,Yes,5677,1424,100,360,1,Rural,Y -LP002693,Male,Yes,2,Graduate,Yes,7948,7166,480,360,1,Rural,Y -LP002697,Male,No,0,Graduate,No,4680,2087,,360,1,Semiurban,N -LP002699,Male,Yes,2,Graduate,Yes,17500,0,400,360,1,Rural,Y -LP002705,Male,Yes,0,Graduate,No,3775,0,110,360,1,Semiurban,Y -LP002706,Male,Yes,1,Not Graduate,No,5285,1430,161,360,0,Semiurban,Y -LP002714,Male,No,1,Not Graduate,No,2679,1302,94,360,1,Semiurban,Y -LP002716,Male,No,0,Not Graduate,No,6783,0,130,360,1,Semiurban,Y -LP002717,Male,Yes,0,Graduate,No,1025,5500,216,360,,Rural,Y -LP002720,Male,Yes,3+,Graduate,No,4281,0,100,360,1,Urban,Y -LP002723,Male,No,2,Graduate,No,3588,0,110,360,0,Rural,N -LP002729,Male,No,1,Graduate,No,11250,0,196,360,,Semiurban,N -LP002731,Female,No,0,Not Graduate,Yes,18165,0,125,360,1,Urban,Y -LP002732,Male,No,0,Not Graduate,,2550,2042,126,360,1,Rural,Y -LP002734,Male,Yes,0,Graduate,No,6133,3906,324,360,1,Urban,Y -LP002738,Male,No,2,Graduate,No,3617,0,107,360,1,Semiurban,Y -LP002739,Male,Yes,0,Not Graduate,No,2917,536,66,360,1,Rural,N -LP002740,Male,Yes,3+,Graduate,No,6417,0,157,180,1,Rural,Y -LP002741,Female,Yes,1,Graduate,No,4608,2845,140,180,1,Semiurban,Y -LP002743,Female,No,0,Graduate,No,2138,0,99,360,0,Semiurban,N -LP002753,Female,No,1,Graduate,,3652,0,95,360,1,Semiurban,Y -LP002755,Male,Yes,1,Not Graduate,No,2239,2524,128,360,1,Urban,Y -LP002757,Female,Yes,0,Not Graduate,No,3017,663,102,360,,Semiurban,Y -LP002767,Male,Yes,0,Graduate,No,2768,1950,155,360,1,Rural,Y -LP002768,Male,No,0,Not Graduate,No,3358,0,80,36,1,Semiurban,N -LP002772,Male,No,0,Graduate,No,2526,1783,145,360,1,Rural,Y -LP002776,Female,No,0,Graduate,No,5000,0,103,360,0,Semiurban,N -LP002777,Male,Yes,0,Graduate,No,2785,2016,110,360,1,Rural,Y -LP002778,Male,Yes,2,Graduate,Yes,6633,0,,360,0,Rural,N -LP002784,Male,Yes,1,Not Graduate,No,2492,2375,,360,1,Rural,Y -LP002785,Male,Yes,1,Graduate,No,3333,3250,158,360,1,Urban,Y -LP002788,Male,Yes,0,Not Graduate,No,2454,2333,181,360,0,Urban,N -LP002789,Male,Yes,0,Graduate,No,3593,4266,132,180,0,Rural,N -LP002792,Male,Yes,1,Graduate,No,5468,1032,26,360,1,Semiurban,Y -LP002794,Female,No,0,Graduate,No,2667,1625,84,360,,Urban,Y -LP002795,Male,Yes,3+,Graduate,Yes,10139,0,260,360,1,Semiurban,Y -LP002798,Male,Yes,0,Graduate,No,3887,2669,162,360,1,Semiurban,Y -LP002804,Female,Yes,0,Graduate,No,4180,2306,182,360,1,Semiurban,Y -LP002807,Male,Yes,2,Not Graduate,No,3675,242,108,360,1,Semiurban,Y -LP002813,Female,Yes,1,Graduate,Yes,19484,0,600,360,1,Semiurban,Y -LP002820,Male,Yes,0,Graduate,No,5923,2054,211,360,1,Rural,Y -LP002821,Male,No,0,Not Graduate,Yes,5800,0,132,360,1,Semiurban,Y -LP002832,Male,Yes,2,Graduate,No,8799,0,258,360,0,Urban,N -LP002833,Male,Yes,0,Not Graduate,No,4467,0,120,360,,Rural,Y -LP002836,Male,No,0,Graduate,No,3333,0,70,360,1,Urban,Y -LP002837,Male,Yes,3+,Graduate,No,3400,2500,123,360,0,Rural,N -LP002840,Female,No,0,Graduate,No,2378,0,9,360,1,Urban,N -LP002841,Male,Yes,0,Graduate,No,3166,2064,104,360,0,Urban,N -LP002842,Male,Yes,1,Graduate,No,3417,1750,186,360,1,Urban,Y -LP002847,Male,Yes,,Graduate,No,5116,1451,165,360,0,Urban,N -LP002855,Male,Yes,2,Graduate,No,16666,0,275,360,1,Urban,Y -LP002862,Male,Yes,2,Not Graduate,No,6125,1625,187,480,1,Semiurban,N -LP002863,Male,Yes,3+,Graduate,No,6406,0,150,360,1,Semiurban,N -LP002868,Male,Yes,2,Graduate,No,3159,461,108,84,1,Urban,Y -LP002872,,Yes,0,Graduate,No,3087,2210,136,360,0,Semiurban,N -LP002874,Male,No,0,Graduate,No,3229,2739,110,360,1,Urban,Y -LP002877,Male,Yes,1,Graduate,No,1782,2232,107,360,1,Rural,Y -LP002888,Male,No,0,Graduate,,3182,2917,161,360,1,Urban,Y -LP002892,Male,Yes,2,Graduate,No,6540,0,205,360,1,Semiurban,Y -LP002893,Male,No,0,Graduate,No,1836,33837,90,360,1,Urban,N -LP002894,Female,Yes,0,Graduate,No,3166,0,36,360,1,Semiurban,Y -LP002898,Male,Yes,1,Graduate,No,1880,0,61,360,,Rural,N -LP002911,Male,Yes,1,Graduate,No,2787,1917,146,360,0,Rural,N -LP002912,Male,Yes,1,Graduate,No,4283,3000,172,84,1,Rural,N -LP002916,Male,Yes,0,Graduate,No,2297,1522,104,360,1,Urban,Y -LP002917,Female,No,0,Not Graduate,No,2165,0,70,360,1,Semiurban,Y -LP002925,,No,0,Graduate,No,4750,0,94,360,1,Semiurban,Y -LP002926,Male,Yes,2,Graduate,Yes,2726,0,106,360,0,Semiurban,N -LP002928,Male,Yes,0,Graduate,No,3000,3416,56,180,1,Semiurban,Y -LP002931,Male,Yes,2,Graduate,Yes,6000,0,205,240,1,Semiurban,N -LP002933,,No,3+,Graduate,Yes,9357,0,292,360,1,Semiurban,Y -LP002936,Male,Yes,0,Graduate,No,3859,3300,142,180,1,Rural,Y -LP002938,Male,Yes,0,Graduate,Yes,16120,0,260,360,1,Urban,Y -LP002940,Male,No,0,Not Graduate,No,3833,0,110,360,1,Rural,Y -LP002941,Male,Yes,2,Not Graduate,Yes,6383,1000,187,360,1,Rural,N -LP002943,Male,No,,Graduate,No,2987,0,88,360,0,Semiurban,N -LP002945,Male,Yes,0,Graduate,Yes,9963,0,180,360,1,Rural,Y -LP002948,Male,Yes,2,Graduate,No,5780,0,192,360,1,Urban,Y -LP002949,Female,No,3+,Graduate,,416,41667,350,180,,Urban,N -LP002950,Male,Yes,0,Not Graduate,,2894,2792,155,360,1,Rural,Y -LP002953,Male,Yes,3+,Graduate,No,5703,0,128,360,1,Urban,Y -LP002958,Male,No,0,Graduate,No,3676,4301,172,360,1,Rural,Y -LP002959,Female,Yes,1,Graduate,No,12000,0,496,360,1,Semiurban,Y -LP002960,Male,Yes,0,Not Graduate,No,2400,3800,,180,1,Urban,N -LP002961,Male,Yes,1,Graduate,No,3400,2500,173,360,1,Semiurban,Y -LP002964,Male,Yes,2,Not Graduate,No,3987,1411,157,360,1,Rural,Y -LP002974,Male,Yes,0,Graduate,No,3232,1950,108,360,1,Rural,Y -LP002978,Female,No,0,Graduate,No,2900,0,71,360,1,Rural,Y -LP002979,Male,Yes,3+,Graduate,No,4106,0,40,180,1,Rural,Y -LP002983,Male,Yes,1,Graduate,No,8072,240,253,360,1,Urban,Y -LP002984,Male,Yes,2,Graduate,No,7583,0,187,360,1,Urban,Y -LP002990,Female,No,0,Graduate,Yes,4583,0,133,360,0,Semiurban,N diff --git a/index.htm b/index.htm index 7302052..50cb28d 100644 --- a/index.htm +++ b/index.htm @@ -26,53 +26,47 @@

    R Markdowns

    @@ -81,7 +75,11 @@

    Math

    -

    R Language & Libraries

    +

    R Language

    +

    R Libraries

    +
    -

    Some Bayesian Exercises & Tools

    +

    Links

    -

    Useful links

    - -
    +
    Disclaimer: This webpage started as a private collection of tutorials and notes until the web-crawlers made it public. Some code is mine, some is from other people. I tried to insert all relevant references but if I diff --git a/manipulate/manipulate.Rmd b/manipulate/manipulate.Rmd deleted file mode 100644 index 312b882..0000000 --- a/manipulate/manipulate.Rmd +++ /dev/null @@ -1,114 +0,0 @@ -Manipulate -======================================================== - -RStudio includes a manipulate package that enables the addition of interactive capabilities to standard R plots. This is accomplished by binding plot inputs to custom controls rather than static hard-coded values. - -Check [http://www.rstudio.com/ide/docs/advanced/manipulate](http://www.rstudio.com/ide/docs/advanced/manipulate) - -This egs do not work in HTML, we need to run them in RStudio. - -```{r} -library(manipulate) - -## Specify a custom label for a slider -manipulate( - barplot(seq(1,x,1/y)), - x = slider(0, 20, label = "Limit", step=2, initial=12), - y = slider(1, 4, label = "Precision", step=1, initial=4) -) - -## Filtering data with a picker -manipulate( - barplot(as.matrix(longley[,factor]), - beside = TRUE, main = factor), - factor = picker("GNP", "Unemployed", "Employed") -) - -## Picker with groups -manipulate( - barplot(as.matrix(mtcars[group,"mpg"]), beside=TRUE), - group = picker("Group 1" = 1:11, - "Group 2" = 12:22, - "Group 3" = 23:32) -) - -## Histogram w/ picker to select type -require(lattice) -require(stats) -manipulate( - histogram(~ height | voice.part, - data = singer, type = type), - type = picker("percent", "count", "density")) - -## Using checkboxes for boolean parameters -manipulate( - plot(cars, axes = axes, ann = label), - axes = checkbox(TRUE, "Draw Axes"), - label = checkbox(FALSE, "Draw Labels")) - -## Toggle boxplot outlier display using checkbox -manipulate( - boxplot(Freq ~ Class, data = Titanic, outline = outline), - outline = checkbox(FALSE, "Show outliers")) - - -## Combining controls - -manipulate( - plot(cars, xlim = c(0, x.max), type = type, ann = label), - x.max = slider(10, 25, step=5, initial = 25), - type = picker("Points" = "p", "Line" = "l", "Step" = "s"), - label = checkbox(TRUE, "Draw Labels")) - -manipulate( - plot(cars, xlim = c(x.min, x.max), type = type, - axes = axes, ann = label), - x.min = slider(0,15), - x.max = slider(15,30, initial = 25), - type = picker("p", "l", "b", "c", "o", "h", "s", "S", "n"), - axes = checkbox(TRUE, "Draw Axes"), - label = checkbox(FALSE, "Draw Labels")) - -# Button Eg -# When the user presses the button the manipulate expression will be executed with its associated value set to TRUE (in all other cases the value will be set to FALSE). -manipulate( - { - if(resetSeed) - set.seed(sample(1:1000)) - - hist(rnorm(n=100, mean=0, sd=3), breaks=bins) - }, - bins = slider(1, 20, step=1, initial =5, label="Bins"), - resetSeed = button("Reset Seed") -) - -# Using manipulate to make 3D rotations -manipulate( -{ - rotate <- angle - tilt <- angle.tilt - parallelness <- 5.0 - shadeval <- 0.05 - perspcex <- .7 - - xs <- seq(0,1,.05) - ys <- seq(0,1,.05) - f <- function(x,y) { - dnorm(x,.5,.25) + dnorm(y,.5,.125) - } - zs <- outer(xs,ys,f) - - persp(xs , ys , zs, - xlab="x" , ylab="y" , zlab="f(x,y)" , - main="Main Title" , cex=perspcex, lwd=0.1 , - xlim=c(0,1) , ylim=c(0,1) , zlim=c(-1,4), - theta=rotate , phi=tilt , d=parallelness , - shade=shadeval) -}, - angle = slider(-90,90,step=1,initial=-45, label="angle"), - angle.tilt = slider(-90,90,step=1,initial=30, label="tilt") -) - - -``` - diff --git a/manipulate/manipulate.html b/manipulate/manipulate.html deleted file mode 100644 index d498598..0000000 --- a/manipulate/manipulate.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - -Manipulate - - - - - - - - - - - - - - - -

    Manipulate

    - -

    RStudio includes a manipulate package that enables the addition of interactive capabilities to standard R plots. This is accomplished by binding plot inputs to custom controls rather than static hard-coded values.

    - -

    Check http://www.rstudio.com/ide/docs/advanced/manipulate

    - -

    This egs do not work in HTML, we need to run them in RStudio.

    - -
    library(manipulate)
    -
    -## Specify a custom label for a slider
    -manipulate(barplot(seq(1, x, 1/y)), x = slider(0, 20, label = "Limit", step = 2, 
    -    initial = 12), y = slider(1, 4, label = "Precision", step = 1, initial = 4))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -## Filtering data with a picker
    -manipulate(barplot(as.matrix(longley[, factor]), beside = TRUE, main = factor), 
    -    factor = picker("GNP", "Unemployed", "Employed"))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -## Picker with groups
    -manipulate(barplot(as.matrix(mtcars[group, "mpg"]), beside = TRUE), group = picker(`Group 1` = 1:11, 
    -    `Group 2` = 12:22, `Group 3` = 23:32))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -## Histogram w/ picker to select type
    -require(lattice)
    -
    - -
    ## Loading required package: lattice
    -
    - -
    require(stats)
    -manipulate(histogram(~height | voice.part, data = singer, type = type), type = picker("percent", 
    -    "count", "density"))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -## Using checkboxes for boolean parameters
    -manipulate(plot(cars, axes = axes, ann = label), axes = checkbox(TRUE, "Draw Axes"), 
    -    label = checkbox(FALSE, "Draw Labels"))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -## Toggle boxplot outlier display using checkbox
    -manipulate(boxplot(Freq ~ Class, data = Titanic, outline = outline), outline = checkbox(FALSE, 
    -    "Show outliers"))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -
    -## Combining controls
    -
    -manipulate(plot(cars, xlim = c(0, x.max), type = type, ann = label), x.max = slider(10, 
    -    25, step = 5, initial = 25), type = picker(Points = "p", Line = "l", Step = "s"), 
    -    label = checkbox(TRUE, "Draw Labels"))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -manipulate(plot(cars, xlim = c(x.min, x.max), type = type, axes = axes, ann = label), 
    -    x.min = slider(0, 15), x.max = slider(15, 30, initial = 25), type = picker("p", 
    -        "l", "b", "c", "o", "h", "s", "S", "n"), axes = checkbox(TRUE, "Draw Axes"), 
    -    label = checkbox(FALSE, "Draw Labels"))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -# Button Eg When the user presses the button the manipulate expression
    -# will be executed with its associated value set to TRUE (in all other
    -# cases the value will be set to FALSE).
    -manipulate({
    -    if (resetSeed) 
    -        set.seed(sample(1:1000))
    -
    -    hist(rnorm(n = 100, mean = 0, sd = 3), breaks = bins)
    -}, bins = slider(1, 20, step = 1, initial = 5, label = "Bins"), resetSeed = button("Reset Seed"))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -# Using manipulate to make 3D rotations
    -manipulate({
    -    rotate <- angle
    -    tilt <- angle.tilt
    -    parallelness <- 5
    -    shadeval <- 0.05
    -    perspcex <- 0.7
    -
    -    xs <- seq(0, 1, 0.05)
    -    ys <- seq(0, 1, 0.05)
    -    f <- function(x, y) {
    -        dnorm(x, 0.5, 0.25) + dnorm(y, 0.5, 0.125)
    -    }
    -    zs <- outer(xs, ys, f)
    -
    -    persp(xs, ys, zs, xlab = "x", ylab = "y", zlab = "f(x,y)", main = "Main Title", 
    -        cex = perspcex, lwd = 0.1, xlim = c(0, 1), ylim = c(0, 1), zlim = c(-1, 
    -            4), theta = rotate, phi = tilt, d = parallelness, shade = shadeval)
    -}, angle = slider(-90, 90, step = 1, initial = -45, label = "angle"), angle.tilt = slider(-90, 
    -    90, step = 1, initial = 30, label = "tilt"))
    -
    - -
    ## Error: no such symbol rs_createUUID
    -
    - -
    
    -
    - - - - -