Skip to contents

The counts rounded by PLSrounding Thereafter, based on the publishable rounded data, expected inner cell frequencies are generated by iterative proportional fitting using Mipf. To ensure that empty cells missing in input data are included in the fitting process, the data is first extended using Extend0.

Usage

PLSroundingFits(
  data,
  freqVar = NULL,
  roundBase = 3,
  hierarchies = NULL,
  formula = NULL,
  dimVar = NULL,
  preAggregate = is.null(freqVar),
  printInc = nrow(data) > 1000,
  xReturn = FALSE,
  extend0 = FALSE,
  extend0Fits = TRUE,
  limit = 1e-10,
  viaQR = FALSE,
  iter = 1000,
  eps = 0.01,
  tol = 1e-13,
  reduceBy0 = TRUE,
  reduceByColSums = TRUE,
  reduceByLeverage = FALSE,
  ...
)

Arguments

data

data frame (inner cells)

freqVar

Variable holding counts

roundBase

Rounding base

hierarchies

List of hierarchies

formula

Model formula

dimVar

Dimensional variables

preAggregate

Aggregation

printInc

Printing iteration information

xReturn

Dummy matrix in output when TRUE. To return crossTable as well, use xReturn = 2.

extend0

PLSrounding parameter. See below.

extend0Fits

When extend0Fits is set to TRUE (default), the data is automatically extended. Additionally, extend0Fits can be specified as a list, or set to "all" (see PLSrounding). Previously, this functionality was controlled by a parameter called extend0, but now extend0 is specific to the PLSrounding function. When both extend0 and extend0Fits are used simultaneously, extend0Fits adds an additional extension on top of the one provided by extend0 (see example).

limit

LSfitNonNeg parameter

viaQR

LSfitNonNeg parameter

iter

Mipf parameter

eps

Mipf parameter

tol

Mipf parameter

reduceBy0

Mipf parameter

reduceByColSums

Mipf parameter

reduceByLeverage

Mipf parameter

...

Further parameters to PLSrounding.

Value

Output from PLSrounding (class attribute "PLSrounded") with modified versions of inner and publish:

inner

Extended with more input data variables and with expected frequencies (ipFit).

publish

Extended with aggregated expected frequencies (ipFit).

Details

The nine first parameters is documented in more detail in PLSrounding. If iterative proportional fitting succeeds, the maximum difference between rounded counts and ipFit is less than input parameter eps.

Examples

z <- data.frame(geo  = c("Iceland", "Portugal", "Spain"), 
                eu = c("nonEU", "EU", "EU"),
                year = rep(c("2018","2019"), each = 3),
                freq = c(2,3,7,1,5,6), stringsAsFactors = FALSE)
z4 <- z[-c(1:2), ]

PLSroundingFits(z4, "freq", formula = ~eu * year + geo, extend0 = FALSE)[c("inner", "publish")]
#> -z(6*12->4*8):.  1 iterations: deviation 0
#> $inner
#>        geo    eu year freq original rounded difference    ipFit
#> 1    Spain    EU 2018    7        7       7          0 5.055556
#> 2  Iceland nonEU 2019    1        1       0         -1 0.000000
#> 3 Portugal    EU 2019    5        5       5          0 3.055556
#> 4    Spain    EU 2019    6        6       6          0 7.944444
#> 5  Iceland nonEU 2018    0        0       0          0 0.000000
#> 6 Portugal    EU 2018    0        0       0          0 1.944444
#> 
#> $publish
#>         geo  year original rounded difference ipFit
#> 1     Total Total       19      18         -1    18
#> 2        EU Total       18      18          0    18
#> 3     nonEU Total        1       0         -1     0
#> 4     Total  2018        7       7          0     7
#> 5     Total  2019       12      11         -1    11
#> 6   Iceland Total        1       0         -1     0
#> 7  Portugal Total        5       5          0     5
#> 8     Spain Total       13      13          0    13
#> 9        EU  2018        7       7          0     7
#> 10       EU  2019       11      11          0    11
#> 11    nonEU  2018        0       0          0     0
#> 12    nonEU  2019        1       0         -1     0
#> 
PLSroundingFits(z4, "freq", formula = ~eu * year + geo)[c("inner", "publish")]
#> -z(6*12->4*8):.  1 iterations: deviation 0
#> $inner
#>        geo    eu year freq original rounded difference    ipFit
#> 1    Spain    EU 2018    7        7       7          0 5.055556
#> 2  Iceland nonEU 2019    1        1       0         -1 0.000000
#> 3 Portugal    EU 2019    5        5       5          0 3.055556
#> 4    Spain    EU 2019    6        6       6          0 7.944444
#> 5  Iceland nonEU 2018    0        0       0          0 0.000000
#> 6 Portugal    EU 2018    0        0       0          0 1.944444
#> 
#> $publish
#>         geo  year original rounded difference ipFit
#> 1     Total Total       19      18         -1    18
#> 2        EU Total       18      18          0    18
#> 3     nonEU Total        1       0         -1     0
#> 4     Total  2018        7       7          0     7
#> 5     Total  2019       12      11         -1    11
#> 6   Iceland Total        1       0         -1     0
#> 7  Portugal Total        5       5          0     5
#> 8     Spain Total       13      13          0    13
#> 9        EU  2018        7       7          0     7
#> 10       EU  2019       11      11          0    11
#> 11    nonEU  2018        0       0          0     0
#> 12    nonEU  2019        1       0         -1     0
#> 

