leeper / margins

An R Port of Stata's 'margins' Command
https://cloud.r-project.org/package=margins
Other
260 stars 39 forks source link

poly pass through #175

Open leachandrew opened 2 years ago

leachandrew commented 2 years ago

Hello,

I see that you've flagged this issue in a related thread (https://github.com/leeper/margins/issues/79) but reposting here to highlight another situation in which stats::poly() leads to an error.

Using a regression workflow with broom and the tidyverse:

test_data <- data.frame(region = sample(letters[1:3], 1000, replace = TRUE),
                        x = sample(0:1, 1000, replace = TRUE), 
                        y = sample(1:100, 1000, replace = TRUE), 
                        z = sample(0:1, 1000, replace = TRUE)) %>% 
  arrange(region)

# nested by region works fine with a basic regression
by_region <- 
  test_data %>% nest(data=-region)%>%
  mutate(mod_rat= map(data, ~ lm(x ~ y + z,data=.x)))%>%
  mutate(marginals      = map2(mod_rat, data, ~margins_summary(.x, data = .y)))

#introduce the poly term it throws an error
by_region <- 
  test_data %>% nest(data=-region)%>%
  mutate(mod_rat= map(data, ~ lm(x ~ z + poly(y,2),data=.x)))%>%
  mutate(marginals = map2(mod_rat, data, ~margins_summary(.x, data = .y)))

# add the solution of stats::poly(... and the error is resolved and we can run either a targeted marginal effects or summary.
by_region <- 
  test_data %>% nest(data=-region)%>%
  mutate(mod_rat= map(data, ~ lm(x ~ z + stats::poly(y,2),data=.x)))%>%
  mutate(marginals = map2(mod_rat, data, ~margins_summary(.x, data = .y)),
  marginal_key = map2(mod_rat, data, ~margins_summary(.x, data = .y,variables=c("z"))))
## session info for your system

#sessionInfo()
#loaded via a namespace (and not attached):
 #[1] Rcpp_1.0.6        cellranger_1.1.0  pillar_1.6.1      compiler_4.1.0    dbplyr_2.1.1      tools_4.1.0       jsonlite_1.7.2   
 #[8] lubridate_1.7.10  lifecycle_1.0.0   gtable_0.3.0      pkgconfig_2.0.3   rlang_0.4.11      reprex_2.0.0      cli_2.5.0        
#[15] rstudioapi_0.13   DBI_1.1.1         haven_2.4.1       xml2_1.3.2        withr_2.4.2       httr_1.4.2        fs_1.5.0         
#[22] generics_0.1.0    vctrs_0.3.8       hms_1.1.0         grid_4.1.0        tidyselect_1.1.1  glue_1.4.2        data.table_1.14.0
#[29] R6_2.5.0          fansi_0.5.0       readxl_1.3.1      prediction_0.3.14 modelr_0.1.8      magrittr_2.0.1    backports_1.2.1  
#[36] scales_1.1.1      ellipsis_0.3.2    MASS_7.3-54       rvest_1.0.0       assertthat_0.2.1  colorspace_2.0-1  utf8_1.2.1       
#[43] stringi_1.6.1     munsell_0.5.0     crayon_1.4.1