Skip to contents

surveycore 0.6.2

Bug fixes

  • Moved dplyr from Suggests to Imports (used unguarded in metadata functions).
  • Fixed broken vignette("estimation") cross-reference in creating-survey-objects vignette.
  • Fixed non-canonical CRAN URLs in surveycore-vs-survey vignette.

Documentation

  • Updated README to reflect current API: as_survey_replicate() (not as_survey_rep()), added get_diffs(), survey_glm(), and survey_nonprob.
  • Added @examples to 12 exported functions and @return to survey_base for CRAN compliance.

surveycore 0.6.1

Bug fixes

  • survey_nonprob validator now accepts zero weights when at least one positive weight exists, unblocking the surveywts adjust_nonresponse() workflow. Previously, any zero weight triggered an error. Negative weights are still rejected.

surveycore 0.6.0

Breaking changes

  • survey_srs class and as_survey_srs() constructor have been removed. SRS designs are now created via as_survey() with no ids or strata — this produces a survey_taylor with no cluster/strata structure. All estimates are numerically identical.

New features

  • get_diffs() estimates treatment effects (differences from a reference group) via survey-weighted regression. Supports bivariate and multivariate models, Gaussian and non-Gaussian families, and optional subgroup analysis. Two estimation paths: direct coefficients for simple models, and marginaleffects::avg_slopes() / avg_predictions() for models with covariates or non-Gaussian AMEs. Returns a survey_diffs tibble with optional mean, pct_change, n_weighted columns, significance stars, and p-value adjustment. marginaleffects moved from Suggests to Imports.

  • as_survey() now supports multi-column FPC for multi-stage designs (e.g., fpc = c(fpc_stage1, fpc_stage2)). Each FPC column corresponds to one ID stage. Per-stage FPC is validated for NAs, non-positive values, and within-cluster constancy.

  • print() for survey_taylor now displays per-stage FPC bullets for multi-stage designs (e.g., FPC (stage 1): fpc, FPC (stage 2): fpc2).

Bug fixes

  • SRS variance estimation now uses Taylor (HT) linearization via .build_cluster_matrices(), correct for any weight structure. Previously used unweighted sample variance which was incorrect for non-proportional weights.

  • survey_glm() now correctly indexes weights when na.action = na.omit drops non-contiguous rows.

  • get_freqs() now routes survey_nonprob designs through the Horvitz-Thompson variance path, consistent with the other five analysis functions.

  • as_survey_twophase() now accepts survey_replicate and SRS survey_taylor objects as the phase-1 design (previously restricted to stratified/clustered survey_taylor only).

  • as_survey() SRS fallback downgraded from warning to message.

Internal infrastructure

  • .build_cluster_matrices() extracts multi-stage cluster, strata, and FPC matrix construction into a shared helper, used across the Taylor variance engine, analysis cell estimators, and GLM sandwich variance.

surveycore 0.5.0

Breaking changes

  • as_survey_replicate() replaces as_survey_repweights(). The constructor name now matches the underlying survey_replicate class.

  • survey_nonprob and as_survey_nonprob() replace survey_calibrated and as_survey_calibrated(). “Calibrated” implies a post-processing step on a probability sample; nonprob accurately reflects the design type.

  • survey_srs and as_survey_srs() have been removed. SRS designs are now created via as_survey() with no ids or strata — this produces a survey_taylor with no cluster/strata structure. All estimates are numerically identical. Print output now says “Taylor series linearization” instead of “simple random sample”.

  • Single-row data frames are now rejected at construction time (previously a warning). This matches survey::svydesign() behavior.

  • The positional setter form set_var_label(svy, age, "label") has been removed. Use the named form set_var_label(svy, age = "label") instead.

  • extract_var_label(), extract_question_preface(), and extract_var_note() now return a named character vector. extract_var_label(svy, age) now returns c(age = "Age in years") rather than "Age in years".

  • extract_val_labels() now returns a named list. extract_val_labels(svy, sex) now returns list(sex = c(Male = 1L, Female = 2L)) rather than c(Male = 1L, Female = 2L).

  • set_variable_labels(), set_value_labels(), set_question_prefaces(), and set_variable_notes() have been removed. Use set_var_label(), set_val_labels(), set_question_preface(), and set_var_note() respectively — all four now accept multiple variables via named ....