my_km2 <- SSBtools::SSBtoolsData("my_km2")

# Default automatic extension (extend0Fits = TRUE)
PLSroundingFits(my_km2, "freq", 
       formula = ~(Sex + Age) * Municipality * Square1000m + Square250m)[c("inner", "publish")]
#> -z(60*59->33*50):.  1 iterations: deviation 2.842171e-14
#> $inner
#>    Square1000m      Square250m Municipality         Age    Sex freq original
#> 1        my_km         500_000         Oslo    15_to_65 female    3        3
#> 2        my_km         500_000         Oslo    15_to_65   male    2        2
#> 3        my_km         500_000         Oslo    under_15   male    1        1
#> 4        my_km         750_250     Nittedal    15_to_65 female    2        2
#> 5        my_km         750_250     Nittedal    15_to_65   male    2        2
#> 6        my_km         750_250     Nittedal    under_15 female    1        1
#> 7        my_km         750_250     Nittedal    under_15   male    1        1
#> 8        my_km         750_500     Nittedal 65_and_over female    1        1
#> 9        my_km         750_500     Nittedal 65_and_over   male    1        1
#> 10       my_km         750_500         Oslo    15_to_65 female    1        1
#> 11  another_km another_500_000         Oslo    15_to_65 female   26       26
#> 12  another_km another_500_000         Oslo    15_to_65   male   21       21
#> 13  another_km another_500_000         Oslo    under_15 female   31       31
#> 14  another_km another_500_000         Oslo    under_15   male   34       34
#> 15  another_km another_750_250         Oslo    15_to_65 female    2        2
#> 16  another_km another_750_250         Oslo    15_to_65   male    1        1
#> 17  another_km another_750_250         Oslo 65_and_over female   10       10
#> 18  another_km another_750_250         Oslo 65_and_over   male   13       13
#> 19       my_km         500_000         Oslo    under_15 female    0        0
#> 20       my_km         500_000         Oslo 65_and_over female    0        0
#> 21       my_km         500_000         Oslo 65_and_over   male    0        0
#> 22       my_km         500_000     Nittedal    15_to_65 female    0        0
#> 23       my_km         500_000     Nittedal    15_to_65   male    0        0
#> 24       my_km         500_000     Nittedal    under_15 female    0        0
#> 25       my_km         500_000     Nittedal    under_15   male    0        0
#> 26       my_km         500_000     Nittedal 65_and_over female    0        0
#> 27       my_km         500_000     Nittedal 65_and_over   male    0        0
#> 28       my_km         750_250         Oslo    15_to_65 female    0        0
#> 29       my_km         750_250         Oslo    15_to_65   male    0        0
#> 30       my_km         750_250         Oslo    under_15 female    0        0
#> 31       my_km         750_250         Oslo    under_15   male    0        0
#> 32       my_km         750_250         Oslo 65_and_over female    0        0
#> 33       my_km         750_250         Oslo 65_and_over   male    0        0
#> 34       my_km         750_250     Nittedal 65_and_over female    0        0
#> 35       my_km         750_250     Nittedal 65_and_over   male    0        0
#> 36       my_km         750_500         Oslo    15_to_65   male    0        0
#> 37       my_km         750_500         Oslo    under_15 female    0        0
#> 38       my_km         750_500         Oslo    under_15   male    0        0
#> 39       my_km         750_500         Oslo 65_and_over female    0        0
#> 40       my_km         750_500         Oslo 65_and_over   male    0        0
#> 41       my_km         750_500     Nittedal    15_to_65 female    0        0
#> 42       my_km         750_500     Nittedal    15_to_65   male    0        0
#> 43       my_km         750_500     Nittedal    under_15 female    0        0
#> 44       my_km         750_500     Nittedal    under_15   male    0        0
#> 45  another_km another_500_000         Oslo 65_and_over female    0        0
#> 46  another_km another_500_000         Oslo 65_and_over   male    0        0
#> 47  another_km another_500_000     Nittedal    15_to_65 female    0        0
#> 48  another_km another_500_000     Nittedal    15_to_65   male    0        0
#> 49  another_km another_500_000     Nittedal    under_15 female    0        0
#> 50  another_km another_500_000     Nittedal    under_15   male    0        0
#> 51  another_km another_500_000     Nittedal 65_and_over female    0        0
#> 52  another_km another_500_000     Nittedal 65_and_over   male    0        0
#> 53  another_km another_750_250         Oslo    under_15 female    0        0
#> 54  another_km another_750_250         Oslo    under_15   male    0        0
#> 55  another_km another_750_250     Nittedal    15_to_65 female    0        0
#> 56  another_km another_750_250     Nittedal    15_to_65   male    0        0
#> 57  another_km another_750_250     Nittedal    under_15 female    0        0
#> 58  another_km another_750_250     Nittedal    under_15   male    0        0
#> 59  another_km another_750_250     Nittedal 65_and_over female    0        0
#> 60  another_km another_750_250     Nittedal 65_and_over   male    0        0
#>    rounded difference     ipFit
#> 1        3          0  1.125000
#> 2        0         -2  0.000000
#> 3        0         -1  0.000000
#> 4        2          0  0.875000
#> 5        2          0  0.875000
#> 6        0         -1  0.656250
#> 7        3          2  0.656250
#> 8        3          2  0.562500
#> 9        0         -1  0.562500
#> 10       3          2  2.250000
#> 11      26          0 20.289855
#> 12      21          0 20.289855
#> 13      31          0 26.376812
#> 14      34          0 26.376812
#> 15       2          0  4.710145
#> 16       1          0  4.710145
#> 17      10          0  2.166667
#> 18      13          0  2.166667
#> 19       0          0  0.000000
#> 20       0          0  0.000000
#> 21       0          0  0.000000
#> 22       0          0  0.375000
#> 23       0          0  0.375000
#> 24       0          0  0.281250
#> 25       0          0  0.281250
#> 26       0          0  0.281250
#> 27       0          0  0.281250
#> 28       0          0  2.625000
#> 29       0          0  0.000000
#> 30       0          0  0.000000
#> 31       0          0  0.000000
#> 32       0          0  0.000000
#> 33       0          0  0.000000
#> 34       0          0  0.656250
#> 35       0          0  0.656250
#> 36       0          0  0.000000
#> 37       0          0  0.000000
#> 38       0          0  0.000000
#> 39       0          0  0.000000
#> 40       0          0  0.000000
#> 41       0          0  0.750000
#> 42       0          0  0.750000
#> 43       0          0  0.562500
#> 44       0          0  0.562500
#> 45       0          0  9.333333
#> 46       0          0  9.333333
#> 47       0          0  0.000000
#> 48       0          0  0.000000
#> 49       0          0  0.000000
#> 50       0          0  0.000000
#> 51       0          0  0.000000
#> 52       0          0  0.000000
#> 53       0          0  6.123188
#> 54       0          0  6.123188
#> 55       0          0  0.000000
#> 56       0          0  0.000000
#> 57       0          0  0.000000
#> 58       0          0  0.000000
#> 59       0          0  0.000000
#> 60       0          0  0.000000
#> 
#> $publish
#>         Square250m Municipality         Age    Sex original rounded difference
#> 1            Total        Total       Total  Total      153     154          1
#> 2            Total        Total       Total female       77      80          3
#> 3            Total        Total       Total   male       76      74         -2
#> 4            Total        Total    15_to_65  Total       60      60          0
#> 5            Total        Total 65_and_over  Total       25      26          1
#> 6            Total        Total    under_15  Total       68      68          0
#> 7            Total     Nittedal       Total  Total        8      10          2
#> 8            Total         Oslo       Total  Total      145     144         -1
#> 9       another_km        Total       Total  Total      138     138          0
#> 10           my_km        Total       Total  Total       15      16          1
#> 11         500_000        Total       Total  Total        6       3         -3
#> 12         750_250        Total       Total  Total        6       7          1
#> 13         750_500        Total       Total  Total        3       6          3
#> 14 another_500_000        Total       Total  Total      112     112          0
#> 15 another_750_250        Total       Total  Total       26      26          0
#> 16           Total     Nittedal       Total female        4       5          1
#> 17           Total         Oslo       Total female       73      75          2
#> 18           Total     Nittedal       Total   male        4       5          1
#> 19           Total         Oslo       Total   male       72      69         -3
#> 20           Total     Nittedal    15_to_65  Total        4       4          0
#> 21           Total         Oslo    15_to_65  Total       56      56          0
#> 22           Total     Nittedal 65_and_over  Total        2       3          1
#> 23           Total         Oslo 65_and_over  Total       23      23          0
#> 24           Total     Nittedal    under_15  Total        2       3          1
#> 25           Total         Oslo    under_15  Total       66      65         -1
#> 26      another_km        Total       Total female       69      69          0
#> 27           my_km        Total       Total female        8      11          3
#> 28      another_km        Total       Total   male       69      69          0
#> 29           my_km        Total       Total   male        7       5         -2
#> 30      another_km        Total    15_to_65  Total       50      50          0
#> 31           my_km        Total    15_to_65  Total       10      10          0
#> 32      another_km        Total 65_and_over  Total       23      23          0
#> 33           my_km        Total 65_and_over  Total        2       3          1
#> 34      another_km        Total    under_15  Total       65      65          0
#> 35           my_km        Total    under_15  Total        3       3          0
#> 36      another_km     Nittedal       Total  Total        0       0          0
#> 37           my_km     Nittedal       Total  Total        8      10          2
#> 38      another_km         Oslo       Total  Total      138     138          0
#> 39           my_km         Oslo       Total  Total        7       6         -1
#> 40      another_km     Nittedal       Total female        0       0          0
#> 41           my_km     Nittedal       Total female        4       5          1
#> 42      another_km         Oslo       Total female       69      69          0
#> 43           my_km         Oslo       Total female        4       6          2
#> 44      another_km     Nittedal       Total   male        0       0          0
#> 45           my_km     Nittedal       Total   male        4       5          1
#> 46      another_km         Oslo       Total   male       69      69          0
#> 47           my_km         Oslo       Total   male        3       0         -3
#> 48      another_km     Nittedal    15_to_65  Total        0       0          0
#> 49           my_km     Nittedal    15_to_65  Total        4       4          0
#> 50      another_km         Oslo    15_to_65  Total       50      50          0
#> 51           my_km         Oslo    15_to_65  Total        6       6          0
#> 52      another_km     Nittedal 65_and_over  Total        0       0          0
#> 53           my_km     Nittedal 65_and_over  Total        2       3          1
#> 54      another_km         Oslo 65_and_over  Total       23      23          0
#> 55           my_km         Oslo 65_and_over  Total        0       0          0
#> 56      another_km     Nittedal    under_15  Total        0       0          0
#> 57           my_km     Nittedal    under_15  Total        2       3          1
#> 58      another_km         Oslo    under_15  Total       65      65          0
#> 59           my_km         Oslo    under_15  Total        1       0         -1
#>    ipFit
#> 1    154
#> 2     80
#> 3     74
#> 4     60
#> 5     26
#> 6     68
#> 7     10
#> 8    144
#> 9    138
#> 10    16
#> 11     3
#> 12     7
#> 13     6
#> 14   112
#> 15    26
#> 16     5
#> 17    75
#> 18     5
#> 19    69
#> 20     4
#> 21    56
#> 22     3
#> 23    23
#> 24     3
#> 25    65
#> 26    69
#> 27    11
#> 28    69
#> 29     5
#> 30    50
#> 31    10
#> 32    23
#> 33     3
#> 34    65
#> 35     3
#> 36     0
#> 37    10
#> 38   138
#> 39     6
#> 40     0
#> 41     5
#> 42    69
#> 43     6
#> 44     0
#> 45     5
#> 46    69
#> 47     0
#> 48     0
#> 49     4
#> 50    50
#> 51     6
#> 52     0
#> 53     3
#> 54    23
#> 55     0
#> 56     0
#> 57     3
#> 58    65
#> 59     0
#> 

