dkyleward / ipfr

Generic expansion of seed distribution to marginal targets
4 stars 5 forks source link

Update ggplot call and include convergence status in output of ipu function #7

Open szimmer opened 3 years ago

szimmer commented 3 years ago

This pull request does the following:

  1. Updates ggplot code in ipu function so there is no warning present
  2. Outputs the convergence status from the ipu function which is useful when saving output
szimmer commented 3 years ago

Example using ipfr from CRAN

library(ipfr)
library(tidyverse)

hh_seed <- tibble(
  geo_region = 1,
  id = c(1:8),
  hhsiz = c(1, 1, 1, 2, 2, 2, 2, 2),
  hhveh = c(0, 2, 1, 1, 1, 2, 1, 0)
)

hh_targets <- list()
hh_targets$hhsiz <- tibble(
  geo_region = 1,
  `1` = 35,
  `2` = 65
)
hh_targets$hhveh <- tibble(
  geo_region = 1,
  `0` = 100,
  `1` = 100,
  `2` = 100
)

result <- ipu(hh_seed, hh_targets, max_iterations = 30, verbose = TRUE)
#> Scaling target tables:  hhveh
#>  Finished iteration  2 . %RMSE =  9.044233 Finished iteration  3 . %RMSE =  0.4706742 Finished iteration  4 . %RMSE =  0.02385747 Finished iteration  5 . %RMSE =  0.001207629
#> 
#> IPU converged
#> All targets matched within the absolute_diff of 10
result
#> $weight_tbl
#> # A tibble: 8 x 7
#>   geo_region    id hhsiz hhveh weight avg_weight weight_factor
#>        <dbl> <int> <dbl> <dbl>  <dbl>      <dbl>         <dbl>
#> 1          1     1     1     0  14.2        12.5         1.14 
#> 2          1     2     1     2  14.2        12.5         1.14 
#> 3          1     3     1     1   6.61       12.5         0.529
#> 4          1     4     2     1   8.91       12.5         0.713
#> 5          1     5     2     1   8.91       12.5         0.713
#> 6          1     6     2     2  19.1        12.5         1.53 
#> 7          1     7     2     1   8.91       12.5         0.713
#> 8          1     8     2     0  19.1        12.5         1.53 
#> 
#> $weight_dist
#> Warning: Use of `primary_seed$weight_factor` is discouraged. Use `weight_factor`
#> instead.

#> 
#> $primary_comp
#> # A tibble: 5 x 6
#>   geography    category target result  diff pct_diff
#>   <chr>        <chr>     <dbl>  <dbl> <dbl>    <dbl>
#> 1 geo_region_1 hhsiz_1    35     35.0     0        0
#> 2 geo_region_1 hhsiz_2    65     65.0     0        0
#> 3 geo_region_1 hhveh_0    33.3   33.3     0        0
#> 4 geo_region_1 hhveh_1    33.3   33.3     0        0
#> 5 geo_region_1 hhveh_2    33.3   33.3     0        0

Created on 2020-11-30 by the reprex package (v0.3.0)

