GaussSuppression 1.2.0
CRAN release: 2025-09-25
- New checks for unused arguments in
...using ellipsis::check_dots_used(), so that misspelled or irrelevant arguments are not silently ignored.- Introduces new arguments in
GaussSuppressionFromData(), available through all wrappers:-
action_unused_dotscontrols how unused arguments are handled. -
allowed_unused_dotsspecifies argument names to ignore in the unused-argument check.
-
- Users can configure global defaults via options
GaussSuppression.action_unused_dotsandGaussSuppression.allowed_unused_dots. - Note: The default for
action_unused_dotsis"inform"as a cautious starting point. This may change to"warn"in a future release. - Thanks to Jonas Lindblad for issue #124.
- Introduces new arguments in
- New duplicate checking method to decide
preAggregateinSuppressSmallCounts().- Same method added to the other frequency table wrapper,
SuppressKDisclosure(). - Implemented by adding support for
NAinGaussSuppressionFromData()and by updating the specs to useNAas default.- When
preAggregate = NA, the function now decides automatically: aggregation is applied unlessfreqVaris present and the data contain no duplicated rows with respect to the relevant variables. - Previously, duplicate rows were not checked.
- When
- Same method added to the other frequency table wrapper,
- Extended experimental support for interval protection with additional parameters.
- In particular, by specifying
lpPackagetogether withprotectionIntervals = TRUEinSuppressDominantCells(), tables can now be protected according to the protection levels described in Handbook on Statistical Disclosure Control (2nd ed., Ch. 4.2.2, 2025). - A similar experimental extension is available in
SuppressSmallCounts(), where theprotectionIntervalsparameter can be used to include some interval requirements. - See
?IntervalLimitsand the parameter description oflpPackagein?GaussSuppressionFromDatafor details. - Addresses issue #131.
- In particular, by specifying
- New parameter
intervalSuppressiontoGaussSuppressionFromData()and its wrappers.- Controls whether interval requirements are only calculated and reported, or also used for suppression (if
lpPackageis specified).
- Controls whether interval requirements are only calculated and reported, or also used for suppression (if
- Bug fix implemented for interval calculations with lpSolve so that constraint matrices with empty rows do not produce an error.
GaussSuppression 1.1.5
CRAN release: 2025-08-25
- Major update to the functionality via
SuppressLinkedTables()andlinkedGauss:- New method
"super-consistent"is now thelinkedGaussdefault inSuppressLinkedTables(), providing stronger coordination across tables than"consistent". - Added parameter
collapseAwarefor stronger coordination across tables thanrecordAware. - Intervals are now supported, with the option to apply further suppression to meet interval width requirements.
- Existing parameters
lpPackage,rangePercent, andrangeMincan now be used with this functionality. - Added parameter
linkedIntervalsto determine how interval calculations are performed.
- Existing parameters
- New method
- A vignette, “Linked table suppression”, is now included.
- Improved documentation for the
aggregateNAparameter inGaussSuppressionFromData():
GaussSuppression 1.1.0
CRAN release: 2025-06-26
- Significant update: new functionality via
SuppressLinkedTables()andlinkedGaussfor consistent suppression of linked tables- Introduces alternatives to global protection, potentially reducing computational burden.
- Available via the new function
SuppressLinkedTables(), or alternatively by using the new parameterlinkedGaussinGaussSuppressionFromData()and its wrappers. - Also note the related new parameters to
GaussSuppressionFromData():recordAwareandlinkedTables.
- Introduces alternatives to global protection, potentially reducing computational burden.
- Improved support for named
maxNwith variable-specific values.- Enables setups with multiple primary functions using different
maxNvalues. - See the documentation for
GaussSuppressionFromData(),PrimaryDefault(), andNContributorsRule(). - Thanks to Jonas Lindblad for issue #120.
- Enables setups with multiple primary functions using different
GaussSuppression 1.0.0
CRAN release: 2025-04-24
- The package has been stable and in practical use for a long time. The release of version 1.0.0 is therefore appropriate.
- Interval examples are now included in the vignettes.
- Progress information during extra suppression to meet interval width requirements now counts down instead of up, making it easier to interpret.
- Updated to support the latest highs version (1.9.0-1) for interval computation.
- The warning about interval calculations being experimental has been removed.
GaussSuppression 0.9.6
CRAN release: 2025-03-12
- Misleading warnings in
SuppressionFromDecimals()are now prevented.- The update to version 0.9.5 could cause the warning
“Mismatch between aggregated frequencies and decimals aggregated to whole numbers”
to appear incorrectly with small datasets. This has now been fixed.
- The update to version 0.9.5 could cause the warning
- Preparation for a slight improvement to a singleton method in the next version of SSBtools (1.7.5).
- The method described as
elimination(4th character) in?SSBtools::NumSingletonwill be slightly improved. - Tests in the GaussSuppression package have been updated to accommodate this change.
- The method described as
- A hexagon sticker logo is now visible on the pkgdown website and the GitHub repository.
GaussSuppression 0.9.5
CRAN release: 2025-02-07
- New pkgdown website for the package
- This package now has a documentation site at https://statisticsnorway.github.io/ssb-gausssuppression/.
- Matrix are moved from Depends to Imports
- To follow best practices for R packages
- Utilizing updates in the SSBtools package (version 1.7.0).
- The new function
tables_by_formulas(), which is now reexported, is demonstrated in aSuppressSmallCounts()example and aSuppressDominantCells()example. - The new function
Extend0fromModelMatrixInput()is now used in data pre-processing. As a result,hierarchical_extend0is now a possible parameter, as illustrated in aSuppressSmallCounts()example.
- The new function
- Improvements to GaussSuppressDec() and SuppressionFromDecimals()
- GaussSuppressDec() now accepts wrappers as input, such as SuppressSmallCounts() and SuppressDominantCells().
- Added new parameter
use_freqVarto allow decimal numbers to be generated solely from 0s, improving stability. - All output variables from the underlying function are now included in the default output of GaussSuppressDec().
- FormulaSelection() now works correctly with output from GaussSuppressDec().
- SuppressionFromDecimals() has been updated accordingly. In particular, automation is now implemented to detect whether decimal numbers are generated from 0s or from frequencies.
GaussSuppression 0.9.2
CRAN release: 2024-12-09
- Added a check to ensure that at least one of
dimVar,hierarchies, orformulais specified.- This is a breaking change that may affect previous code.
- Previously, if all were unspecified,
dimVarwas automatically generated from the remaining columns. - While this behavior was correctly implemented, it often stemmed from user input errors and could lead to unexpected behavior or crashes.
- This change now requires explicit input, making the function more robust and reducing the risk of user errors.
-
SuppressDominantCells()and the underlying functionMagnitudeRule()have been improved:-
contributorVar(charVar) can now be combined withsWeightVar. - Improved handling of
protectZeros. See this parameter’s documentation in?MagnitudeRule. - New parameter
removeCodesFractionallows adjustment of the effect of theremoveCodesparameter. - New parameter
apply_abs_directlydetermines how negative values are treated in the rules:- When
apply_abs_directly = FALSE(default), absolute values are taken after summing contributions, as performed bymax_contribution()in the SSBtools package. - When
apply_abs_directly = TRUE, absolute values are computed directly on the input values, prior to any summation [beyondpreAggregate]. This corresponds to the old behavior of the function.
- When
- Enhanced output when
allDominance = TRUE:- Renaming: The variable previously called
primary.2:80((2,80) dominance)) is nowdominant2. - IDs associated with the largest contributions are now included.
- The number of contributors is also included.
- Additional outputs are available. See the documentation of the
allDominanceparameter.
- Renaming: The variable previously called
- The new functionality has been enabled by replacing
MaxContribution()with the improvedmax_contribution()from SSBtools.
-
- Improved support for
tibbleanddata.tableinput (parameterdata).- Input is now explicitly coerced to a data frame using
as.data.frame()where necessary to ensure consistent behavior. - When
preAggregateisTRUEandaggregatePackageis"data.table", the use ofas.data.frame()is skipped to avoid unnecessary back-and-forth conversion ofdata.tableobjects, preserving efficiency. - Applies to
GaussSuppressionFromData()and its wrappers.
- Input is now explicitly coerced to a data frame using
- The
SSBtoolsfunctionsFormulaSelection()and its identical wrapperformula_selection()are now re-exported.- These functions are useful for extracting smaller datasets from the output.
- With this change, using
library(SSBtools)is no longer necessary to access them.
- These functions are useful for extracting smaller datasets from the output.
- Note new hierarchy possibilities due to the new version of the SSBtools package (version 1.6.0).
-
Output from functions like
get_klass()in the klassR package orhier_create()in the sdcHierarchies package can now be used directly as input. Example of usage:a <- get_klass(classification = "24") b <- hier_create(root = "Total", nodes = LETTERS[1:5]) mydata <- data.frame(tree = sample(a$code[nchar(a$code) > 1], 200, replace = TRUE), letter = LETTERS[1:5]) SuppressSmallCounts(mydata, maxN = 3, hierarchies = list(tree = a, letter = b)) New possibilities for working with both formulas and hierarchies are now available through the
map_hierarchies_to_data()function.Improved functionality for combining formulas with the
Formula2ModelMatrix()parameteravoidHierarchical = TRUE, thanks to the newtotal_collapse()function which can be applied to output.
-
GaussSuppression 0.9.0
CRAN release: 2024-09-24
- The Gaussian elimination secondary suppression algorithm has now been documented in a “Privacy in Statistical Databases 2024” paper.
- The package description has been updated with this reference (Langsrud, 2024).
- Due to updates in the SSBtools package (version 1.5.4), it is now meaningful to include NA’s in the grouping variables.
- Note the parameter
NAomittoSSBtools::Formula2ModelMatrix():- When
TRUE, NAs in the grouping variables are omitted in output and not included as a separate category. - This parameter can be input to
GaussSuppressionFromData()and its wrappers.
- When
-
aggregateNAis new parameter toGaussSuppressionFromData():- Whether to include NAs in the grouping variables while preAggregate/extraAggregate.
- Needs to be
TRUE(default) to utilize the aboveNAomitparameter.
- Note the parameter
- Due to updates in the SSBtools package (version 1.5.4), where data.table is now listed under Suggests, some functionality can be speeded up.
- Set the new parameter
aggregatePackageto"data.table"to utilize this possibility.-
aggregatePackageis parameter toGaussSuppressionFromData()and its wrappers. - Also note the related new parameters
aggregateBaseOrderandrowGroupsPackage.
-
- Set the new parameter
GaussSuppression 0.8.8
CRAN release: 2024-06-28
- A bug related to the remove0 parameter is now fixed
- There was a bug related to the
remove0parameter inSuppressFewContributors/NContributorsRuleintroduced in version 0.8.0. When a singlenumVarwas used as input, theremove0functionality failed.
- There was a bug related to the
GaussSuppression 0.8.5
CRAN release: 2024-05-22
-
SuppressDominantCells()is now considered a common function for both the nk-dominance rule and the p-percent rule.- The
pPercentparameter is now exposed in theSuppressDominantCells()documentation.
- The
- The
nparameter inSuppressDominantCells()now defaults to1:length(k).- To simplify common use.
- A problem in experimental interval suppression is now fixed.
- It was a bug occurring in cases where a response value of zero was secondary suppressed.
- Improvements due to updates in the SSBtools package (version 1.5.2).
- Fix for a rare problem in
GaussSuppression(),- Could happen with parallel eliminations combined with integer overflow. Then warning message: longer object length is not a multiple of shorter object length
- Minor change to the singleton method
"anySum"inGaussSuppression()to align with best theory.- In practice, this rarely makes a difference.
- The previous behavior can be ensured by setting
singletonMethodto either"anySumOld"or"anySumNOTprimaryOld".
- Fix for a rare problem in
GaussSuppression 0.8.3
CRAN release: 2024-03-22
- Experimental functionality to meet interval width requirements has been incorporated
- If at least one of the two parameters below is specified, in addition to the
lpPackageparameter, further suppression will be performed to satisfy the interval width requirements.-
rangePercent: Required interval width expressed as a percentage -
rangeMin: Minimum required width of the interval
-
- If at least one of the two parameters below is specified, in addition to the
GaussSuppression 0.8.0
CRAN release: 2024-02-02
- Improved singleton methods for magnitude tables
- A new default setting,
singletonMethod = "numttHTT", has been introduced in the wrappersSuppressDominantCells()andSuppressFewContribitors(). This setting represents the method that offers the highest level of protection. However, it should be noted that with this setting, the computational load of the suppression algorithm may double, which could potentially lead to a doubling of the execution time as well. During these computations, “:::” will be displayed instead of “….”.- To prevent this doubling, set
singletonMethod = "numttHtT". - The behavior of version 0.7.0 can be restored by setting
singletonMethod = "numttH". - A simpler and faster method is achievable with
singletonMethod = "numttT". - As in previous versions, singleton handling can be disabled by setting
singletonMethod = "none".
- To prevent this doubling, set
- Additional information can be found by
?SSBtools::NumSingleton. - Some explanation is provided at the bottom of the magnitude vignette.
- This will later be documented in a more comprehensive manner (paper).
- A new default setting,
- Improved functionality of the
SuppressDominantCells()andSuppressFewContributors()wrappers.- Improved support for handling multiple numerical variables, introducing new parameters:
dominanceVarandcandidatesVar. - The
removeCodesparameter is now also available in theDominanceRule()andSuppressDominantCells()functions. - Support for multiple
contributorVar(charVar) in theSuppressFewContributors()andNContributorsRule()functions. - Now,
SuppressDominantCells()includes special functionality to prevent zero cells, which have been suppressed, from being revealable in cases where negative values cannot occur. See the parametersingletonZeros. - The update described below enables the specification of the
pPercentparameter directly throughSuppressDominantCells().
- Improved support for handling multiple numerical variables, introducing new parameters:
- The p% rule for magnitude tables has been implemented through the introduction of a new primary suppression function,
PPercentRule().- Technically,
PPercentRule()andDominanceRule()now serve as wrappers for the newly introduced. general functionMagnitudeRule().
- Technically,
-
AdditionalSuppression()generalized to take a wrappers as input. - New special functions for the avoidance of suppression
- Experimental functionality for interval calculations has been included
- Intervals can now be calculated using the new function
ComputeIntervals(). - When the
lpPackageparameter is specified inGaussSuppressionFromData()or in any of its wrappers, intervals for primary suppressed cells will be computed and included in the output.
- Intervals can now be calculated using the new function
GaussSuppression 0.7.0
CRAN release: 2023-06-07
- More vignettes are included.
- Better singleton handling for magnitude tables when using
SuppressDominantCells()andSuppressFewContributors().- Due to improvements in the SSBtools package (version 1.4.6).
- Due to new default
extraAggregate = TRUEin the specs,dominanceSpecandfewContributorsSpec.
- More default values are explicitly included in the in specs so that they are easier seen.
- See
PackageSpecs().
- See
GaussSuppression 0.6.0
CRAN release: 2023-03-31
- A vignette entitled “Defining Tables for GaussSuppression” is now included.
- Now, easy-to-use wrapper functions are included.
-
SuppressSmallCounts(),SuppressDominantCells(), andSuppressFewContributors(), along withSuppressKDisclosure()(which was available in the previous version).
-
- Built-in specs that contribute to a simpler interface have been adopted.
- See
PackageSpecs().
- See
- Sampling weights are now possible in the dominance rule.
- See
DominanceRule().
- See
- More advanced singleton handling that makes use of new functionality in the SSBtools package (version 1.4.4).
- Now
forcedandusafeare possible output columns.- Where unsafe means unsafe primary suppressions due to forced cells. That, is the unsafe primarily suppressed values can be re-calculated from the values of the cells forced to be not suppressed.
- See parameters
forcedInOutputandunsafeInOutputtoGaussSuppressionFromData().
GaussSuppression 0.5.0
CRAN release: 2022-08-30
- Now the original variable names, as specified by
freqVarandweightVar, are kept in the output.- In previous versions these names were standardized to
"freq"and"weight". - Code relying on previous behavior with other
freqVar/weightVarthan"freq"/"weight"needs to be updated. -
"freq"is still default when data is aggregated from microdata withoutfreqVarspecified (see new parameterfreqVarNew).
- In previous versions these names were standardized to
- Adaption needed after Matrix ver. 1.4-2 (not a user-visible change)
