A major update. Version 1.1.0 was about to be released, and then the Fed released the 2025 data. Version 1.2.0 focused on updating for the 2025 data and validating that update against Fed official statistics. Version updates since 1.0.10 added several features and fixes (listed below).
scf_download() and scf_load()scf_mi_survey object; older files get it from the datavacation and totspendnhvariance argument to choose the Fed's method (default) or Rubin's rules for standard errors; see ?scf_variancescf_ratio() for ratios of totalsscf_real() to convert raw x dollar variables to real dollarsconfint() for models, summary() for scf_prop_test and scf_ratio, and print() for scf_MIcombine resultsnobs, nobs_mean) to model fit statisticsscf_real() converts to the data's dollar year, scf_nominal() converts from it by default, and scf_load() warns when loaded years are in different dollar yearsscf_deflate() to scf_nominal(); scf_deflate() still works but is deprecatedscf_nominal() stops if a result is for a variable not in real dollars, unless force = TRUEscf_update() to .objectscf_glm(), scf_logit(), and scf_prop_test() report t and Rubin's degrees of freedom; z.value is now t.valuescf_quantreg() uses replicate-weight standard errors by default and no longer reports AICscf_regtable() chooses decimal places by size unless digits is given, and lists terms in model orderscf_load() instead of a warning from every functionscf_glm() reports each distinct warning once, with the implicates it came from... from scf_logit(); drop the rlang dependencyscf_mean(), scf_median(), scf_percentile(), and scf_freq() results have an n column (households per row) and warn about groups of 10 or fewer householdsscf_freq() results always have a group column ("All" without by), so the columns are the same with and without byscf_median() and scf_plot_cbar() take method = "stack", the Fed's method for its published tablesscf_glm() has no default family; give one, such as family = poisson(). Use scf_ols() or scf_logit() for linear or logistic regressionscf_ratio() results always have a group column ("All" without by)xlim, scf_plot_smooth() shows shares of all households instead of shares within the rangescf_xtab, scf_corr, scf_prop_test, and two-sample scf_ttestconfint() for scf_logit odds ratiossurvey::svyglm() ties each implicate fit to the full survey design, so save(), saveRDS(), and knitr's cache wrote out a copy of the design for every implicate of every model (about 5 GB for one scf_logit() on the 2022 data). scf_glm(), scf_logit(), and scf_ols() now drop that link. Estimates and other results are unchanged.scf_quantreg: R1, and stop on collinear termsscf_regtable: AIC, LaTeX and Markdown output, mixed model typesscf_corr: use survey weightsscf_pctile_sum: tied values at group boundariesscf_nominal: stack-method percentiles and dollar labelscf_freq when a group is missing from some implicatesscf_subset: local variables, empty subsets, object sizescf_implicates for scf_glm, scf_quantreg, scf_xtab, and scf_corrscf_MIcombine: missinfo with several coefficientspredict(), and summary() for two-sample scf_ttest and scf_logit with odds = FALSE~log(income + 1) in scf_corr, scf_ttest, and scf_prop_testscf_xtab labels containing a colonscf_load when the first year is not a survey yearscf_logit printed p-valuesscf_plot_hex and scf_plot_smooth; bar order in scf_plot_cbar, scf_plot_dbar, and scf_plot_dist; empty bins in scf_plot_hist; label mapsscf_glm and scf_percentilesurvey::SE, and add SE() for scf_mean, scf_median, scf_percentile, scf_ratio, and model resultsscf_mean(), scf_percentile(), scf_freq(), and scf_ratio() are reported once, with the implicates they came fromscf_update() ignores a trailing commascf_percentile(method = "stack") orders groups the same way as the default methodscf_plot_smooth() no longer prints a message about the smoothing formulascf_deflate()scf_pctile_sum()scf_plot_hist()scf_pctile_cut() reconceptualized as scf_pctile_sum() with integrated calls for statsscf_update_by_implicate() and updated cascading dependenciesscf_percentile() to handle SCF stack method for percentile estimationscf_deflate() to convert nominal dollar estimates to real terms. Applies CPI-U-RS deflation factors (taken from the Federal Reserve Board's SCF Bulletin SAS macro) to results from scf_mean(), scf_median(), scf_percentile(), and scf_ttest(). Both point estimates and standard errors are rescaled; t-statistics, degrees of freedom, and p-values are left unchanged.scf_ols(), scf_glm(), and scf_logit() where the full survey design object (data plus 999 replicate weights per implicate) was retained in each stored implicate-level model. The design is now released after coefficient and variance extraction, reducing result object size by roughly 5x.<<- in scf_regtable() error-handler closures; restructured tryCatch() calls to return values directly.scf_quantreg() for weighted quantile regression on multiply-imputed SCF data, with coefficient pooling across implicates.scf_pctile_cut() for creating percentile-based grouping variables, including both implicate-specific and Federal Reserve-style stacked percentile methods.scf_median(), scf_percentile(), and scf_mean()svyquantile() replicate-weight warnings for cleaner output."scf_model_result" (coef, vcov, predict, AIC, residuals, formula) and updated model output structure accordingly.scf_load() to expunge non-functioning deprecated artifactsscf_load() rebuildscf package."non-integer #successes in a binomial glm!" during logistic regression (see Stack Overflow).