Session info ``` r devtools::session_info() #> - Session info --------------------------------------------------------------- #> setting value #> version R version 4.0.3 (2020-10-10) #> os Windows 10 x64 #> system x86_64, mingw32 #> ui RTerm #> language (EN) #> collate English_United States.1252 #> ctype English_United States.1252 #> tz America/New_York #> date 2020-11-30 #> #> - Packages ------------------------------------------------------------------- #> package * version date lib source #> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.2) #> backports 1.2.0 2020-11-02 [1] CRAN (R 4.0.3) #> BBmisc 1.11 2017-03-10 [1] CRAN (R 4.0.3) #> broom 0.7.2 2020-10-20 [1] CRAN (R 4.0.3) #> callr 3.5.1 2020-10-13 [1] CRAN (R 4.0.3) #> cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.0.2) #> checkmate 2.0.0 2020-02-06 [1] CRAN (R 4.0.2) #> cli 2.0.2 2020-02-28 [1] CRAN (R 4.0.2) #> colorspace 2.0-0 2020-11-11 [1] CRAN (R 4.0.3) #> crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.2) #> curl 4.3 2019-12-02 [1] CRAN (R 4.0.2) #> data.table 1.13.0 2020-07-24 [1] CRAN (R 4.0.2) #> DBI 1.1.0 2019-12-15 [1] CRAN (R 4.0.2) #> dbplyr 2.0.0 2020-11-03 [1] CRAN (R 4.0.3) #> desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.2) #> devtools 2.3.2 2020-09-18 [1] CRAN (R 4.0.3) #> digest 0.6.27 2020-10-24 [1] CRAN (R 4.0.3) #> dplyr * 1.0.2 2020-08-18 [1] CRAN (R 4.0.2) #> ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.2) #> evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.2) #> fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.2) #> farver 2.0.3 2020-01-16 [1] CRAN (R 4.0.2) #> fastmatch 1.1-0 2017-01-28 [1] CRAN (R 4.0.3) #> forcats * 0.5.0 2020-03-01 [1] CRAN (R 4.0.2) #> fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.2) #> generics 0.1.0 2020-10-31 [1] CRAN (R 4.0.3) #> ggplot2 * 3.3.2 2020-06-19 [1] CRAN (R 4.0.2) #> glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.3) #> gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.2) #> haven 2.3.1 2020-06-01 [1] CRAN (R 4.0.2) #> highr 0.8 2019-03-20 [1] CRAN (R 4.0.2) #> hms 0.5.3 2020-01-08 [1] CRAN (R 4.0.2) #> htmltools 0.5.0 2020-06-16 [1] CRAN (R 4.0.2) #> httr 1.4.2 2020-07-20 [1] CRAN (R 4.0.2) #> ipfr * 1.0.2 2020-04-01 [1] CRAN (R 4.0.3) #> jsonlite 1.7.1 2020-09-07 [1] CRAN (R 4.0.2) #> knitr 1.30 2020-09-22 [1] CRAN (R 4.0.3) #> labeling 0.4.2 2020-10-20 [1] CRAN (R 4.0.3) #> lattice 0.20-41 2020-04-02 [2] CRAN (R 4.0.3) #> lifecycle 0.2.0 2020-03-06 [1] CRAN (R 4.0.2) #> lubridate 1.7.9.2 2020-11-13 [1] CRAN (R 4.0.3) #> magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.0.3) #> Matrix 1.2-18 2019-11-27 [2] CRAN (R 4.0.3) #> memoise 1.1.0 2017-04-21 [1] CRAN (R 4.0.3) #> mime 0.9 2020-02-04 [1] CRAN (R 4.0.0) #> mlr 2.18.0 2020-10-05 [1] CRAN (R 4.0.3) #> modelr 0.1.8 2020-05-19 [1] CRAN (R 4.0.2) #> munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.2) #> parallelMap 1.5.0 2020-03-26 [1] CRAN (R 4.0.3) #> ParamHelpers 1.14 2020-03-24 [1] CRAN (R 4.0.3) #> pillar 1.4.7 2020-11-20 [1] CRAN (R 4.0.3) #> pkgbuild 1.1.0 2020-07-13 [1] CRAN (R 4.0.2) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.2) #> pkgload 1.1.0 2020-05-29 [1] CRAN (R 4.0.2) #> prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.2) #> processx 3.4.4 2020-09-03 [1] CRAN (R 4.0.3) #> ps 1.4.0 2020-10-07 [1] CRAN (R 4.0.3) #> purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.0.2) #> R6 2.5.0 2020-10-28 [1] CRAN (R 4.0.3) #> Rcpp 1.0.5 2020-07-06 [1] CRAN (R 4.0.2) #> readr * 1.4.0 2020-10-05 [1] CRAN (R 4.0.3) #> readxl 1.3.1 2019-03-13 [1] CRAN (R 4.0.2) #> remotes 2.2.0 2020-07-21 [1] CRAN (R 4.0.2) #> reprex 0.3.0 2019-05-16 [1] CRAN (R 4.0.3) #> rlang 0.4.8 2020-10-08 [1] CRAN (R 4.0.3) #> rmarkdown 2.5 2020-10-21 [1] CRAN (R 4.0.3) #> rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.0.3) #> rvest 0.3.6 2020-07-25 [1] CRAN (R 4.0.2) #> scales 1.1.1 2020-05-11 [1] CRAN (R 4.0.2) #> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.3) #> stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.3) #> stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.0.2) #> survival 3.2-7 2020-09-28 [2] CRAN (R 4.0.3) #> testthat 3.0.0 2020-10-31 [1] CRAN (R 4.0.3) #> tibble * 3.0.4 2020-10-12 [1] CRAN (R 4.0.3) #> tidyr * 1.1.2 2020-08-27 [1] CRAN (R 4.0.2) #> tidyselect 1.1.0 2020-05-11 [1] CRAN (R 4.0.2) #> tidyverse * 1.3.0 2019-11-21 [1] CRAN (R 4.0.3) #> usethis 1.6.3 2020-09-17 [1] CRAN (R 4.0.3) #> utf8 1.1.4 2018-05-24 [1] CRAN (R 4.0.2) #> vctrs 0.3.5 2020-11-17 [1] CRAN (R 4.0.3) #> withr 2.3.0 2020-09-22 [1] CRAN (R 4.0.3) #> xfun 0.19 2020-10-30 [1] CRAN (R 4.0.3) #> xml2 1.3.2 2020-04-23 [1] CRAN (R 4.0.2) #> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.2) #> #> [1] ../R/win-library/4.0 #> [2] ../R/R-4.0.3/library ```