New features

Enhancements

  • All setter functions now support three call conventions: named ... (e.g., set_var_label(svy, age = "Age in years")), a single named vector/list in ..., or explicit variable = / content-argument pairs. All setters also now work on plain data.frames.

  • All extractor functions accept multiple variables via ..., support three output formats ("named_vector", "list", "data_frame"), and accept a fill argument to include variables with no metadata in the output.

surveycore 0.4.0

New features

Bug fixes

  • as_survey_twophase() variance estimation (method = "approx" and "full") now uses the correct PSU-level Phase 2 stratum sampling fraction instead of a row-level fraction, resolving an approximately 2× variance underestimation.

surveycore 0.3.3

New features

  • print() methods for all four survey design classes (survey_taylor, survey_replicate, survey_twophase, survey_nonprob) now display a Domain: <n> of <N> rows line when surveytidy::filter() has been applied. The line appears after the sample size line and before the Groups: line. For two-phase designs, domain counts reflect Phase 2 rows only.

surveycore 0.3.0

New features

  • names() now works on survey design objects, returning the column names of the underlying data frame. This enables IDE column-name autocomplete in RStudio and Positron when piping into analysis functions (e.g., design |> get_means().

surveycore 0.2.0

New features

  • get_freqs() computes weighted frequency tables for categorical survey variables across all five design types, with domain estimation, value-label support, and AAPOR small-cell warnings.

  • get_means() returns survey-weighted means with design-correct standard errors for all five design types, including grouped and domain estimation.

  • get_totals() returns survey-weighted population totals (and population size when called without x) for all five design types.

  • get_corr() computes survey-weighted Pearson correlation using the delta-method variance approach, with optional group parameter for per-group correlations and Fisher Z confidence intervals.

  • get_quantiles() estimates survey-weighted quantiles using the Woodruff

    1. linearization method; supports multiple probs in a single call and five CI interval methods.
  • get_ratios() estimates survey-weighted ratios (numerator total / denominator total) with design-correct SEs via the delta method (Taylor, SRS, calibrated, two-phase) or direct per-replicate computation (replicate designs).

  • All six analysis functions gain a decimals argument to round numeric output columns to a fixed number of decimal places.

  • na.rm = FALSE now includes rows where a grouping variable is NA as a separate group row in all six analysis functions’ output.

  • infer_question_prefaces() auto-detects shared battery prefaces from variable labels using separator-based and longest-common-prefix detection.

  • survey_weighting_history() returns the weighting history stored in a survey design object’s metadata; as_survey(), as_survey_replicate(), and as_survey_nonprob() now promote "weighting_history" attributes from the input data frame automatically.

  • Two-phase variance estimation (as_survey_twophase()) is now fully supported in get_means() and get_totals(), using the "full", "approx", and "simple" methods vendored from the survey package.

Bug fixes

  • get_freqs() no longer crashes when the group variable contains NA values.

  • get_freqs() now outputs pct as a proportion (0–1) rather than a percentage (0–100); se and se_srs are on the same scale.

surveycore 0.1.0

New features

Internal infrastructure

  • S7 class hierarchy: abstract survey_basesurvey_taylor, survey_replicate, survey_twophase; survey_metadata for label storage.

  • Three-layer validation: S7 structural validators, Layer 2 input validators, Layer 3 constructor validators; all errors use typed class= for programmatic handling.

  • Variance estimation vendored from the survey package (Thomas Lumley, GPL-2/GPL-3) — see VENDORED.md for full attribution.