# Manual specification to avoid Nittedal combined with another_km
PLSroundingFits(my_km2, "freq", formula = ~(Sex + Age) * Municipality * Square1000m + Square250m, 
       extend0Fits = list(c("Sex", "Age"), 
       c("Municipality", "Square1000m", "Square250m")))[c("inner", "publish")]
#> -zx-x-(36*53->24*46):.  1 iterations: deviation 1.421085e-14
#> $inner
#>    Square1000m      Square250m Municipality         Age    Sex freq original
#> 1        my_km         500_000         Oslo    15_to_65 female    3        3
#> 2        my_km         500_000         Oslo    15_to_65   male    2        2
#> 3        my_km         500_000         Oslo    under_15   male    1        1
#> 4        my_km         750_250     Nittedal    15_to_65 female    2        2
#> 5        my_km         750_250     Nittedal    15_to_65   male    2        2
#> 6        my_km         750_250     Nittedal    under_15 female    1        1
#> 7        my_km         750_250     Nittedal    under_15   male    1        1
#> 8        my_km         750_500     Nittedal 65_and_over female    1        1
#> 9        my_km         750_500     Nittedal 65_and_over   male    1        1
#> 10       my_km         750_500         Oslo    15_to_65 female    1        1
#> 11  another_km another_500_000         Oslo    15_to_65 female   26       26
#> 12  another_km another_500_000         Oslo    15_to_65   male   21       21
#> 13  another_km another_500_000         Oslo    under_15 female   31       31
#> 14  another_km another_500_000         Oslo    under_15   male   34       34
#> 15  another_km another_750_250         Oslo    15_to_65 female    2        2
#> 16  another_km another_750_250         Oslo    15_to_65   male    1        1
#> 17  another_km another_750_250         Oslo 65_and_over female   10       10
#> 18  another_km another_750_250         Oslo 65_and_over   male   13       13
#> 19       my_km         500_000         Oslo    under_15 female    0        0
#> 20       my_km         500_000         Oslo 65_and_over female    0        0
#> 21       my_km         500_000         Oslo 65_and_over   male    0        0
#> 22       my_km         750_250     Nittedal 65_and_over female    0        0
#> 23       my_km         750_250     Nittedal 65_and_over   male    0        0
#> 24       my_km         750_500     Nittedal    15_to_65 female    0        0
#> 25       my_km         750_500     Nittedal    15_to_65   male    0        0
#> 26       my_km         750_500     Nittedal    under_15   male    0        0
#> 27       my_km         750_500     Nittedal    under_15 female    0        0
#> 28       my_km         750_500         Oslo    15_to_65   male    0        0
#> 29       my_km         750_500         Oslo    under_15   male    0        0
#> 30       my_km         750_500         Oslo    under_15 female    0        0
#> 31       my_km         750_500         Oslo 65_and_over female    0        0
#> 32       my_km         750_500         Oslo 65_and_over   male    0        0
#> 33  another_km another_500_000         Oslo 65_and_over female    0        0
#> 34  another_km another_500_000         Oslo 65_and_over   male    0        0
#> 35  another_km another_750_250         Oslo    under_15   male    0        0
#> 36  another_km another_750_250         Oslo    under_15 female    0        0
#>    rounded difference     ipFit
#> 1        3          0  3.000000
#> 2        0         -2  0.000000
#> 3        0         -1  0.000000
#> 4        2          0  1.400000
#> 5        2          0  1.400000
#> 6        0         -1  1.050000
#> 7        3          2  1.050000
#> 8        3          2  0.450000
#> 9        0         -1  0.450000
#> 10       3          2  3.000000
#> 11      26          0 20.289855
#> 12      21          0 20.289855
#> 13      31          0 26.376812
#> 14      34          0 26.376812
#> 15       2          0  4.710145
#> 16       1          0  4.710145
#> 17      10          0  2.166667
#> 18      13          0  2.166667
#> 19       0          0  0.000000
#> 20       0          0  0.000000
#> 21       0          0  0.000000
#> 22       0          0  1.050000
#> 23       0          0  1.050000
#> 24       0          0  0.600000
#> 25       0          0  0.600000
#> 26       0          0  0.450000
#> 27       0          0  0.450000
#> 28       0          0  0.000000
#> 29       0          0  0.000000
#> 30       0          0  0.000000
#> 31       0          0  0.000000
#> 32       0          0  0.000000
#> 33       0          0  9.333333
#> 34       0          0  9.333333
#> 35       0          0  6.123188
#> 36       0          0  6.123188
#> 
#> $publish
#>         Square250m Municipality         Age    Sex original rounded difference
#> 1            Total        Total       Total  Total      153     154          1
#> 2            Total        Total       Total female       77      80          3
#> 3            Total        Total       Total   male       76      74         -2
#> 4            Total        Total    15_to_65  Total       60      60          0
#> 5            Total        Total 65_and_over  Total       25      26          1
#> 6            Total        Total    under_15  Total       68      68          0
#> 7            Total     Nittedal       Total  Total        8      10          2
#> 8            Total         Oslo       Total  Total      145     144         -1
#> 9       another_km        Total       Total  Total      138     138          0
#> 10           my_km        Total       Total  Total       15      16          1
#> 11         500_000        Total       Total  Total        6       3         -3
#> 12         750_250        Total       Total  Total        6       7          1
#> 13         750_500        Total       Total  Total        3       6          3
#> 14 another_500_000        Total       Total  Total      112     112          0
#> 15 another_750_250        Total       Total  Total       26      26          0
#> 16           Total     Nittedal       Total female        4       5          1
#> 17           Total         Oslo       Total female       73      75          2
#> 18           Total     Nittedal       Total   male        4       5          1
#> 19           Total         Oslo       Total   male       72      69         -3
#> 20           Total     Nittedal    15_to_65  Total        4       4          0
#> 21           Total         Oslo    15_to_65  Total       56      56          0
#> 22           Total     Nittedal 65_and_over  Total        2       3          1
#> 23           Total         Oslo 65_and_over  Total       23      23          0
#> 24           Total     Nittedal    under_15  Total        2       3          1
#> 25           Total         Oslo    under_15  Total       66      65         -1
#> 26      another_km        Total       Total female       69      69          0
#> 27           my_km        Total       Total female        8      11          3
#> 28      another_km        Total       Total   male       69      69          0
#> 29           my_km        Total       Total   male        7       5         -2
#> 30      another_km        Total    15_to_65  Total       50      50          0
#> 31           my_km        Total    15_to_65  Total       10      10          0
#> 32      another_km        Total 65_and_over  Total       23      23          0
#> 33           my_km        Total 65_and_over  Total        2       3          1
#> 34      another_km        Total    under_15  Total       65      65          0
#> 35           my_km        Total    under_15  Total        3       3          0
#> 36           my_km     Nittedal       Total  Total        8      10          2
#> 37      another_km         Oslo       Total  Total      138     138          0
#> 38           my_km         Oslo       Total  Total        7       6         -1
#> 39           my_km     Nittedal       Total female        4       5          1
#> 40      another_km         Oslo       Total female       69      69          0
#> 41           my_km         Oslo       Total female        4       6          2
#> 42           my_km     Nittedal       Total   male        4       5          1
#> 43      another_km         Oslo       Total   male       69      69          0
#> 44           my_km         Oslo       Total   male        3       0         -3
#> 45           my_km     Nittedal    15_to_65  Total        4       4          0
#> 46      another_km         Oslo    15_to_65  Total       50      50          0
#> 47           my_km         Oslo    15_to_65  Total        6       6          0
#> 48           my_km     Nittedal 65_and_over  Total        2       3          1
#> 49      another_km         Oslo 65_and_over  Total       23      23          0
#> 50           my_km         Oslo 65_and_over  Total        0       0          0
#> 51           my_km     Nittedal    under_15  Total        2       3          1
#> 52      another_km         Oslo    under_15  Total       65      65          0
#> 53           my_km         Oslo    under_15  Total        1       0         -1
#>    ipFit
#> 1    154
#> 2     80
#> 3     74
#> 4     60
#> 5     26
#> 6     68
#> 7     10
#> 8    144
#> 9    138
#> 10    16
#> 11     3
#> 12     7
#> 13     6
#> 14   112
#> 15    26
#> 16     5
#> 17    75
#> 18     5
#> 19    69
#> 20     4
#> 21    56
#> 22     3
#> 23    23
#> 24     3
#> 25    65
#> 26    69
#> 27    11
#> 28    69
#> 29     5
#> 30    50
#> 31    10
#> 32    23
#> 33     3
#> 34    65
#> 35     3
#> 36    10
#> 37   138
#> 38     6
#> 39     5
#> 40    69
#> 41     6
#> 42     5
#> 43    69
#> 44     0
#> 45     4
#> 46    50
#> 47     6
#> 48     3
#> 49    23
#> 50     0
#> 51     3
#> 52    65
#> 53     0
#> 
       