Example using updated version (no warning)

library(ipfr)
library(tidyverse)

hh_seed <- tibble(
  geo_region = 1,
  id = c(1:8),
  hhsiz = c(1, 1, 1, 2, 2, 2, 2, 2),
  hhveh = c(0, 2, 1, 1, 1, 2, 1, 0)
)

hh_targets <- list()
hh_targets$hhsiz <- tibble(
  geo_region = 1,
  `1` = 35,
  `2` = 65
)
hh_targets$hhveh <- tibble(
  geo_region = 1,
  `0` = 100,
  `1` = 100,
  `2` = 100
)

result <- ipu(hh_seed, hh_targets, max_iterations = 30, verbose = TRUE)
#> Scaling target tables:  hhveh
#>  Finished iteration  2 . %RMSE =  9.044233 Finished iteration  3 . %RMSE =  0.4706742 Finished iteration  4 . %RMSE =  0.02385747 Finished iteration  5 . %RMSE =  0.001207629
#> 
#> IPU converged
#> All targets matched within the absolute_diff of 10
result
#> $weight_tbl
#> # A tibble: 8 x 7
#>   geo_region    id hhsiz hhveh weight avg_weight weight_factor
#>        <dbl> <int> <dbl> <dbl>  <dbl>      <dbl>         <dbl>
#> 1          1     1     1     0  14.2        12.5         1.14 
#> 2          1     2     1     2  14.2        12.5         1.14 
#> 3          1     3     1     1   6.61       12.5         0.529
#> 4          1     4     2     1   8.91       12.5         0.713
#> 5          1     5     2     1   8.91       12.5         0.713
#> 6          1     6     2     2  19.1        12.5         1.53 
#> 7          1     7     2     1   8.91       12.5         0.713
#> 8          1     8     2     0  19.1        12.5         1.53 
#> 
#> $weight_dist

