Small count rounding with post-processing to expected frequencies
Source:R/PLSroundingFits.R
PLSroundingFits.Rd
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, usexReturn = 2
.- extend0
PLSrounding
parameter. See below.- extend0Fits
When
extend0Fits
is set toTRUE
(default), the data is automatically extended. Additionally,extend0Fits
can be specified as a list, or set to"all"
(seePLSrounding
). Previously, this functionality was controlled by a parameter calledextend0
, but nowextend0
is specific to thePLSrounding
function. When bothextend0
andextend0Fits
are used simultaneously,extend0Fits
adds an additional extension on top of the one provided byextend0
(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
#>