# Example with both extend0 (specified) and extend0Fits (default is TRUE)
PLSroundingFits(my_km2, "freq", formula = ~(Sex + Age) * Municipality * Square1000m + Square250m, 
       printInc = TRUE, zeroCandidates = TRUE, roundBase = 5, extend0 = list(c("Sex", "Age"), 
       c("Municipality", "Square1000m", "Square250m")))[c("inner", "publish")]        
#> [extend0 18*6->36*6]
#> [extend0Fits 36*6->60*6]
#> [-**...:=]
#> -z(60*59->27*47):.  1 iterations: deviation 1.421085e-14
#> $inner
#>       Sex         Age Municipality Square1000m      Square250m freq original
#> 1  female    15_to_65         Oslo       my_km         500_000    3        3
#> 2    male    15_to_65         Oslo       my_km         500_000    2        2
#> 3    male    under_15         Oslo       my_km         500_000    1        1
#> 4  female    15_to_65     Nittedal       my_km         750_250    2        2
#> 5    male    15_to_65     Nittedal       my_km         750_250    2        2
#> 6  female    under_15     Nittedal       my_km         750_250    1        1
#> 7    male    under_15     Nittedal       my_km         750_250    1        1
#> 8  female 65_and_over     Nittedal       my_km         750_500    1        1
#> 9    male 65_and_over     Nittedal       my_km         750_500    1        1
#> 10 female    15_to_65         Oslo       my_km         750_500    1        1
#> 11 female    15_to_65         Oslo  another_km another_500_000   26       26
#> 12   male    15_to_65         Oslo  another_km another_500_000   21       21
#> 13 female    under_15         Oslo  another_km another_500_000   31       31
#> 14   male    under_15         Oslo  another_km another_500_000   34       34
#> 15 female    15_to_65         Oslo  another_km another_750_250    2        2
#> 16   male    15_to_65         Oslo  another_km another_750_250    1        1
#> 17 female 65_and_over         Oslo  another_km another_750_250   10       10
#> 18   male 65_and_over         Oslo  another_km another_750_250   13       13
#> 19 female    under_15         Oslo       my_km         500_000    0        0
#> 20 female 65_and_over         Oslo       my_km         500_000    0        0
#> 21   male 65_and_over         Oslo       my_km         500_000    0        0
#> 22 female 65_and_over     Nittedal       my_km         750_250    0        0
#> 23   male 65_and_over     Nittedal       my_km         750_250    0        0
#> 24 female    15_to_65     Nittedal       my_km         750_500    0        0
#> 25   male    15_to_65     Nittedal       my_km         750_500    0        0
#> 26   male    under_15     Nittedal       my_km         750_500    0        0
#> 27 female    under_15     Nittedal       my_km         750_500    0        0
#> 28   male    15_to_65         Oslo       my_km         750_500    0        0
#> 29   male    under_15         Oslo       my_km         750_500    0        0
#> 30 female    under_15         Oslo       my_km         750_500    0        0
#> 31 female 65_and_over         Oslo       my_km         750_500    0        0
#> 32   male 65_and_over         Oslo       my_km         750_500    0        0
#> 33 female 65_and_over         Oslo  another_km another_500_000    0        0
#> 34   male 65_and_over         Oslo  another_km another_500_000    0        0
#> 35   male    under_15         Oslo  another_km another_750_250    0        0
#> 36 female    under_15         Oslo  another_km another_750_250    0        0
#> 37 female    15_to_65     Nittedal       my_km         500_000    0        0
#> 38   male    15_to_65     Nittedal       my_km         500_000    0        0
#> 39 female    under_15     Nittedal       my_km         500_000    0        0
#> 40   male    under_15     Nittedal       my_km         500_000    0        0
#> 41 female 65_and_over     Nittedal       my_km         500_000    0        0
#> 42   male 65_and_over     Nittedal       my_km         500_000    0        0
#> 43 female    15_to_65         Oslo       my_km         750_250    0        0
#> 44   male    15_to_65         Oslo       my_km         750_250    0        0
#> 45 female    under_15         Oslo       my_km         750_250    0        0
#> 46   male    under_15         Oslo       my_km         750_250    0        0
#> 47 female 65_and_over         Oslo       my_km         750_250    0        0
#> 48   male 65_and_over         Oslo       my_km         750_250    0        0
#> 49 female    15_to_65     Nittedal  another_km another_500_000    0        0
#> 50   male    15_to_65     Nittedal  another_km another_500_000    0        0
#> 51 female    under_15     Nittedal  another_km another_500_000    0        0
#> 52   male    under_15     Nittedal  another_km another_500_000    0        0
#> 53 female 65_and_over     Nittedal  another_km another_500_000    0        0
#> 54   male 65_and_over     Nittedal  another_km another_500_000    0        0
#> 55 female    15_to_65     Nittedal  another_km another_750_250    0        0
#> 56   male    15_to_65     Nittedal  another_km another_750_250    0        0
#> 57 female    under_15     Nittedal  another_km another_750_250    0        0
#> 58   male    under_15     Nittedal  another_km another_750_250    0        0
#> 59 female 65_and_over     Nittedal  another_km another_750_250    0        0
#> 60   male 65_and_over     Nittedal  another_km another_750_250    0        0
#>    rounded difference      ipFit
#> 1        5          2  1.6666667
#> 2        0         -2  0.0000000
#> 3        0         -1  0.0000000
#> 4        0         -2  0.8333333
#> 5        5          3  0.8333333
#> 6        0         -1  0.8333333
#> 7        0         -1  0.8333333
#> 8        0         -1  0.0000000
#> 9        0         -1  0.0000000
#> 10       0         -1  1.6666667
#> 11      26          0 20.2898551
#> 12      21          0 20.2898551
#> 13      31          0 26.3768116
#> 14      34          0 26.3768116
#> 15       2          0  4.7101449
#> 16       1          0  4.7101449
#> 17      10          0  2.1666667
#> 18      13          0  2.1666667
#> 19       0          0  0.0000000
#> 20       0          0  0.0000000
#> 21       0          0  0.0000000
#> 22       0          0  0.0000000
#> 23       0          0  0.0000000
#> 24       0          0  0.8333333
#> 25       0          0  0.8333333
#> 26       0          0  0.8333333
#> 27       5          5  0.8333333
#> 28       0          0  0.0000000
#> 29       0          0  0.0000000
#> 30       0          0  0.0000000
#> 31       0          0  0.0000000
#> 32       0          0  0.0000000
#> 33       0          0  9.3333333
#> 34       0          0  9.3333333
#> 35       0          0  6.1231884
#> 36       0          0  6.1231884
#> 37       0          0  0.8333333
#> 38       0          0  0.8333333
#> 39       0          0  0.8333333
#> 40       0          0  0.8333333
#> 41       0          0  0.0000000
#> 42       0          0  0.0000000
#> 43       0          0  1.6666667
#> 44       0          0  0.0000000
#> 45       0          0  0.0000000
#> 46       0          0  0.0000000
#> 47       0          0  0.0000000
#> 48       0          0  0.0000000
#> 49       0          0  0.0000000
#> 50       0          0  0.0000000
#> 51       0          0  0.0000000
#> 52       0          0  0.0000000
#> 53       0          0  0.0000000
#> 54       0          0  0.0000000
#> 55       0          0  0.0000000
#> 56       0          0  0.0000000
#> 57       0          0  0.0000000
#> 58       0          0  0.0000000
#> 59       0          0  0.0000000
#> 60       0          0  0.0000000
#> 
#> $publish
#>       Sex         Age Municipality      Square250m original rounded difference
#> 1   Total       Total        Total           Total      153     153          0
#> 2  female       Total        Total           Total       77      79          2
#> 3    male       Total        Total           Total       76      74         -2
#> 4   Total    15_to_65        Total           Total       60      60          0
#> 5   Total 65_and_over        Total           Total       25      23         -2
#> 6   Total    under_15        Total           Total       68      70          2
#> 7   Total       Total     Nittedal           Total        8      10          2
#> 8   Total       Total         Oslo           Total      145     143         -2
#> 9   Total       Total        Total      another_km      138     138          0
#> 10  Total       Total        Total           my_km       15      15          0
#> 11  Total       Total        Total         500_000        6       5         -1
#> 12  Total       Total        Total         750_250        6       5         -1
#> 13  Total       Total        Total         750_500        3       5          2
#> 14  Total       Total        Total another_500_000      112     112          0
#> 15  Total       Total        Total another_750_250       26      26          0
#> 16 female       Total     Nittedal           Total        4       5          1
#> 17 female       Total         Oslo           Total       73      74          1
#> 18   male       Total     Nittedal           Total        4       5          1
#> 19   male       Total         Oslo           Total       72      69         -3
#> 20  Total    15_to_65     Nittedal           Total        4       5          1
#> 21  Total    15_to_65         Oslo           Total       56      55         -1
#> 22  Total 65_and_over     Nittedal           Total        2       0         -2
#> 23  Total 65_and_over         Oslo           Total       23      23          0
#> 24  Total    under_15     Nittedal           Total        2       5          3
#> 25  Total    under_15         Oslo           Total       66      65         -1
#> 26 female       Total        Total      another_km       69      69          0
#> 27 female       Total        Total           my_km        8      10          2
#> 28   male       Total        Total      another_km       69      69          0
#> 29   male       Total        Total           my_km        7       5         -2
#> 30  Total    15_to_65        Total      another_km       50      50          0
#> 31  Total    15_to_65        Total           my_km       10      10          0
#> 32  Total 65_and_over        Total      another_km       23      23          0
#> 33  Total 65_and_over        Total           my_km        2       0         -2
#> 34  Total    under_15        Total      another_km       65      65          0
#> 35  Total    under_15        Total           my_km        3       5          2
#> 36  Total       Total     Nittedal      another_km        0       0          0
#> 37  Total       Total     Nittedal           my_km        8      10          2
#> 38  Total       Total         Oslo      another_km      138     138          0
#> 39  Total       Total         Oslo           my_km        7       5         -2
#> 40 female       Total     Nittedal      another_km        0       0          0
#> 41 female       Total     Nittedal           my_km        4       5          1
#> 42 female       Total         Oslo      another_km       69      69          0
#> 43 female       Total         Oslo           my_km        4       5          1
#> 44   male       Total     Nittedal      another_km        0       0          0
#> 45   male       Total     Nittedal           my_km        4       5          1
#> 46   male       Total         Oslo      another_km       69      69          0
#> 47   male       Total         Oslo           my_km        3       0         -3
#> 48  Total    15_to_65     Nittedal      another_km        0       0          0
#> 49  Total    15_to_65     Nittedal           my_km        4       5          1
#> 50  Total    15_to_65         Oslo      another_km       50      50          0
#> 51  Total    15_to_65         Oslo           my_km        6       5         -1
#> 52  Total 65_and_over     Nittedal      another_km        0       0          0
#> 53  Total 65_and_over     Nittedal           my_km        2       0         -2
#> 54  Total 65_and_over         Oslo      another_km       23      23          0
#> 55  Total 65_and_over         Oslo           my_km        0       0          0
#> 56  Total    under_15     Nittedal      another_km        0       0          0
#> 57  Total    under_15     Nittedal           my_km        2       5          3
#> 58  Total    under_15         Oslo      another_km       65      65          0
#> 59  Total    under_15         Oslo           my_km        1       0         -1
#>    ipFit
#> 1    153
#> 2     79
#> 3     74
#> 4     60
#> 5     23
#> 6     70
#> 7     10
#> 8    143
#> 9    138
#> 10    15
#> 11     5
#> 12     5
#> 13     5
#> 14   112
#> 15    26
#> 16     5
#> 17    74
#> 18     5
#> 19    69
#> 20     5
#> 21    55
#> 22     0
#> 23    23
#> 24     5
#> 25    65
#> 26    69
#> 27    10
#> 28    69
#> 29     5
#> 30    50
#> 31    10
#> 32    23
#> 33     0
#> 34    65
#> 35     5
#> 36     0
#> 37    10
#> 38   138
#> 39     5
#> 40     0
#> 41     5
#> 42    69
#> 43     5
#> 44     0
#> 45     5
#> 46    69
#> 47     0
#> 48     0
#> 49     5
#> 50    50
#> 51     5
#> 52     0
#> 53     0
#> 54    23
#> 55     0
#> 56     0
#> 57     5
#> 58    65
#> 59     0
#>