#> 
#> $primary_comp
#> # A tibble: 5 x 6
#>   geography    category target result  diff pct_diff
#>   <chr>        <chr>     <dbl>  <dbl> <dbl>    <dbl>
#> 1 geo_region_1 hhsiz_1    35     35.0     0        0
#> 2 geo_region_1 hhsiz_2    65     65.0     0        0
#> 3 geo_region_1 hhveh_0    33.3   33.3     0        0
#> 4 geo_region_1 hhveh_1    33.3   33.3     0        0
#> 5 geo_region_1 hhveh_2    33.3   33.3     0        0
#> 
#> $converged
#> [1] TRUE

Created on 2020-11-30 by the reprex package (v0.3.0)

Session info ``` r devtools::session_info() #> - Session info --------------------------------------------------------------- #> setting value #> version R version 4.0.3 (2020-10-10) #> os Windows 10 x64 #> system x86_64, mingw32 #> ui RTerm #> language (EN) #> collate English_United States.1252 #> ctype English_United States.1252 #> tz America/New_York #> date 2020-11-30 #> #> - Packages ------------------------------------------------------------------- #> package * version date lib source #> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.0) #> backports 1.1.6 2020-04-05 [1] CRAN (R 4.0.0) #> BBmisc 1.11 2017-03-10 [1] CRAN (R 4.0.3) #> blob 1.2.1 2020-01-20 [1] CRAN (R 4.0.0) #> broom 0.7.1 2020-10-02 [1] CRAN (R 4.0.2) #> callr 3.4.3 2020-03-28 [1] CRAN (R 4.0.0) #> cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.0.0) #> checkmate 2.0.0 2020-02-06 [1] CRAN (R 4.0.2) #> cli 2.0.2 2020-02-28 [1] CRAN (R 4.0.0) #> colorspace 1.4-1 2019-03-18 [1] CRAN (R 4.0.0) #> crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.0) #> curl 4.3 2019-12-02 [1] CRAN (R 4.0.0) #> data.table 1.12.8 2019-12-09 [1] CRAN (R 4.0.0) #> DBI 1.1.0 2019-12-15 [1] CRAN (R 4.0.0) #> dbplyr 1.4.4 2020-05-27 [1] CRAN (R 4.0.3) #> desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.0) #> devtools 2.3.0 2020-04-10 [1] CRAN (R 4.0.0) #> digest 0.6.25 2020-02-23 [1] CRAN (R 4.0.0) #> dplyr * 1.0.2 2020-08-18 [1] CRAN (R 4.0.3) #> ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.2) #> evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.0) #> fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.0) #> farver 2.0.3 2020-01-16 [1] CRAN (R 4.0.0) #> fastmatch 1.1-0 2017-01-28 [1] CRAN (R 4.0.3) #> forcats * 0.5.0 2020-03-01 [1] CRAN (R 4.0.0) #> fs 1.4.1 2020-04-04 [1] CRAN (R 4.0.0) #> generics 0.0.2 2018-11-29 [1] CRAN (R 4.0.0) #> ggplot2 * 3.3.2 2020-06-19 [1] CRAN (R 4.0.3) #> glue 1.4.1 2020-05-13 [1] CRAN (R 4.0.2) #> gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.0) #> haven 2.3.1 2020-06-01 [1] CRAN (R 4.0.3) #> highr 0.8 2019-03-20 [1] CRAN (R 4.0.0) #> hms 0.5.3 2020-01-08 [1] CRAN (R 4.0.0) #> htmltools 0.4.0 2019-10-04 [1] CRAN (R 4.0.0) #> httr 1.4.2 2020-07-20 [1] CRAN (R 4.0.2) #> ipfr * 1.0.2 2020-11-20 [1] Github (szimmer/ipfr@c764fde) #> jsonlite 1.7.1 2020-09-07 [1] CRAN (R 4.0.3) #> knitr 1.28 2020-02-06 [1] CRAN (R 4.0.0) #> labeling 0.3 2014-08-23 [1] CRAN (R 4.0.0) #> lattice 0.20-41 2020-04-02 [2] CRAN (R 4.0.3) #> lifecycle 0.2.0 2020-03-06 [1] CRAN (R 4.0.0) #> lubridate 1.7.9 2020-06-08 [1] CRAN (R 4.0.3) #> magrittr 1.5 2014-11-22 [1] CRAN (R 4.0.0) #> Matrix 1.2-18 2019-11-27 [2] CRAN (R 4.0.3) #> memoise 1.1.0 2017-04-21 [1] CRAN (R 4.0.0) #> mime 0.9 2020-02-04 [1] CRAN (R 4.0.0) #> mlr 2.18.0 2020-10-05 [1] CRAN (R 4.0.3) #> modelr 0.1.8 2020-05-19 [1] CRAN (R 4.0.3) #> munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.0) #> parallelMap 1.5.0 2020-03-26 [1] CRAN (R 4.0.3) #> ParamHelpers 1.14 2020-03-24 [1] CRAN (R 4.0.3) #> pillar 1.4.6 2020-07-10 [1] CRAN (R 4.0.2) #> pkgbuild 1.0.6 2019-10-09 [1] CRAN (R 4.0.0) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.0) #> pkgload 1.0.2 2018-10-29 [1] CRAN (R 4.0.0) #> prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.0) #> processx 3.4.2 2020-02-09 [1] CRAN (R 4.0.0) #> ps 1.3.2 2020-02-13 [1] CRAN (R 4.0.0) #> purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.0.0) #> R6 2.4.1 2019-11-12 [1] CRAN (R 4.0.0) #> Rcpp 1.0.5 2020-07-06 [1] CRAN (R 4.0.2) #> readr * 1.4.0 2020-10-05 [1] CRAN (R 4.0.3) #> readxl 1.3.1 2019-03-13 [1] CRAN (R 4.0.0) #> remotes 2.1.1 2020-02-15 [1] CRAN (R 4.0.0) #> reprex 0.3.0 2019-05-16 [1] CRAN (R 4.0.0) #> rlang 0.4.8 2020-10-08 [1] CRAN (R 4.0.3) #> rmarkdown 2.3 2020-06-18 [1] CRAN (R 4.0.2) #> rprojroot 1.3-2 2018-01-03 [1] CRAN (R 4.0.0) #> rvest 0.3.6 2020-07-25 [1] CRAN (R 4.0.2) #> scales 1.1.0 2019-11-18 [1] CRAN (R 4.0.0) #> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.0) #> stringi 1.4.6 2020-02-17 [1] CRAN (R 4.0.0) #> stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.0.0) #> survival 3.2-7 2020-09-28 [2] CRAN (R 4.0.3) #> testthat 2.3.2 2020-03-02 [1] CRAN (R 4.0.0) #> tibble * 3.0.4 2020-10-12 [1] CRAN (R 4.0.3) #> tidyr * 1.1.2 2020-08-27 [1] CRAN (R 4.0.3) #> tidyselect 1.1.0 2020-05-11 [1] CRAN (R 4.0.2) #> tidyverse * 1.3.0 2019-11-21 [1] CRAN (R 4.0.2) #> usethis 1.6.1 2020-04-29 [1] CRAN (R 4.0.2) #> utf8 1.1.4 2018-05-24 [1] CRAN (R 4.0.0) #> vctrs 0.3.2 2020-07-15 [1] CRAN (R 4.0.2) #> withr 2.2.0 2020-04-20 [1] CRAN (R 4.0.0) #> xfun 0.13 2020-04-13 [1] CRAN (R 4.0.0) #> xml2 1.3.2 2020-04-23 [1] CRAN (R 4.0.0) #> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.0) #> #> [1] ../R/win-library/4.0 #> [2] ../R/R-4.0.3/library ```